From 04127ff0cbbb3c67d3d75dc01cd306ddb690ef5b Mon Sep 17 00:00:00 2001 From: Michael Papadopoulos Date: Tue, 9 Jul 2024 14:03:31 -0400 Subject: [PATCH 1/2] [Developer:Documentation] Update README.md for Github releasing (#671) --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bbca47c1..6d6e888c 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ To report issues for pdf-annotate.js, please file them under the [Submitty/Submi ## Installation ```bash -npm install @submitty/pdf-annotate.js +npm install Submitty/pdf-annotate.js ``` ## Example @@ -73,3 +73,15 @@ $ npm test # lint the code $ npm run lint ``` + +## Building +**Do not** commit your built files when contributing. +If on Windows, change the `build` script in `package.json` to `webpack && SET MINIFY=1&webpack`. +```bash +# switch to node v14 or earlier +$ nvm use 14 + +# build the dist files +$ npm run build +``` + From 26c599bc37890064baa8027817ca916200d7d615 Mon Sep 17 00:00:00 2001 From: Piyush Bhatt <2023kuec2027@iiitkota.ac.in> Date: Fri, 12 Jul 2024 02:01:19 +0530 Subject: [PATCH 2/2] updated webpack and other required dependencies and successfully removed istanbul-instrument-loader --- dist/pdf-annotate.js | 2 +- dist/pdf-annotate.js.map | 2 +- dist/pdf-annotate.min.js | 2 +- dist/pdf-annotate.min.js.map | 2 +- package-lock.json | 14206 +++++++++++++++++---------------- package.json | 19 +- 6 files changed, 7191 insertions(+), 7042 deletions(-) diff --git a/dist/pdf-annotate.js b/dist/pdf-annotate.js index ec294869..757d0399 100644 --- a/dist/pdf-annotate.js +++ b/dist/pdf-annotate.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PDFAnnotate=e():t.PDFAnnotate=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e,n){"use strict";var r,o="object"==typeof Reflect?Reflect:null,i=o&&"function"==typeof o.apply?o.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};r=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var a=Number.isNaN||function(t){return t!=t};function u(){u.init.call(this)}t.exports=u,t.exports.once=function(t,e){return new Promise((function(n,r){function o(n){t.removeListener(e,i),r(n)}function i(){"function"==typeof t.removeListener&&t.removeListener("error",o),n([].slice.call(arguments))}h(t,e,i,{once:!0}),"error"!==e&&function(t,e,n){"function"==typeof t.on&&h(t,"error",e,n)}(t,o,{once:!0})}))},u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var c=10;function l(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function s(t){return void 0===t._maxListeners?u.defaultMaxListeners:t._maxListeners}function d(t,e,n,r){var o,i,a,u;if(l(n),void 0===(i=t._events)?(i=t._events=Object.create(null),t._eventsCount=0):(void 0!==i.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),i=t._events),a=i[e]),void 0===a)a=i[e]=n,++t._eventsCount;else if("function"==typeof a?a=i[e]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(o=s(t))>0&&a.length>o&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=a.length,u=c,console&&console.warn&&console.warn(u)}return t}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},o=f.bind(r);return o.listener=n,r.wrapFn=o,o}function y(t,e,n){var r=t._events;if(void 0===r)return[];var o=r[e];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(t){for(var e=new Array(t.length),n=0;n0&&(a=e[0]),a instanceof Error)throw a;var u=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw u.context=a,u}var c=o[t];if(void 0===c)return!1;if("function"==typeof c)i(c,this,e);else{var l=c.length,s=v(c,l);for(n=0;n=0;i--)if(n[i]===e||n[i].listener===e){a=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;r--)this.removeListener(t,e[r]);return this},u.prototype.listeners=function(t){return y(this,t,!0)},u.prototype.rawListeners=function(t){return y(this,t,!1)},u.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},u.prototype.listenerCount=m,u.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(t,e,n){"use strict";function r(t){throw new Error(t+" is not implemented")}n.r(e);var o=n(0),i=n.n(o),a=/[A-Z]/g,u=["viewBox"];function c(t,e){Object.keys(e).forEach((function(n){t.setAttribute(function(t){return-1===u.indexOf(t)&&(t=t.replace(a,(function(t){return"-"+t.toLowerCase()}))),t}(n),e[n])}))}var l=/^([a-f0-9]{6}|[a-f0-9]{3})$/i;function s(t){return l.test(t)&&(t="#".concat(t)),t}function d(t){var e=document.createElementNS("http://www.w3.org/2000/svg","rect");return c(e,{x:t.x,y:t.y,width:t.width,height:t.height}),e}function f(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return p(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}function p(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){e.push("M".concat(t.lines[0][0]," ").concat(t.lines[0][1]));for(var r=1,o=t.lines.length;r=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right}function q(t){var e=t.getBoundingClientRect(),n=e.width,r=e.height,o=0,i=0;if(["line","path"].indexOf(t.tagName.toLowerCase())>-1&&t.getBBox){var a=t.getBBox();o=(e.width-a.width)/2,i=(e.height-a.height)/2,n=a.width,r=a.height}var u=function(t){var e=t;for(;(e=e.parentNode)&&e!==document&&"SVG"!==e.nodeName.toUpperCase(););var n=e.getBoundingClientRect();return{offsetLeft:n.left,offsetTop:n.top}}(t),c=u.offsetLeft,l=u.offsetTop;return{top:e.top-l+i,left:e.left-c+o,bottom:e.bottom-l-i,right:e.right-c-o,width:n,height:r}}function F(t,e){var n={},r=H(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]*r.scale})),n}function z(t,e,n){var r=[1,0,0,1,0,0];r=h(r=g(r,(n=n||H(e).viewport).scale,n.scale),n.rotation);var o,i,a,u=k(n);return r=v(r,u.x,u.y),o=t,a=(i=r)[0]*i[3]-i[1]*i[2],[(o[0]*i[3]-o[1]*i[2]+i[2]*i[5]-i[4]*i[3])/a,(-o[0]*i[1]+o[1]*i[0]+i[4]*i[1]-i[5]*i[0])/a]}function X(t,e,n){var r=[1,0,0,1,0,0];r=h(r=g(r,(n=n||H(e).viewport).scale,n.scale),n.rotation);var o,i,a=k(n);return r=v(r,a.x,a.y),i=r,[(o=t)[0]*i[0]+o[1]*i[2]+i[4],o[0]*i[1]+o[1]*i[3]+i[5]]}function Y(t,e){var n={},r=H(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]/r.scale})),n}function U(){P.parentNode||document.head.appendChild(P)}function Q(){P.parentNode&&P.parentNode.removeChild(P)}function H(t){return{documentId:t.getAttribute("data-pdf-annotate-document"),pageNumber:parseInt(t.getAttribute("data-pdf-annotate-page"),10),viewport:JSON.parse(t.getAttribute("data-pdf-annotate-viewport"))}}P.innerHTML="\nbody {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n",P.setAttribute("data-pdf-annotate-user-select","true");var D,W=new i.a;function $(){W.emit.apply(W,arguments)}function J(){W.on.apply(W,arguments)}function V(){W.removeListener.apply(W,arguments)}function G(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function K(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};G(this,t),Object.keys(n).forEach((function(t){"function"==typeof n[t]&&"function"==typeof e[t]&&(e[t]=n[t])}))}var e,n,o;return e=t,(n=[{key:"__getAnnotations",value:function(t,e){r("getAnnotations")}},{key:"getAnnotations",get:function(){return this.__getAnnotations},set:function(t){this.__getAnnotations=function(e,n){return t.apply(void 0,arguments).then((function(t){return t.annotations&&t.annotations.forEach((function(t){t.documentId=e})),t}))}}},{key:"getAnnotation",value:function(t,e){r("getAnnotation")}},{key:"__addAnnotation",value:function(t,e,n){r("addAnnotation")}},{key:"addAnnotation",get:function(){return this.__addAnnotation},set:function(t){this.__addAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return $("annotation:add",e,n,t),t}))}}},{key:"__editAnnotation",value:function(t,e,n){r("editAnnotation")}},{key:"editAnnotation",get:function(){return this.__editAnnotation},set:function(t){this.__editAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return $("annotation:edit",e,n,t),t}))}}},{key:"__deleteAnnotation",value:function(t,e){r("deleteAnnotation")}},{key:"deleteAnnotation",get:function(){return this.__deleteAnnotation},set:function(t){this.__deleteAnnotation=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&$("annotation:delete",e,n),t}))}}},{key:"getComments",value:function(t,e){r("getComments")}},{key:"__addComment",value:function(t,e,n){r("addComment")}},{key:"addComment",get:function(){return this.__addComment},set:function(t){this.__addComment=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return $("comment:add",e,n,t),t}))}}},{key:"__deleteComment",value:function(t,e){r("deleteComment")}},{key:"deleteComment",get:function(){return this.__deleteComment},set:function(t){this.__deleteComment=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&$("comment:delete",e,n),t}))}}}])&&K(e.prototype,n),o&&K(e,o),Object.defineProperty(e,"prototype",{writable:!1}),t}(),tt=/[xy]/g;function et(t){var e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}function nt(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(tt,et)}function rt(t){return(rt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ot(t,e){for(var n=0;n-1){var i=st(t);i.splice(o,1),dt(t,i)}n(!0)}))},t.getComments=function(t,e){return new Promise((function(n,r){n(st(t).filter((function(t){return"Comment"===t.class&&t.annotation===e})))}))},t.addComment=function(t,e,n){return new Promise((function(r,o){var i={class:"Comment",uuid:nt(),annotation:e,content:n},a=st(t);a.push(i),dt(t,a),r(i)}))},t.deleteComment=function(t,e){return new Promise((function(n,r){if(!(st(t).filter((function(t){return t.uuid===e}))[0]||{}))return r("Could not find annotation");for(var o=-1,i=st(t),a=0,u=i.length;a-1&&(i.splice(o,1),dt(t,i)),n(!0)}))},t}return e=i,n&&ot(e.prototype,n),r&&ot(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(Z);function st(t){return JSON.parse(localStorage.getItem("".concat(t,"/annotations")))||[]}function dt(t,e){localStorage.setItem("".concat(t,"/annotations"),JSON.stringify(e))}function ft(t,e){for(var n=-1,r=st(t),o=0,i=r.length;ot.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:"user",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return vt(this,i),(t=o.call(this,{getAnnotations:function(t,e){return new Promise((function(n,r){var o=St(t).filter((function(t){return t.page===e&&"Annotation"===t.class}));n({documentId:t,pageNumber:e,annotations:o})}))}}))._userId=e,t._globalEdit=n,t.getAnnotation=function(e,n){return Promise.resolve(Et(e,t._userId)[Lt(e,t._userId,n)])},t.addAnnotation=function(e,n,r){return new Promise((function(o,i){r.class="Annotation",r.uuid=nt(),r.page=n,r.userId=t._userId;var a=Et(e,t._userId);a.push(r),Ct(e,t._userId,a),o(r)}))},t.editAnnotation=function(e,n,r){return new Promise((function(o,i){!t._globalEdit&&r.userId&&r.userId!==t._userId&&i("Non-matching userId");var a=Et(e,r.userId);a[Lt(e,r.userId,n)]=r,Ct(e,r.userId,a),o(r)}))},t.deleteAnnotation=function(e,n){return new Promise((function(r,o){var i=St(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");var a=Lt(e,i.userId,n);if(a>-1){var u=Et(e,i.userId);u.splice(a,1),Ct(e,i.userId,u)}r(!0)}))},t.getComments=function(e,n){return new Promise((function(r,o){r(Et(e,t._userId).filter((function(t){return"Comment"===t.class&&t.annotation===n})))}))},t.addComment=function(e,n,r){return new Promise((function(o,i){var a={class:"Comment",uuid:nt(),annotation:n,content:r,userId:t._userId},u=Et(e,t._userId);u.push(a),Ct(e,t._userId,u),o(a)}))},t.deleteComment=function(e,n){return new Promise((function(r,o){var i=St(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");for(var a=-1,u=Et(e,i.userId),c=0,l=u.length;c-1&&(u.splice(a,1),Ct(e,i.userId,u)),r(!0)}))},t}return e=i,(n=[{key:"userId",get:function(){return this._userId}}])&&ht(e.prototype,n),r&&ht(e,r),Object.defineProperty(e,"prototype",{writable:!1}),i}(Z);function St(t){for(var e=[],n=new RegExp("".concat(t,"/(.*)/annotations")),r=0;r-1&&e.push.apply(e,yt(JSON.parse(localStorage.getItem(localStorage.key(r)))));return e}function Et(t,e){return JSON.parse(localStorage.getItem("".concat(t,"/").concat(e,"/annotations")))||[]}function Ct(t,e,n){localStorage.setItem("".concat(t,"/").concat(e,"/annotations"),JSON.stringify(n))}function Lt(t,e,n){for(var r=-1,o=Et(t,e),i=0,a=o.length;it.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&n+Ot.offsetHeight0&&r+Ot.offsetWidth-1&&(a="cx",u="cy"),"point"!==r){if(["area","highlight","textbox","circle","fillcircle","emptycircle"].indexOf(r)>-1){var c=z([Pt,Rt],o),l=z([Ot.offsetLeft,Ot.offsetTop],o),s={x:l[0]-c[0],y:l[1]-c[1]};"textbox"===r&&(n=[n[0].firstChild]),_t(n).forEach((function(e,n){var r=parseInt(e.getAttribute(a),10),o=parseInt(e.getAttribute(u),10);0!==s.y&&(o+=s.y,e.setAttribute(u,o),t.rectangles&&n1&&(n=M(t,e))){var r=H(n),o=r.documentId,i=r.pageNumber;Cn.getStoreAdapter().addAnnotation(o,i,{type:"drawing",width:Ht,color:Dt,lines:Vt}).then((function(t){Wt&&n.removeChild(Wt),N(n,t)}))}}(t.clientX,t.clientY)}function Zt(t){M(t.clientX,t.clientY)&&Jt&&function(t,e){var n=M(t,e);if(!n)return;var r=n.getBoundingClientRect(),o=z([t-r.left,e-r.top],n);if(o[0]=o[0].toFixed(2),o[1]=o[1].toFixed(2),Vt.push(o),Vt.length<=1)return;Wt&&n.removeChild(Wt);Wt=N(n,{type:"drawing",color:Dt,width:Ht,lines:Vt})}(t.clientX,t.clientY)}function te(t){27===t.keyCode&&(Vt=null,Wt.parentNode.removeChild(Wt),document.removeEventListener("pointermove",Zt),document.removeEventListener("pointerup",Kt))}var ee,ne,re,oe,ie,ae,ue=!1;function ce(t){var e=T(t.clientX,t.clientY);if(null!==e){var n=e.getAttribute("data-pdf-annotate-type");if("circle"===n||"fillcircle"===n||"emptycircle"===n){var r=R(e),o=H(r).documentId,i=e.getAttribute("data-pdf-annotate-id");Cn.getStoreAdapter().getAnnotation(o,i).then((function(t){if(t){re=null,oe=[];var e=X([t.cx,t.cy],r),n=r.getBoundingClientRect();ae=e[0]+n.left,ie=e[1]+n.top,document.addEventListener("mousemove",se),document.addEventListener("mouseup",le)}}))}}}function le(t){var e;if(oe.length>1&&(e=M(t.clientX,t.clientY))){var n=H(e),r=n.documentId,o=n.pageNumber;Cn.getStoreAdapter().addAnnotation(r,o,{type:"arrow",width:ee,color:ne,lines:oe}).then((function(t){re&&e.removeChild(re),N(e,t)}))}document.removeEventListener("mousemove",se),document.removeEventListener("mouseup",le)}function se(t){!function(t,e){var n=M(t,e);if(!n)return;var r=n.getBoundingClientRect(),o=z([t-r.left,e-r.top],n);if(oe.length<2)return void oe.push(o);oe[1]=o;re&&n.removeChild(re);re=N(n,{type:"arrow",color:ne,width:ee,lines:oe})}(0===oe.length?ae:t.clientX,0===oe.length?ie:t.clientY)}function de(t){27===t.keyCode&&(oe=null,re.parentNode.removeChild(re),document.removeEventListener("mousemove",se),document.removeEventListener("mouseup",le))}function fe(t){return function(t){if(Array.isArray(t))return pe(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return pe(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pe(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pe(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=1||r>=1)for(var o=Math.round(Math.max(n,r)),i=Math.min(n,r)/o,a=n0){var t=parseInt(we.style.left,10),e=parseInt(we.style.top,10),n=we.value.trim(),r=M(t,e);if(!r)return;var o=r.getBoundingClientRect(),i=H(r),a=i.documentId,u=i.pageNumber,c=Object.assign({type:"point"},Y(r,{x:t-o.left,y:e-o.top}));Cn.getStoreAdapter().addAnnotation(a,u,c).then((function(t){Cn.getStoreAdapter().addComment(a,t.uuid,n),N(r,t)}))}Le()}function Le(){we.removeEventListener("blur",Se),we.removeEventListener("keyup",Ee),document.body.removeChild(we),we=null}function Ie(t){return function(t){if(Array.isArray(t))return _e(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return _e(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _e(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&t[0].width>0&&t[0].height>0)return t}catch(t){}return null}()))qe(ke,Ie(e).map((function(t){return{top:t.top,left:t.left,width:t.width,height:t.height}})));else if("area"===ke&&Oe){var n=Oe.parentNode.querySelector(It.annotationSvgQuery()).getBoundingClientRect();qe(ke,[{top:parseInt(Oe.style.top,10)+n.top,left:parseInt(Oe.style.left,10)+n.left,width:parseInt(Oe.style.width,10),height:parseInt(Oe.style.height,10)}]),Oe.parentNode.removeChild(Oe),Oe=null,document.removeEventListener("mousemove",Me),Q()}}function Be(t){27===t.keyCode&&(window.getSelection().removeAllRanges(),Oe&&Oe.parentNode&&(Oe.parentNode.removeChild(Oe),Oe=null,document.removeEventListener("mousemove",Me)))}function qe(t,e,n){var r,o=M(e[0].left,e[0].top);if(o){var i=o.getBoundingClientRect();if(n||("highlight"===t?n="FFFF00":"strikeout"===t&&(n="FF0000")),0!==(r={type:t,color:n,rectangles:Ie(e).map((function(e){var n=0;return"strikeout"===t&&(n=e.height/2),function(t,e,n){var r=[t.x,t.y],o=[t.x+t.width,t.y+t.height];return r=z(r,e,n),o=z(o,e,n),{x:Math.min(r[0],o[0]),y:Math.min(r[1],o[1]),width:Math.abs(o[0]-r[0]),height:Math.abs(o[1]-r[1])}}({y:e.top+n-i.top,x:e.left-i.left,width:e.width,height:e.height},o)})).filter((function(t){return t.width>0&&t.height>0&&t.x>-1&&t.y>-1}))}).rectangles.length){if("area"===t){var a=r.rectangles[0];delete r.rectangles,r.x=a.x,r.y=a.y,r.width=a.width,r.height=a.height}var u=H(o),c=u.documentId,l=u.pageNumber;Cn.getStoreAdapter().addAnnotation(c,l,r).then((function(t){N(o,t)}))}}}var Fe,ze=!1,Xe=10,Ye="0000FF";function Ue(t){var e=M(t.clientX,t.clientY);if(e){var n=e.getBoundingClientRect();!function(t,e,n,r,o){var i=z([n.x,n.y],t),a={type:e,color:o,cx:i[0],cy:i[1],r:r},u=H(t),c=u.documentId,l=u.pageNumber;Cn.getStoreAdapter().addAnnotation(c,l,a).then((function(e){N(t,e)}))}(e,Fe,{x:t.clientX-n.left,y:t.clientY-n.top},Xe,Ye)}}var Qe,He=!1,De=localStorage.getItem("text/size")||12,We=localStorage.getItem("text/color")||"#000000";function $e(t){!Qe&&M(t.clientX,t.clientY)&&t.srcElement.classList.contains("annotationLayer")&&((Qe=document.createElement("textarea")).setAttribute("id","pdf-annotate-text-input"),Qe.setAttribute("placeholder","Enter text... SHIFT + ENTER for new line"),Qe.style.border="3px solid ".concat("#00BFFF"),Qe.style.borderRadius="3px",Qe.style.position="fixed",Qe.style.top="".concat(t.clientY,"px"),Qe.style.left="".concat(t.clientX,"px"),Qe.style.fontSize="".concat(De,"px"),Qe.style.zIndex="41",Qe.addEventListener("blur",Je),Qe.addEventListener("keyup",Ve),document.body.appendChild(Qe),Qe.focus())}function Je(){Ge()}function Ve(t){27===t.keyCode?Ke():13!==t.keyCode||t.shiftKey||Ge()}function Ge(){var t=Qe.value?Qe.value.replace(/ +$/,""):"";if(t.length>0){var e=parseInt(Qe.style.left,10),n=parseInt(Qe.style.top,10),r=M(e,n);if(!r)return;var o=De,i=H(r),a=i.documentId,u=i.pageNumber,c=i.viewport,l=1/c.scale,s=r.getBoundingClientRect(),d=z([e-s.left,n-s.top+o],r,c),f={type:"textbox",size:De*l,color:We,content:t,x:d[0],y:d[1],rotation:-c.rotation};Cn.getStoreAdapter().addAnnotation(a,u,f).then((function(t){N(r,t)}))}Ke()}function Ke(){Qe&&(Qe.removeEventListener("blur",Je),Qe.removeEventListener("keyup",Ve),document.body.removeChild(Qe),Qe=null)}function Ze(t,e){var n=document.createElement("div"),r=document.createTextNode(t);return n.appendChild(r),n.setAttribute("id","pdf-annotate-screenreader-".concat(e)),n.style.position="absolute",n.style.left="-10000px",n.style.top="auto",n.style.width="1px",n.style.height="1px",n.style.overflow="hidden",n}function tn(t){return function(t){if(Array.isArray(t))return en(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return en(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return en(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function en(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n"===l[l.length-1])for(;l.length&&(s.unshift(l.pop()),"<"!==s[0]););if(c.innerHTML=l.join(""),u+Y(a,{width:c.getBoundingClientRect().width}).width<=e)break;s.unshift(l.pop())}return i.innerHTML=l.join("")+t.outerHTML+s.join(""),c.parentNode.removeChild(c),!0}function rn(t){return function(t){if(Array.isArray(t))return on(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return on(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return on(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function on(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n div"));n=F(o,{y:n}).y+i.top,e=F(o,{x:e}).x+i.left;for(var u=0,c=a.length;u1&&void 0!==arguments[1]?arguments[1]:0;switch(t.type){case"highlight":case"strikeout":var n=t.rectangles,r=n[0],o=n[n.length-1];nn(Ze("Begin ".concat(t.type," annotation ").concat(e),t.uuid),r.x,r.y,t.page,!0),nn(Ze("End ".concat(t.type," annotation ").concat(e),"".concat(t.uuid,"-end")),o.x+o.width,o.y,t.page,!1);break;case"textbox":case"point":var i="textbox"===t.type?" (content: ".concat(t.content,")"):"";an(Ze("".concat(t.type," annotation ").concat(e).concat(i),t.uuid),t.x,t.y,t.page);break;case"drawing":case"area":var a=void 0!==t.x?t.x:t.lines[0][0],u=void 0!==t.y?t.y:t.lines[0][1];an(Ze("Unlabeled drawing",t.uuid),a,u,t.page);break;case"circle":case"fillcircle":case"emptycircle":var c=void 0!==t.cx?t.cx:t.lines[0][0],l=void 0!==t.cy?t.cy:t.lines[0][1];an(Ze("Unlabeled drawing",t.uuid),c,l,t.page)}ln.includes(t.type)&&cn(t.documentId,t.uuid)}(t,e+1)}))}))}function vn(t,e){return t.yt.length)&&(e=t.length);for(var n=0,r=new Array(e);n\n \n \n';function An(t){if(Math.floor(t)===t)return[t,1];var e=1/t;if(e>8)return[1,8];if(Math.floor(e)===e)return[1,e];for(var n=t>1?e:t,r=0,o=1,i=1,a=1;;){var u=r+i,c=o+a;if(c>8)break;n<=u/c?(i=u,a=c):(r=u,o=c)}return n-r/o0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";Ht=Math.round(100*parseFloat(t))/100,Dt=e},disablePoint:function(){xe&&(xe=!1,document.removeEventListener("mouseup",Ae))},enablePoint:function(){xe||(xe=!0,document.addEventListener("mouseup",Ae))},disableRect:function(){Pe&&(Pe=!1,document.removeEventListener("mouseup",Te),document.removeEventListener("mousedown",Re),document.removeEventListener("keyup",Be))},enableRect:function(t){ke=t,Pe||(Pe=!0,document.addEventListener("mouseup",Te),document.addEventListener("mousedown",Re),document.addEventListener("keyup",Be))},disableCircle:function(){ze&&(ze=!1,document.removeEventListener("mouseup",Ue))},enableCircle:function(t){Fe=t,ze||(ze=!0,document.addEventListener("mouseup",Ue))},setCircle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";Xe=parseInt(t,10),Ye=e},addCircle:function(t,e){var n=Fe;Fe=t,Ue(e),Fe=n},disableArrow:function(){ue&&(ue=!1,document.removeEventListener("mousedown",ce),document.removeEventListener("keyup",de),Q())},enableArrow:function(){ue||(ue=!0,document.addEventListener("mousedown",ce),document.addEventListener("keyup",de),U())},setArrow:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";ee=parseInt(t,10),ne=e},disableEraser:function(){document.removeEventListener("pointermove",ge),document.removeEventListener("pointerdown",ve),document.removeEventListener("pointerup",he)},enableEraser:function(){document.addEventListener("pointermove",ge),document.addEventListener("pointerdown",ve),document.addEventListener("pointerup",he)},disableText:function(){He&&(He=!1,document.removeEventListener("mouseup",$e))},enableText:function(){He||(He=!0,document.addEventListener("mouseup",$e))},setText:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";De=parseInt(t,10),We=e},createPage:function(t){var e=document.createElement("div");e.innerHTML=xn;var n=e.children[0],r=n.querySelector("canvas");return n.setAttribute("id","pageContainer".concat(t)),n.setAttribute("data-page-number",t),r.mozOpaque=!0,r.setAttribute("id","page".concat(t)),n},renderPage:function(t,e){var n=e.documentId,r=e.pdfDocument,o=e.scale,i=e.rotate,a=new pdfjsViewer.EventBus;return Promise.all([r.getPage(t),Cn.getAnnotations(n,t)]).then((function(e){var n=bn(e,2),r=n[0],u=n[1],c=document.getElementById("pageContainer".concat(t)),l=c.querySelector(It.annotationClassQuery()),s=c.querySelector(".canvasWrapper canvas").getContext("2d",{alpha:!1}),d=(i+r.rotate)%360,f=r.getViewport({scale:o,rotation:d}),p=function(t,e,n){var r=document.getElementById("pageContainer".concat(t)),o=r.querySelector(".canvasWrapper canvas"),i=r.querySelector(It.annotationClassQuery()),a=r.querySelector(".canvasWrapper"),u=r.querySelector(It.textClassQuery()),c=(f=n,p=window.devicePixelRatio||1,y=f.webkitBackingStorePixelRatio||f.mozBackingStorePixelRatio||f.msBackingStorePixelRatio||f.oBackingStorePixelRatio||f.backingStorePixelRatio||1,m=p/y,{sx:m,sy:m,scaled:1!==m}),l=c.scaled?[c.sx,0,0,c.sy,0,0]:null,s=An(c.sx),d=An(c.sy);var f,p,y,m;return r.style.visibility="",o.width=Sn(e.width*c.sx,s[0]),o.height=Sn(e.height*c.sy,d[0]),o.style.width=Sn(e.width,s[1])+"px",o.style.height=Sn(e.height,s[1])+"px",i.setAttribute("width",e.width),i.setAttribute("height",e.height),i.style.width="".concat(e.width,"px"),i.style.height="".concat(e.height,"px"),r.style.width="".concat(e.width,"px"),r.style.height="".concat(e.height,"px"),a.style.width="".concat(e.width,"px"),a.style.height="".concat(e.height,"px"),u.style.width="".concat(e.width,"px"),u.style.height="".concat(e.height,"px"),l}(t,f,s);return Promise.all([r.render({canvasContext:s,viewport:f,transform:p}).promise,Cn.render(l,f,u)]).then((function(){return r.getTextContent({normalizeWhitespace:!0}).then((function(e){return new Promise((function(n,r){var o=c.querySelector(It.textClassQuery()),i=(new pdfjsViewer.DefaultTextLayerFactory).createTextLayerBuilder(o,t-1,f,!1,a);i.setTextContent(e),i.render(),setTimeout((function(){try{mn(u.annotations),n()}catch(t){r(t)}}))}))}))})).then((function(){return c.setAttribute("data-loaded","true"),[r,u]}))}))}},Cn={findAnnotationAtPoint:T,findSVGContainer:R,convertToScreenPoint:X,StoreAdapter:Z,LocalStoreAdapter:lt,LocalUserStoreAdapter:At,__storeAdapter:new Z,getStoreAdapter:function(){return this.__storeAdapter},setStoreAdapter:function(t){this.__storeAdapter=t},UI:En,render:function(t,e,n){return new Promise((function(r,o){return t.setAttribute("data-pdf-annotate-container",!0),t.setAttribute("data-pdf-annotate-viewport",JSON.stringify(e)),t.removeAttribute("data-pdf-annotate-document"),t.removeAttribute("data-pdf-annotate-page"),n?(t.setAttribute("data-pdf-annotate-document",n.documentId),t.setAttribute("data-pdf-annotate-page",n.pageNumber),Array.isArray(n.annotations)&&0!==n.annotations.length?(n.annotations.forEach((function(n){var r=t.querySelector('[data-pdf-annotate-id="'+n.uuid+'"]');r?j(t,r,e):N(t,n,e)})),void r(t)):r(t)):(t.innerHTML="",r(t))}))},getAnnotations:function(t,e){var n;return(n=this.getStoreAdapter()).getAnnotations.apply(n,arguments)},config:It,uuid:nt};e.default=Cn}])})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PDFAnnotate=e():t.PDFAnnotate=e()}(self,(()=>(()=>{"use strict";var t={7:t=>{var e,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};e=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var o=Number.isNaN||function(t){return t!=t};function i(){i.init.call(this)}t.exports=i,t.exports.once=function(t,e){return new Promise((function(n,r){function o(n){t.removeListener(e,i),r(n)}function i(){"function"==typeof t.removeListener&&t.removeListener("error",o),n([].slice.call(arguments))}v(t,e,i,{once:!0}),"error"!==e&&function(t,e,n){"function"==typeof t.on&&v(t,"error",e,{once:!0})}(t,o)}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var a=10;function c(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function u(t){return void 0===t._maxListeners?i.defaultMaxListeners:t._maxListeners}function l(t,e,n,r){var o,i,a,l;if(c(n),void 0===(i=t._events)?(i=t._events=Object.create(null),t._eventsCount=0):(void 0!==i.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),i=t._events),a=i[e]),void 0===a)a=i[e]=n,++t._eventsCount;else if("function"==typeof a?a=i[e]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(o=u(t))>0&&a.length>o&&!a.warned){a.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=t,s.type=e,s.count=a.length,l=s,console&&console.warn&&console.warn(l)}return t}function s(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},o=s.bind(r);return o.listener=n,r.wrapFn=o,o}function f(t,e,n){var r=t._events;if(void 0===r)return[];var o=r[e];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(t){for(var e=new Array(t.length),n=0;n0&&(a=e[0]),a instanceof Error)throw a;var c=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw c.context=a,c}var u=i[t];if(void 0===u)return!1;if("function"==typeof u)r(u,this,e);else{var l=u.length,s=y(u,l);for(n=0;n=0;i--)if(n[i]===e||n[i].listener===e){a=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;r--)this.removeListener(t,e[r]);return this},i.prototype.listeners=function(t){return f(this,t,!0)},i.prototype.rawListeners=function(t){return f(this,t,!1)},i.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):p.call(t,e)},i.prototype.listenerCount=p,i.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r](i,i.exports,n),i.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};function o(t){throw new Error(t+" is not implemented")}n.r(r),n.d(r,{default:()=>bn});var i=n(7),a=n.n(i),c=/[A-Z]/g,u=["viewBox"],l=function(t){return-1===u.indexOf(t)&&(t=t.replace(c,(function(t){return"-"+t.toLowerCase()}))),t};function s(t,e){Object.keys(e).forEach((function(n){t.setAttribute(l(n),e[n])}))}var d=/^([a-f0-9]{6}|[a-f0-9]{3})$/i;function f(t){return d.test(t)&&(t="#".concat(t)),t}var p=25,y="M499.968 214.336q-113.832 0 -212.877 38.781t-157.356 104.625 -58.311 142.29q0 62.496 39.897 119.133t112.437 97.929l48.546 27.9 -15.066 53.568q-13.392 50.778 -39.06 95.976 84.816 -35.154 153.45 -95.418l23.994 -21.204 31.806 3.348q38.502 4.464 72.54 4.464 113.832 0 212.877 -38.781t157.356 -104.625 58.311 -142.29 -58.311 -142.29 -157.356 -104.625 -212.877 -38.781z";function v(t){var e=document.createElementNS("http://www.w3.org/2000/svg","rect");return s(e,{x:t.x,y:t.y,width:t.width,height:t.height}),e}function m(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw i}}}}(r);try{for(c.s();!(n=c.n()).done;){var u=n.value,l=document.createElementNS("http://www.w3.org/2000/svg","tspan");l.setAttribute("y",i.toString()),l.setAttribute("x",o),l.innerHTML=u,t.appendChild(l),i+=a}}catch(t){c.e(t)}finally{c.f()}}(e,t.content);var n=document.createElementNS("http://www.w3.org/2000/svg","g");return n.appendChild(e),n}function g(t,e,n){return[t[0],t[1],t[2],t[3],t[0]*e+t[2]*n+t[4],t[1]*e+t[3]*n+t[5]]}function b(t,e){e=e*Math.PI/180;var n=Math.cos(e),r=Math.sin(e);return[t[0]*n+t[2]*r,t[1]*n+t[3]*r,t[0]*-r+t[2]*n,t[1]*-r+t[3]*n,t[4],t[5]]}function w(t,e,n){return[t[0]*e,t[1]*e,t[2]*n,t[3]*n,t[4],t[5]]}function x(t,e,n){return{x:t,y:e,z:n}}function A(t,e,n){return{xcoord:t,ycoord:e,zcoord:n}}function S(t,e){return A(e.x-t.x,e.y-t.y,e.z-t.z)}function E(t,e){return x(t.x+e.xcoord,t.y+e.ycoord,t.z+e.zcoord)}function C(t,e){return A(t.xcoord*e,t.ycoord*e,t.zcoord*e)}function L(t){return Math.sqrt(Math.pow(t.xcoord,2)+Math.pow(t.ycoord,2)+Math.pow(t.zcoord,2))}function I(t){return C(t,-1)}function _(t){var e=L(t);return A(t.xcoord/e,t.ycoord/e,t.zcoord/e)}var k=/firefox/i.test(navigator.userAgent);function N(t){var e,n;switch(t.rotation%360){case 0:e=n=0;break;case 90:e=0,n=t.width/t.scale*-1;break;case 180:e=t.width/t.scale*-1,n=t.height/t.scale*-1;break;case 270:e=t.height/t.scale*-1,n=0}return{x:e,y:n}}function O(t,e){var n=N(e);if(t.setAttribute("transform","scale(".concat(e.scale,") rotate(").concat(e.rotation,") translate(").concat(n.x,", ").concat(n.y,")")),!k&&"svg"===t.nodeName.toLowerCase()){t.setAttribute("x",parseInt(t.getAttribute("x"),10)*e.scale),t.setAttribute("y",parseInt(t.getAttribute("y"),10)*e.scale);var r=parseInt(t.getAttribute("x",10)),o=parseInt(t.getAttribute("y",10)),i=parseInt(t.getAttribute("width"),10),a=parseInt(t.getAttribute("height"),10),c=t.querySelector("path"),u=c.parentNode;switch([t,u,c,t.querySelector("rect")].forEach((function(t){t.setAttribute("width",parseInt(t.getAttribute("width"),10)*e.scale),t.setAttribute("height",parseInt(t.getAttribute("height"),10)*e.scale)})),O(c,Object.assign({},e,{scale:1})),e.rotation%360){case 90:t.setAttribute("x",e.width-o-i),t.setAttribute("y",r),u.setAttribute("x",1),u.setAttribute("y",0);break;case 180:t.setAttribute("x",e.width-r-i),t.setAttribute("y",e.height-o-a),u.setAttribute("y",2);break;case 270:t.setAttribute("x",o),t.setAttribute("y",e.height-r-a),u.setAttribute("x",-1),u.setAttribute("y",0)}}return t}function j(t,e,n){var r,o,i;switch(n||(n=JSON.parse(t.getAttribute("data-pdf-annotate-viewport"))),e.type){case"area":case"highlight":r=function(t){if("highlight"===t.type){var e=document.createElementNS("http://www.w3.org/2000/svg","g");return s(e,{fill:f(t.color||"#ff0"),fillOpacity:.2}),t.rectangles.forEach((function(t){e.appendChild(v(t))})),e}var n=v(t);return s(n,{stroke:f(t.color||"#f00"),fill:"none"}),n}(e);break;case"circle":case"fillcircle":case"emptycircle":r=function(t){var e=function(t){var e=document.createElementNS("http://www.w3.org/2000/svg","circle");return s(e,{cx:t.cx,cy:t.cy,r:t.r}),e}(t),n=f(t.color||"#f00");return"circle"===t.type&&s(e,{stroke:n,fill:"none","stroke-width":5}),"emptycircle"===t.type&&s(e,{stroke:n,fill:"none","stroke-width":2}),"fillcircle"===t.type&&s(e,{stroke:n,fill:n,"stroke-width":5}),e}(e);break;case"strikeout":o=e,s(i=document.createElementNS("http://www.w3.org/2000/svg","g"),{stroke:f(o.color||"#f00"),strokeWidth:1}),o.rectangles.forEach((function(t){var e=document.createElementNS("http://www.w3.org/2000/svg","line");s(e,{x1:t.x,y1:t.y,x2:t.x+t.width,y2:t.y}),i.appendChild(e)})),r=i;break;case"point":r=function(t){var e=document.createElementNS("http://www.w3.org/2000/svg","svg"),n=document.createElementNS("http://www.w3.org/2000/svg","svg"),r=document.createElementNS("http://www.w3.org/2000/svg","rect"),o=document.createElementNS("http://www.w3.org/2000/svg","path");return s(e,{width:p,height:p,x:t.x,y:t.y}),s(n,{width:p,height:p,x:0,y:.05*p*-1,viewBox:"0 0 1000 1000"}),s(r,{width:p,height:p,stroke:"#000",fill:"#ff0"}),s(o,{d:y,strokeWidth:50,stroke:"#000",fill:"#fff"}),n.appendChild(o),e.appendChild(r),e.appendChild(n),e}(e);break;case"textbox":r=h(e);break;case"drawing":r=function(t){var e=[],n=document.createElementNS("http://www.w3.org/2000/svg","path");if(t.lines.length>0){e.push("M".concat(t.lines[0][0]," ").concat(t.lines[0][1]));for(var r=1,o=t.lines.length;r=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right}function z(t,e){var n={},r=H(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]*r.scale})),n}function F(t,e,n){var r=[1,0,0,1,0,0];r=b(r=w(r,(n=n||H(e).viewport).scale,n.scale),n.rotation);var o,i,a,c=N(n);return o=t,a=(i=r=g(r,c.x,c.y))[0]*i[3]-i[1]*i[2],[(o[0]*i[3]-o[1]*i[2]+i[2]*i[5]-i[4]*i[3])/a,(-o[0]*i[1]+o[1]*i[0]+i[4]*i[1]-i[5]*i[0])/a]}function X(t,e,n){var r=[1,0,0,1,0,0];r=b(r=w(r,(n=n||H(e).viewport).scale,n.scale),n.rotation);var o,i,a=N(n);return i=r=g(r,a.x,a.y),[(o=t)[0]*i[0]+o[1]*i[2]+i[4],o[0]*i[1]+o[1]*i[3]+i[5]]}function Y(t,e){var n={},r=H(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]/r.scale})),n}function U(){M.parentNode||document.head.appendChild(M)}function Q(){M.parentNode&&M.parentNode.removeChild(M)}function H(t){return{documentId:t.getAttribute("data-pdf-annotate-document"),pageNumber:parseInt(t.getAttribute("data-pdf-annotate-page"),10),viewport:JSON.parse(t.getAttribute("data-pdf-annotate-viewport"))}}M.innerHTML="\nbody {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n",M.setAttribute("data-pdf-annotate-user-select","true");var D,W=new(a());function $(){W.emit.apply(W,arguments)}function J(){W.on.apply(W,arguments)}function V(){W.removeListener.apply(W,arguments)}function G(t){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G(t)}function K(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Object.keys(n).forEach((function(t){"function"==typeof n[t]&&"function"==typeof e[t]&&(e[t]=n[t])}))},e=[{key:"__getAnnotations",value:function(t,e){o("getAnnotations")}},{key:"getAnnotations",get:function(){return this.__getAnnotations},set:function(t){this.__getAnnotations=function(e,n){return t.apply(void 0,arguments).then((function(t){return t.annotations&&t.annotations.forEach((function(t){t.documentId=e})),t}))}}},{key:"getAnnotation",value:function(t,e){o("getAnnotation")}},{key:"__addAnnotation",value:function(t,e,n){o("addAnnotation")}},{key:"addAnnotation",get:function(){return this.__addAnnotation},set:function(t){this.__addAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return $("annotation:add",e,n,t),t}))}}},{key:"__editAnnotation",value:function(t,e,n){o("editAnnotation")}},{key:"editAnnotation",get:function(){return this.__editAnnotation},set:function(t){this.__editAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return $("annotation:edit",e,n,t),t}))}}},{key:"__deleteAnnotation",value:function(t,e){o("deleteAnnotation")}},{key:"deleteAnnotation",get:function(){return this.__deleteAnnotation},set:function(t){this.__deleteAnnotation=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&$("annotation:delete",e,n),t}))}}},{key:"getComments",value:function(t,e){o("getComments")}},{key:"__addComment",value:function(t,e,n){o("addComment")}},{key:"addComment",get:function(){return this.__addComment},set:function(t){this.__addComment=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return $("comment:add",e,n,t),t}))}}},{key:"__deleteComment",value:function(t,e){o("deleteComment")}},{key:"deleteComment",get:function(){return this.__deleteComment},set:function(t){this.__deleteComment=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&$("comment:delete",e,n),t}))}}}],e&&K(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),et=/[xy]/g;function nt(t){var e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}function rt(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(et,nt)}function ot(t){return ot="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ot(t)}function it(t,e,n){return e=ct(e),function(t,e){if(e&&("object"==ot(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,at()?Reflect.construct(e,n||[],ct(t).constructor):e.apply(t,n))}function at(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(at=function(){return!!t})()}function ct(t){return ct=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},ct(t)}function ut(t,e){return ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},ut(t,e)}var lt=function(t){function e(){var t;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(t=it(this,e,[{getAnnotations:function(t,e){return new Promise((function(n,r){var o=st(t).filter((function(t){return t.page===e&&"Annotation"===t.class}));n({documentId:t,pageNumber:e,annotations:o})}))}}])).getAnnotation=function(t,e){return Promise.resolve(st(t)[ft(t,e)])},t.addAnnotation=function(t,e,n){return new Promise((function(r,o){n.class="Annotation",n.uuid=rt(),n.page=e;var i=st(t);i.push(n),dt(t,i),r(n)}))},t.editAnnotation=function(t,e,n){return new Promise((function(r,o){var i=st(t);i[ft(t,e)]=n,dt(t,i),r(n)}))},t.deleteAnnotation=function(t,e){return new Promise((function(n,r){st(t).filter((function(t){return t.uuid===e}))[0];var o=ft(t,e);if(o>-1){var i=st(t);i.splice(o,1),dt(t,i)}n(!0)}))},t.getComments=function(t,e){return new Promise((function(n,r){n(st(t).filter((function(t){return"Comment"===t.class&&t.annotation===e})))}))},t.addComment=function(t,e,n){return new Promise((function(r,o){var i={class:"Comment",uuid:rt(),annotation:e,content:n},a=st(t);a.push(i),dt(t,a),r(i)}))},t.deleteComment=function(t,e){return new Promise((function(n,r){var o=st(t).filter((function(t){return t.uuid===e}))[0]||{};if(!o)return r("Could not find annotation");for(var i=-1,a=st(t),c=0,u=a.length;c-1&&(a.splice(i,1),dt(t,a)),n(!0)}))},t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&ut(t,e)}(e,t),n=e,Object.defineProperty(n,"prototype",{writable:!1}),n;var n}(tt);function st(t){return JSON.parse(localStorage.getItem("".concat(t,"/annotations")))||[]}function dt(t,e){localStorage.setItem("".concat(t,"/annotations"),JSON.stringify(e))}function ft(t,e){for(var n=-1,r=st(t),o=0,i=r.length;ot.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&void 0!==arguments[0]?arguments[0]:"user",r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(t=ht(this,e,[{getAnnotations:function(t,e){return new Promise((function(n,r){var o=At(t).filter((function(t){return t.page===e&&"Annotation"===t.class}));n({documentId:t,pageNumber:e,annotations:o})}))}}]))._userId=n,t._globalEdit=r,t.getAnnotation=function(e,n){return Promise.resolve(St(e,t._userId)[Ct(e,t._userId,n)])},t.addAnnotation=function(e,n,r){return new Promise((function(o,i){r.class="Annotation",r.uuid=rt(),r.page=n,r.userId=t._userId;var a=St(e,t._userId);a.push(r),Et(e,t._userId,a),o(r)}))},t.editAnnotation=function(e,n,r){return new Promise((function(o,i){!t._globalEdit&&r.userId&&r.userId!==t._userId&&i("Non-matching userId");var a=St(e,r.userId);a[Ct(e,r.userId,n)]=r,Et(e,r.userId,a),o(r)}))},t.deleteAnnotation=function(e,n){return new Promise((function(r,o){var i=At(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");var a=Ct(e,i.userId,n);if(a>-1){var c=St(e,i.userId);c.splice(a,1),Et(e,i.userId,c)}r(!0)}))},t.getComments=function(e,n){return new Promise((function(r,o){r(St(e,t._userId).filter((function(t){return"Comment"===t.class&&t.annotation===n})))}))},t.addComment=function(e,n,r){return new Promise((function(o,i){var a={class:"Comment",uuid:rt(),annotation:n,content:r,userId:t._userId},c=St(e,t._userId);c.push(a),Et(e,t._userId,c),o(a)}))},t.deleteComment=function(e,n){return new Promise((function(r,o){var i=At(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");for(var a=-1,c=St(e,i.userId),u=0,l=c.length;u-1&&(c.splice(a,1),Et(e,i.userId,c)),r(!0)}))},t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&wt(t,e)}(e,t),n=e,(r=[{key:"userId",get:function(){return this._userId}}])&&vt(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(tt);function At(t){for(var e=[],n=new RegExp("".concat(t,"/(.*)/annotations")),r=0;r-1&&e.push.apply(e,function(t){if(Array.isArray(t))return yt(t)}(o=JSON.parse(localStorage.getItem(localStorage.key(r))))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(o)||function(t,e){if(t){if("string"==typeof t)return yt(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?yt(t,e):void 0}}(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());var o;return e}function St(t,e){return JSON.parse(localStorage.getItem("".concat(t,"/").concat(e,"/annotations")))||[]}function Et(t,e,n){localStorage.setItem("".concat(t,"/").concat(e,"/annotations"),JSON.stringify(n))}function Ct(t,e,n){for(var r=-1,o=St(t,e),i=0,a=o.length;it.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&n+kt.offsetHeight0&&r+kt.offsetWidth-1&&(a="cx",c="cy"),"point"!==r){if(["area","highlight","textbox","circle","fillcircle","emptycircle"].indexOf(r)>-1){var u=F([jt,Pt],o),l=F([kt.offsetLeft,kt.offsetTop],o),s={x:l[0]-u[0],y:l[1]-u[1]};"textbox"===r&&(n=[n[0].firstChild]),It(n).forEach((function(e,n){var r=parseInt(e.getAttribute(a),10),o=parseInt(e.getAttribute(c),10);0!==s.y&&(o+=s.y,e.setAttribute(c,o),t.rectangles&&n-1&&t.getBBox){var a=t.getBBox();o=(e.width-a.width)/2,i=(e.height-a.height)/2,n=a.width,r=a.height}var c=function(t){for(var e=t;(e=e.parentNode)&&e!==document&&"SVG"!==e.nodeName.toUpperCase(););var n=e.getBoundingClientRect();return{offsetLeft:n.left,offsetTop:n.top}}(t),u=c.offsetLeft,l=c.offsetTop;return{top:e.top-l+i,left:e.left-u+o,bottom:e.bottom-l-i,right:e.right-u-o,width:n,height:r}}(t),i=o.left-3,a=o.top-3;kt.setAttribute("id","pdf-annotate-edit-overlay"),kt.setAttribute("data-target-id",r),kt.style.boxSizing="content-box",kt.style.position="absolute",kt.style.top="".concat(a,"px"),kt.style.left="".concat(i,"px"),kt.style.width="".concat(o.width,"px"),kt.style.height="".concat(o.height,"px"),kt.style.border="".concat(3,"px solid ").concat(P),kt.style.borderRadius="".concat(3,"px"),kt.style.zIndex=20100,e.innerHTML="×",e.setAttribute("href","javascript://"),e.style.background="#fff",e.style.borderRadius="20px",e.style.border="1px solid #bbb",e.style.color="#bbb",e.style.fontSize="16px",e.style.padding="2px",e.style.textAlign="center",e.style.textDecoration="none",e.style.position="absolute",e.style.top="-13px",e.style.right="-13px",e.style.width="25px",e.style.height="25px",kt.appendChild(e),n.appendChild(kt),document.addEventListener("click",qt),document.addEventListener("keyup",zt),document.addEventListener("mousedown",Ft),e.addEventListener("click",Bt),e.addEventListener("mouseover",(function(){e.style.color="#35A4DC",e.style.borderColor="#999",e.style.boxShadow="0 1px 1px #ccc"})),e.addEventListener("mouseout",(function(){e.style.color="#bbb",e.style.borderColor="#bbb",e.style.boxShadow=""})),kt.addEventListener("mouseover",(function(){Rt||(e.style.display="")})),kt.addEventListener("mouseout",(function(){e.style.display="none"}))}(t)}var Qt,Ht,Dt,Wt=!1,$t=!1,Jt=[];function Vt(t){Dt=null,Jt=[],T(t.clientX,t.clientY)&&($t=!0,t.preventDefault())}function Gt(t){!function(t,e){var n;if($t&&($t=!1,Jt.length>1&&(n=T(t,e)))){var r=H(n),o=r.documentId,i=r.pageNumber;gn.getStoreAdapter().addAnnotation(o,i,{type:"drawing",width:Qt,color:Ht,lines:Jt}).then((function(t){Dt&&n.removeChild(Dt),j(n,t)}))}}(t.clientX,t.clientY)}function Kt(t){T(t.clientX,t.clientY)&&$t&&function(t,e){var n=T(t,e);if(n){var r=n.getBoundingClientRect(),o=F([t-r.left,e-r.top],n);o[0]=o[0].toFixed(2),o[1]=o[1].toFixed(2),Jt.push(o),Jt.length<=1||(Dt&&n.removeChild(Dt),Dt=j(n,{type:"drawing",color:Ht,width:Qt,lines:Jt}))}}(t.clientX,t.clientY)}function Zt(t){27===t.keyCode&&(Jt=null,Dt.parentNode.removeChild(Dt),document.removeEventListener("pointermove",Kt),document.removeEventListener("pointerup",Gt))}var te,ee,ne,re,oe,ie,ae=!1;function ce(t){var e=B(t.clientX,t.clientY);if(null!==e){var n=e.getAttribute("data-pdf-annotate-type");if("circle"===n||"fillcircle"===n||"emptycircle"===n){var r=R(e),o=H(r).documentId,i=e.getAttribute("data-pdf-annotate-id");gn.getStoreAdapter().getAnnotation(o,i).then((function(t){if(t){ne=null,re=[];var e=X([t.cx,t.cy],r),n=r.getBoundingClientRect();ie=e[0]+n.left,oe=e[1]+n.top,document.addEventListener("mousemove",le),document.addEventListener("mouseup",ue)}}))}}}function ue(t){var e;if(re.length>1&&(e=T(t.clientX,t.clientY))){var n=H(e),r=n.documentId,o=n.pageNumber;gn.getStoreAdapter().addAnnotation(r,o,{type:"arrow",width:te,color:ee,lines:re}).then((function(t){ne&&e.removeChild(ne),j(e,t)}))}document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",ue)}function le(t){!function(t,e){var n=T(t,e);if(n){var r=n.getBoundingClientRect(),o=F([t-r.left,e-r.top],n);re.length<2?re.push(o):(re[1]=o,ne&&n.removeChild(ne),ne=j(n,{type:"arrow",color:ee,width:te,lines:re}))}}(0===re.length?ie:t.clientX,0===re.length?oe:t.clientY)}function se(t){27===t.keyCode&&(re=null,ne.parentNode.removeChild(ne),document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",ue))}function de(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n=1||r>=1)for(var o=Math.round(Math.max(n,r)),i=Math.min(n,r)/o,a=n0){var t=parseInt(ge.style.left,10),e=parseInt(ge.style.top,10),n=ge.value.trim(),r=T(t,e);if(!r)return;var o=r.getBoundingClientRect(),i=H(r),a=i.documentId,c=i.pageNumber,u=Object.assign({type:"point"},Y(r,{x:t-o.left,y:e-o.top}));gn.getStoreAdapter().addAnnotation(a,c,u).then((function(t){gn.getStoreAdapter().addComment(a,t.uuid,n),j(r,t)}))}Ee()}function Ee(){ge.removeEventListener("blur",xe),ge.removeEventListener("keyup",Ae),document.body.removeChild(ge),ge=null}function Ce(t){return function(t){if(Array.isArray(t))return Le(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Le(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Le(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&t[0].width>0&&t[0].height>0)return t}catch(t){}return null}()))Te(Ie,Ce(e).map((function(t){return{top:t.top,left:t.left,width:t.width,height:t.height}})));else if("area"===Ie&&_e){var n=_e.parentNode.querySelector(Lt.annotationSvgQuery()).getBoundingClientRect();Te(Ie,[{top:parseInt(_e.style.top,10)+n.top,left:parseInt(_e.style.left,10)+n.left,width:parseInt(_e.style.width,10),height:parseInt(_e.style.height,10)}]),_e.parentNode.removeChild(_e),_e=null,document.removeEventListener("mousemove",Pe),Q()}}function Re(t){27===t.keyCode&&(window.getSelection().removeAllRanges(),_e&&_e.parentNode&&(_e.parentNode.removeChild(_e),_e=null,document.removeEventListener("mousemove",Pe)))}function Te(t,e,n){var r,o=T(e[0].left,e[0].top);if(o){var i=o.getBoundingClientRect();if(n||("highlight"===t?n="FFFF00":"strikeout"===t&&(n="FF0000")),r={type:t,color:n,rectangles:Ce(e).map((function(e){var n=0;return"strikeout"===t&&(n=e.height/2),function(t,e,n){var r=[t.x,t.y],o=[t.x+t.width,t.y+t.height];return r=F(r,e,n),o=F(o,e,n),{x:Math.min(r[0],o[0]),y:Math.min(r[1],o[1]),width:Math.abs(o[0]-r[0]),height:Math.abs(o[1]-r[1])}}({y:e.top+n-i.top,x:e.left-i.left,width:e.width,height:e.height},o)})).filter((function(t){return t.width>0&&t.height>0&&t.x>-1&&t.y>-1}))},0!==r.rectangles.length){if("area"===t){var a=r.rectangles[0];delete r.rectangles,r.x=a.x,r.y=a.y,r.width=a.width,r.height=a.height}var c=H(o),u=c.documentId,l=c.pageNumber;gn.getStoreAdapter().addAnnotation(u,l,r).then((function(t){j(o,t)}))}}}var Be,qe=!1,ze=10,Fe="0000FF";function Xe(t){var e=T(t.clientX,t.clientY);if(e){var n=e.getBoundingClientRect();!function(t,e,n,r,o){var i=F([n.x,n.y],t),a={type:e,color:o,cx:i[0],cy:i[1],r},c=H(t),u=c.documentId,l=c.pageNumber;gn.getStoreAdapter().addAnnotation(u,l,a).then((function(e){j(t,e)}))}(e,Be,{x:t.clientX-n.left,y:t.clientY-n.top},ze,Fe)}}var Ye,Ue=!1,Qe=localStorage.getItem("text/size")||12,He=localStorage.getItem("text/color")||"#000000";function De(t){!Ye&&T(t.clientX,t.clientY)&&t.srcElement.classList.contains("annotationLayer")&&((Ye=document.createElement("textarea")).setAttribute("id","pdf-annotate-text-input"),Ye.setAttribute("placeholder","Enter text... SHIFT + ENTER for new line"),Ye.style.border="3px solid ".concat(P),Ye.style.borderRadius="3px",Ye.style.position="fixed",Ye.style.top="".concat(t.clientY,"px"),Ye.style.left="".concat(t.clientX,"px"),Ye.style.fontSize="".concat(Qe,"px"),Ye.style.zIndex="41",Ye.addEventListener("blur",We),Ye.addEventListener("keyup",$e),document.body.appendChild(Ye),Ye.focus())}function We(){Je()}function $e(t){27===t.keyCode?Ve():13!==t.keyCode||t.shiftKey||Je()}function Je(){var t=Ye.value?Ye.value.replace(/ +$/,""):"";if(t.length>0){var e=parseInt(Ye.style.left,10),n=parseInt(Ye.style.top,10),r=T(e,n);if(!r)return;var o=Qe,i=H(r),a=i.documentId,c=i.pageNumber,u=i.viewport,l=1/u.scale,s=r.getBoundingClientRect(),d=F([e-s.left,n-s.top+o],r,u),f={type:"textbox",size:Qe*l,color:He,content:t,x:d[0],y:d[1],rotation:-u.rotation};gn.getStoreAdapter().addAnnotation(a,c,f).then((function(t){j(r,t)}))}Ve()}function Ve(){Ye&&(Ye.removeEventListener("blur",We),Ye.removeEventListener("keyup",$e),document.body.removeChild(Ye),Ye=null)}function Ge(t,e){var n=document.createElement("div"),r=document.createTextNode(t);return n.appendChild(r),n.setAttribute("id","pdf-annotate-screenreader-".concat(e)),n.style.position="absolute",n.style.left="-10000px",n.style.top="auto",n.style.width="1px",n.style.height="1px",n.style.overflow="hidden",n}function Ke(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n"===l[l.length-1])for(;l.length&&(s.unshift(l.pop()),"<"!==s[0]););if(u.innerHTML=l.join(""),c+Y(a,{width:u.getBoundingClientRect().width}).width<=e)break;s.unshift(l.pop())}return i.innerHTML=l.join("")+t.outerHTML+s.join(""),u.parentNode.removeChild(u),!0}function tn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n div"))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(o)||function(t,e){if(t){if("string"==typeof t)return tn(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?tn(t,e):void 0}}(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();n=z(i,{y:n}).y+a.top,e=z(i,{x:e}).x+a.left;for(var u=0,l=c.length;u1&&void 0!==arguments[1]?arguments[1]:0;switch(t.type){case"highlight":case"strikeout":var n=t.rectangles,r=n[0],o=n[n.length-1];Ze(Ge("Begin ".concat(t.type," annotation ").concat(e),t.uuid),r.x,r.y,t.page,!0),Ze(Ge("End ".concat(t.type," annotation ").concat(e),"".concat(t.uuid,"-end")),o.x+o.width,o.y,t.page,!1);break;case"textbox":case"point":var i="textbox"===t.type?" (content: ".concat(t.content,")"):"";en(Ge("".concat(t.type," annotation ").concat(e).concat(i),t.uuid),t.x,t.y,t.page);break;case"drawing":case"area":var a=void 0!==t.x?t.x:t.lines[0][0],c=void 0!==t.y?t.y:t.lines[0][1];en(Ge("Unlabeled drawing",t.uuid),a,c,t.page);break;case"circle":case"fillcircle":case"emptycircle":var u=void 0!==t.cx?t.cx:t.lines[0][0],l=void 0!==t.cy?t.cy:t.lines[0][1];en(Ge("Unlabeled drawing",t.uuid),u,l,t.page)}on.includes(t.type)&&rn(t.documentId,t.uuid)}(t,e+1)}))}))}function sn(t,e){return t.yt.length)&&(e=t.length);for(var n=0,r=Array(e);n\n \n \n';function vn(t){if(Math.floor(t)===t)return[t,1];var e=1/t;if(e>8)return[1,8];if(Math.floor(e)===e)return[1,e];for(var n=t>1?e:t,r=0,o=1,i=1,a=1;;){var c=r+i,u=o+a;if(u>8)break;n<=c/u?(i=c,a=u):(r=c,o=u)}return n-r/o0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";Qt=Math.round(100*parseFloat(t))/100,Ht=e},disablePoint:function(){be&&(be=!1,document.removeEventListener("mouseup",we))},enablePoint:function(){be||(be=!0,document.addEventListener("mouseup",we))},disableRect:function(){Oe&&(Oe=!1,document.removeEventListener("mouseup",Me),document.removeEventListener("mousedown",je),document.removeEventListener("keyup",Re))},enableRect:function(t){Ie=t,Oe||(Oe=!0,document.addEventListener("mouseup",Me),document.addEventListener("mousedown",je),document.addEventListener("keyup",Re))},disableCircle:function(){qe&&(qe=!1,document.removeEventListener("mouseup",Xe))},enableCircle:function(t){Be=t,qe||(qe=!0,document.addEventListener("mouseup",Xe))},setCircle:function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";ze=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,10),Fe=t},addCircle:function(t,e){var n=Be;Be=t,Xe(e),Be=n},disableArrow:function(){ae&&(ae=!1,document.removeEventListener("mousedown",ce),document.removeEventListener("keyup",se),Q())},enableArrow:function(){ae||(ae=!0,document.addEventListener("mousedown",ce),document.addEventListener("keyup",se),U())},setArrow:function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";te=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,10),ee=t},disableEraser:function(){document.removeEventListener("pointermove",me),document.removeEventListener("pointerdown",ye),document.removeEventListener("pointerup",ve)},enableEraser:function(){document.addEventListener("pointermove",me),document.addEventListener("pointerdown",ye),document.addEventListener("pointerup",ve)},disableText:function(){Ue&&(Ue=!1,document.removeEventListener("mouseup",De))},enableText:function(){Ue||(Ue=!0,document.addEventListener("mouseup",De))},setText:function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";Qe=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,10),He=t},createPage:function(t){var e=document.createElement("div");e.innerHTML=yn;var n=e.children[0],r=n.querySelector("canvas");return n.setAttribute("id","pageContainer".concat(t)),n.setAttribute("data-page-number",t),r.mozOpaque=!0,r.setAttribute("id","page".concat(t)),n},renderPage:function(t,e){var n=e.documentId,r=e.pdfDocument,o=e.scale,i=e.rotate,a=new pdfjsViewer.EventBus;return Promise.all([r.getPage(t),gn.getAnnotations(n,t)]).then((function(e){var n,r,c=(r=2,function(t){if(Array.isArray(t))return t}(n=e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(n,r)||function(t,e){if(t){if("string"==typeof t)return pn(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?pn(t,e):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=c[0],l=c[1],s=document.getElementById("pageContainer".concat(t)),d=s.querySelector(Lt.annotationClassQuery()),f=s.querySelector(".canvasWrapper canvas").getContext("2d",{alpha:!1}),p=(i+u.rotate)%360,y=u.getViewport({scale:o,rotation:p}),v=function(t,e,n){var r,o,i=document.getElementById("pageContainer".concat(t)),a=i.querySelector(".canvasWrapper canvas"),c=i.querySelector(Lt.annotationClassQuery()),u=i.querySelector(".canvasWrapper"),l=i.querySelector(Lt.textClassQuery()),s=(r=n,{sx:o=(window.devicePixelRatio||1)/(r.webkitBackingStorePixelRatio||r.mozBackingStorePixelRatio||r.msBackingStorePixelRatio||r.oBackingStorePixelRatio||r.backingStorePixelRatio||1),sy:o,scaled:1!==o}),d=s.scaled?[s.sx,0,0,s.sy,0,0]:null,f=vn(s.sx),p=vn(s.sy);return i.style.visibility="",a.width=mn(e.width*s.sx,f[0]),a.height=mn(e.height*s.sy,p[0]),a.style.width=mn(e.width,f[1])+"px",a.style.height=mn(e.height,f[1])+"px",c.setAttribute("width",e.width),c.setAttribute("height",e.height),c.style.width="".concat(e.width,"px"),c.style.height="".concat(e.height,"px"),i.style.width="".concat(e.width,"px"),i.style.height="".concat(e.height,"px"),u.style.width="".concat(e.width,"px"),u.style.height="".concat(e.height,"px"),l.style.width="".concat(e.width,"px"),l.style.height="".concat(e.height,"px"),d}(t,y,f);return Promise.all([u.render({canvasContext:f,viewport:y,transform:v}).promise,gn.render(d,y,l)]).then((function(){return u.getTextContent({normalizeWhitespace:!0}).then((function(e){return new Promise((function(n,r){var o=s.querySelector(Lt.textClassQuery()),i=(new pdfjsViewer.DefaultTextLayerFactory).createTextLayerBuilder(o,t-1,y,!1,a);i.setTextContent(e),i.render(),setTimeout((function(){try{ln(l.annotations),n()}catch(t){r(t)}}))}))}))})).then((function(){return s.setAttribute("data-loaded","true"),[u,l]}))}))}},gn={findAnnotationAtPoint:B,findSVGContainer:R,convertToScreenPoint:X,StoreAdapter:tt,LocalStoreAdapter:lt,LocalUserStoreAdapter:xt,__storeAdapter:new tt,getStoreAdapter:function(){return this.__storeAdapter},setStoreAdapter:function(t){this.__storeAdapter=t},UI:hn,render:function(t,e,n){return new Promise((function(r,o){return t.setAttribute("data-pdf-annotate-container",!0),t.setAttribute("data-pdf-annotate-viewport",JSON.stringify(e)),t.removeAttribute("data-pdf-annotate-document"),t.removeAttribute("data-pdf-annotate-page"),n?(t.setAttribute("data-pdf-annotate-document",n.documentId),t.setAttribute("data-pdf-annotate-page",n.pageNumber),Array.isArray(n.annotations)&&0!==n.annotations.length?(n.annotations.forEach((function(n){var r=t.querySelector('[data-pdf-annotate-id="'+n.uuid+'"]');r?function(t,e,n){n||(n=JSON.parse(t.getAttribute("data-pdf-annotate-viewport"))),e&&(e=O(e,n))}(t,r,e):j(t,n,e)})),void r(t)):r(t)):(t.innerHTML="",r(t))}))},getAnnotations:function(t,e){var n;return(n=this.getStoreAdapter()).getAnnotations.apply(n,arguments)},config:Lt,uuid:rt},bn=gn;return r})())); //# sourceMappingURL=pdf-annotate.js.map \ No newline at end of file diff --git a/dist/pdf-annotate.js.map b/dist/pdf-annotate.js.map index 55014caf..11fbd9a9 100644 --- a/dist/pdf-annotate.js.map +++ b/dist/pdf-annotate.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://PDFAnnotate/webpack/universalModuleDefinition","webpack://PDFAnnotate/webpack/bootstrap","webpack://PDFAnnotate/./node_modules/events/events.js","webpack://PDFAnnotate/./src/utils/abstractFunction.js","webpack://PDFAnnotate/./src/utils/setAttributes.js","webpack://PDFAnnotate/./src/utils/normalizeColor.js","webpack://PDFAnnotate/./src/render/renderRect.js","webpack://PDFAnnotate/./src/render/renderText.js","webpack://PDFAnnotate/./src/render/renderCircle.js","webpack://PDFAnnotate/./src/utils/mathUtils.js","webpack://PDFAnnotate/./src/render/renderArrow.js","webpack://PDFAnnotate/./src/render/appendChild.js","webpack://PDFAnnotate/./src/render/renderLine.js","webpack://PDFAnnotate/./src/render/renderPoint.js","webpack://PDFAnnotate/./src/render/renderPath.js","webpack://PDFAnnotate/./src/UI/utils.js","webpack://PDFAnnotate/./src/UI/event.js","webpack://PDFAnnotate/./src/adapter/StoreAdapter.js","webpack://PDFAnnotate/./src/utils/uuid.js","webpack://PDFAnnotate/./src/adapter/LocalStoreAdapter.js","webpack://PDFAnnotate/./src/adapter/LocalUserStoreAdapter.js","webpack://PDFAnnotate/./src/config.js","webpack://PDFAnnotate/./src/UI/edit.js","webpack://PDFAnnotate/./src/UI/pen.js","webpack://PDFAnnotate/./src/UI/arrow.js","webpack://PDFAnnotate/./src/UI/eraser.js","webpack://PDFAnnotate/./src/UI/point.js","webpack://PDFAnnotate/./src/UI/rect.js","webpack://PDFAnnotate/./src/UI/circle.js","webpack://PDFAnnotate/./src/UI/text.js","webpack://PDFAnnotate/./src/a11y/createScreenReaderOnly.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinElement.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinChildren.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderComment.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderComments.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderHint.js","webpack://PDFAnnotate/./src/a11y/initEventHandlers.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderHints.js","webpack://PDFAnnotate/./src/UI/page.js","webpack://PDFAnnotate/./src/UI/index.js","webpack://PDFAnnotate/./src/PDFJSAnnotate.js","webpack://PDFAnnotate/./src/render/index.js","webpack://PDFAnnotate/./index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","EventEmitter","init","this","once","emitter","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","events","existing","warning","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","arr","ret","Array","unwrapListeners","arrayClone","listenerCount","copy","addEventListener","wrapListener","arg","removeEventListener","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","keys","rawListeners","eventNames","abstractFunction","UPPER_REGEX","BLACKLIST","setAttributes","node","attributes","forEach","setAttribute","indexOf","replace","match","toLowerCase","keyCase","REGEX_HASHLESS_HEX","normalizeColor","color","test","createRect","rect","document","createElementNS","x","y","width","height","renderText","a","text","fill","fontSize","size","transform","rotation","style","textElement","textContent","_step","lines","split","getAttribute","_iterator","_createForOfIteratorHelper","done","line","tspan","toString","innerHTML","appendChild","e","f","insertLineBreaks","content","g","renderCircle","circle","cx","cy","createCircle","stroke","translate","rotate","angle","Math","PI","cosValue","cos","sinValue","sin","scale","makePoint","z","makeVector","xcoord","ycoord","zcoord","makeVectorFromPoints","pt1","pt2","addVector","pt","v","multiplyVector","scalar","magnitude","sqrt","pow","negateVector","unitVector","mag","renderArrow","u","arrow","p1","p2","pt0","unitX","unitZ","unitY","thickness","A","B","C","D","G","F","E","points","isFirefox","navigator","userAgent","getTranslation","viewport","trans","nodeName","parseInt","path","querySelector","svg","parentNode","assign","annotation","child","group","JSON","parse","fillOpacity","rectangles","renderRect","strokeWidth","x1","y1","x2","y2","outerSVG","innerSVG","SIZE","viewBox","renderPoint","join","renderPath","uuid","filter","transformChild","userSelectStyleSheet","createElement","findSVGContainer","toUpperCase","findSVGAtPoint","elements","querySelectorAll","el","pointIntersectsRect","getBoundingClientRect","findAnnotationAtPoint","candidate","elementFromPoint","top","bottom","left","right","getOffsetAnnotationRect","extraOffsetWidth","extraOffsetHeight","tagName","getBBox","bbox","_getOffset","offsetLeft","offsetTop","getOffset","scaleUp","result","getMetadata","convertToSvgPoint","xform","offset","convertToScreenPoint","scaleDown","disableUserSelect","head","enableUserSelect","removeChild","documentId","pageNumber","clickNode","fireEvent","clientX","clientY","StoreAdapter","_this","definition","_classCallCheck","__getAnnotations","fn","then","annotations","annotationId","__addAnnotation","__editAnnotation","__deleteAnnotation","success","__addComment","comment","commentId","__deleteComment","REGEXP","replacement","random","LocalStoreAdapter","_StoreAdapter","_inherits","_super","_createSuper","getAnnotations","page","getAnnotation","findAnnotation","addAnnotation","updateAnnotations","editAnnotation","deleteAnnotation","splice","getComments","addComment","class","deleteComment","localStorage","getItem","setItem","stringify","LocalUserStoreAdapter","userId","globalEdit","getAllAnnotations","_userId","_globalEdit","all_annotations","re","RegExp","search","_toConsumableArray","annotationLayerName","textLayerName","annotationSvgQuery","annotationClassQuery","textClassQuery","overlay","dragOffsetX","dragOffsetY","dragStartX","dragStartY","_enabled","isDragging","destroyEditOverlay","handleDocumentClick","handleDocumentKeyup","handleDocumentMousedown","handleDocumentMousemove","handleDocumentMouseup","config","PDFJSAnnotate","getStoreAdapter","getElementById","keyTest","keyCode","preventDefault","background","cursor","display","maxY","maxX","offsetHeight","offsetWidth","attribX","attribY","modelStart","modelEnd","modelDelta","firstChild","modelX","modelY","setTimeout","handleAnnotationClick","anchor","id","styleLeft","styleTop","boxSizing","border","borderRadius","zIndex","padding","textAlign","textDecoration","borderColor","boxShadow","createEditOverlay","_penSize","_penColor","_candraw","handleDocumentPointerdown","handleDocumentPointerup","_getMetadata","saveToStorage","handleDocumentPointermove","point","toFixed","savePoint","originY","originX","_getMetadata2","_canerase","previousPoint","handleDocumentDown","handleDocumentUp","erase","handleDocumentMouseMove","check","diffX","abs","diffY","maxSteps","round","max","subStepSize","min","smallerTest","startPoint","_i","_check","parentElement","input","handleInputBlur","handleInputKeyup","body","focus","closeInput","trim","_type","rects","getSelection","getRangeAt","getClientRects","getSelectionRects","saveRect","map","removeAllRanges","boundingRect","convertToSvgRect","_circleRadius","_circleColor","radius","svg_pt","saveCircle","_textSize","_textColor","srcElement","classList","contains","saveText","shiftKey","createScreenReaderOnly","createTextNode","overflow","insertElementWithinElement","insertBefore","textLayerElementFromPoint","temp","cloneNode","tail","outerHTML","insertElementWithinChildren","nodes","textLayer","insertScreenReaderComment","item","renderScreenReaderComments","comments","isArray","COMMENT_TYPES","reorderAnnotationsByType","removeAnnotation","renderScreenReaderHints","removeElementById","insertComment","removeComment","elementId","SORT_TYPES","sortBy","sort","num","first","last","includes","insertScreenReaderHint","sortByPoint","b","sortByRectPoint","lineA","lineB","PAGE_TEMPLATE","approximateFraction","floor","xinv","x_","q","roundToDivide","div","disableEdit","enableEdit","disablePen","enablePen","setPen","penSize","penColor","parseFloat","disablePoint","enablePoint","disableRect","enableRect","disableCircle","enableCircle","setCircle","circleRadius","circleColor","addCircle","oldType","disableArrow","enableArrow","setArrow","disableEraser","enableEraser","disableText","enableText","setText","textSize","textColor","createPage","children","canvas","mozOpaque","renderPage","renderOptions","pdfDocument","eventBus","pdfjsViewer","EventBus","all","getPage","_ref","_ref2","_slicedToArray","pdfPage","canvasContext","getContext","alpha","totalRotation","getViewport","wrapper","outputScale","ctx","devicePixelRatio","backingStoreRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","pixelRatio","sx","sy","scaled","sfx","sfy","visibility","scalePage","render","promise","getTextContent","normalizeWhitespace","textLayerBuilder","DefaultTextLayerFactory","createTextLayerBuilder","setTextContent","__storeAdapter","setStoreAdapter","adapter","UI","data","removeAttribute","_this$getStoreAdapter"],"mappings":"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","file":"pdf-annotate.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PDFAnnotate\"] = factory();\n\telse\n\t\troot[\"PDFAnnotate\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/**\r\n * Throw an Error for an abstract function that hasn't been implemented.\r\n *\r\n * @param {String} name The name of the abstract function\r\n */\r\nexport default function abstractFunction(name) {\r\n throw new Error(name + ' is not implemented');\r\n}\r\n","const UPPER_REGEX = /[A-Z]/g;\r\n\r\n// Don't convert these attributes from camelCase to hyphenated-attributes\r\nconst BLACKLIST = [\r\n 'viewBox'\r\n];\r\n\r\nlet keyCase = (key) => {\r\n if (BLACKLIST.indexOf(key) === -1) {\r\n key = key.replace(UPPER_REGEX, match => '-' + match.toLowerCase());\r\n }\r\n return key;\r\n};\r\n\r\n/**\r\n * Set attributes for a node from a map\r\n *\r\n * @param {Node} node The node to set attributes on\r\n * @param {Object} attributes The map of key/value pairs to use for attributes\r\n */\r\nexport default function setAttributes(node, attributes) {\r\n Object.keys(attributes).forEach((key) => {\r\n node.setAttribute(keyCase(key), attributes[key]);\r\n });\r\n}\r\n","const REGEX_HASHLESS_HEX = /^([a-f0-9]{6}|[a-f0-9]{3})$/i;\r\n\r\n/**\r\n * Normalize a color value\r\n *\r\n * @param {String} color The color to normalize\r\n * @return {String}\r\n */\r\nexport default function normalizeColor(color) {\r\n if (REGEX_HASHLESS_HEX.test(color)) {\r\n color = `#${color}`;\r\n }\r\n return color;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create SVGRectElements from an annotation definition.\r\n * This is used for anntations of type `area` and `highlight`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGGElement|SVGRectElement} A group of all rects to be rendered\r\n */\r\nexport default function renderRect(a) {\r\n if (a.type === 'highlight') {\r\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\r\n setAttributes(group, {\r\n fill: normalizeColor(a.color || '#ff0'),\r\n fillOpacity: 0.2\r\n });\r\n\r\n a.rectangles.forEach((r) => {\r\n group.appendChild(createRect(r));\r\n });\r\n\r\n return group;\r\n }\r\n else {\r\n let rect = createRect(a);\r\n setAttributes(rect, {\r\n stroke: normalizeColor(a.color || '#f00'),\r\n fill: 'none'\r\n });\r\n\r\n return rect;\r\n }\r\n}\r\n\r\nfunction createRect(r) {\r\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n\r\n setAttributes(rect, {\r\n x: r.x,\r\n y: r.y,\r\n width: r.width,\r\n height: r.height\r\n });\r\n\r\n return rect;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Wrap each line of given text in a `` element and append these\r\n * lines to the given SVGTextElement\r\n *\r\n * @param {SVGTextElement} textElement A text element to hold the split text\r\n * @param {String} textContent String to render with line breaks\r\n */\r\nfunction insertLineBreaks(textElement, textContent) {\r\n const lines = (textContent || '').split('\\n');\r\n // can't use dy attribute here since we want empty lines to take up space as well,\r\n // so we will update y manually based on font size\r\n const x = textElement.getAttribute('x');\r\n let y = Number(textElement.getAttribute('y'));\r\n const size = Number(textElement.getAttribute('font-size'));\r\n for (const line of lines) {\r\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\r\n tspan.setAttribute('y', y.toString());\r\n tspan.setAttribute('x', x);\r\n tspan.innerHTML = line;\r\n textElement.appendChild(tspan);\r\n\r\n y += size;\r\n }\r\n}\r\n\r\n/**\r\n * Create SVGTextElement from an annotation definition.\r\n * This is used for anntations of type `textbox`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGTextElement} A text to be rendered\r\n */\r\nexport default function renderText(a) {\r\n // Text should be rendered at 0 degrees relative to\r\n // document rotation\r\n let text = document.createElementNS('http://www.w3.org/2000/svg', 'text');\r\n setAttributes(text, {\r\n x: a.x,\r\n y: a.y,\r\n fill: normalizeColor(a.color || '#000'),\r\n fontSize: a.size,\r\n transform: `rotate(${a.rotation})`,\r\n style: 'white-space: pre'\r\n });\r\n\r\n insertLineBreaks(text, a.content);\r\n\r\n let g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\r\n g.appendChild(text);\r\n\r\n return g;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create an SVGCircleElement from an annotation definition.\r\n * This is used for annotations of type `circle`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGGElement|SVGCircleElement} A circle to be rendered\r\n */\r\nexport default function renderCircle(a) {\r\n let circle = createCircle(a);\r\n let color = normalizeColor(a.color || '#f00');\r\n\r\n if (a.type === 'circle') {\r\n setAttributes(circle, {\r\n stroke: color,\r\n fill: 'none',\r\n 'stroke-width': 5\r\n });\r\n }\r\n if (a.type === 'emptycircle') {\r\n setAttributes(circle, {\r\n stroke: color,\r\n fill: 'none',\r\n 'stroke-width': 2\r\n });\r\n }\r\n\r\n if (a.type === 'fillcircle') {\r\n setAttributes(circle, {\r\n stroke: color,\r\n fill: color,\r\n 'stroke-width': 5\r\n });\r\n }\r\n\r\n return circle;\r\n}\r\n\r\nfunction createCircle(a) {\r\n let circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\r\n setAttributes(circle, {\r\n cx: a.cx,\r\n cy: a.cy,\r\n r: a.r\r\n });\r\n\r\n return circle;\r\n}\r\n","// Transform point by matrix\r\n//\r\nexport function applyTransform(p, m) {\r\n return [\r\n p[0] * m[0] + p[1] * m[2] + m[4],\r\n p[0] * m[1] + p[1] * m[3] + m[5]\r\n ];\r\n};\r\n\r\n// Transform point by matrix inverse\r\n//\r\nexport function applyInverseTransform(p, m) {\r\n let d = m[0] * m[3] - m[1] * m[2];\r\n return [\r\n (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d,\r\n (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d\r\n ];\r\n};\r\n\r\n// Concatenates two transformation matrices together and returns the result.\r\nexport function transform(m1, m2) {\r\n return [\r\n m1[0] * m2[0] + m1[2] * m2[1],\r\n m1[1] * m2[0] + m1[3] * m2[1],\r\n m1[0] * m2[2] + m1[2] * m2[3],\r\n m1[1] * m2[2] + m1[3] * m2[3],\r\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\r\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\r\n ];\r\n};\r\n\r\nexport function translate(m, x, y) {\r\n return [\r\n m[0],\r\n m[1],\r\n m[2],\r\n m[3],\r\n m[0] * x + m[2] * y + m[4],\r\n m[1] * x + m[3] * y + m[5]\r\n ];\r\n};\r\n\r\nexport function rotate(m, angle) {\r\n angle = angle * Math.PI / 180;\r\n\r\n let cosValue = Math.cos(angle);\r\n let sinValue = Math.sin(angle);\r\n\r\n return [\r\n m[0] * cosValue + m[2] * sinValue,\r\n m[1] * cosValue + m[3] * sinValue,\r\n m[0] * (-sinValue) + m[2] * cosValue,\r\n m[1] * (-sinValue) + m[3] * cosValue,\r\n m[4],\r\n m[5]\r\n ];\r\n};\r\n\r\nexport function scale(m, x, y) {\r\n return [\r\n m[0] * x,\r\n m[1] * x,\r\n m[2] * y,\r\n m[3] * y,\r\n m[4],\r\n m[5]\r\n ];\r\n};\r\n\r\nexport function makePoint(x, y, z) {\r\n return { x: x, y: y, z: z };\r\n};\r\n\r\nexport function makeVector(xcoord, ycoord, zcoord) {\r\n return { xcoord: xcoord, ycoord: ycoord, zcoord: zcoord };\r\n};\r\n\r\nexport function makeVectorFromPoints(pt1, pt2) {\r\n let xcoord = pt2.x - pt1.x;\r\n let ycoord = pt2.y - pt1.y;\r\n let zcoord = pt2.z - pt1.z;\r\n return makeVector(xcoord, ycoord, zcoord);\r\n};\r\n\r\nexport function addVector(pt, v) {\r\n return makePoint(pt.x + v.xcoord, pt.y + v.ycoord, pt.z + v.zcoord);\r\n};\r\n\r\nexport function multiplyVector(v, scalar) {\r\n return makeVector(v.xcoord * scalar, v.ycoord * scalar, v.zcoord * scalar);\r\n};\r\n\r\nexport function magnitude(v) {\r\n return Math.sqrt(\r\n Math.pow(v.xcoord, 2) + Math.pow(v.ycoord, 2) + Math.pow(v.zcoord, 2)\r\n );\r\n};\r\n\r\nexport function negateVector(v) {\r\n return multiplyVector(v, -1);\r\n};\r\n\r\nexport function unitVector(v) {\r\n let mag = magnitude(v);\r\n let xcoord = v.xcoord / mag;\r\n let ycoord = v.ycoord / mag;\r\n let zcoord = v.zcoord / mag;\r\n return makeVector(xcoord, ycoord, zcoord);\r\n};\r\n\r\nexport function crossProduct(u, v) {\r\n //\r\n // u X v = < u2*v3 - u3*v2,\r\n // u3*v1 - u1*v3,\r\n // u1*v2 - u2*v1 >\r\n let xcoord = u.ycoord * v.zcoord - u.zcoord * v.ycoord;\r\n let ycoord = u.zcoord * v.xcoord - u.xcoord * v.zcoord;\r\n let zcoord = u.xcoord * v.ycoord - u.ycoord * v.xcoord;\r\n return makeVector(xcoord, ycoord, zcoord);\r\n};\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\nimport {\r\n makePoint, makeVector, makeVectorFromPoints,\r\n magnitude, unitVector, crossProduct,\r\n addVector, multiplyVector, negateVector\r\n} from '../utils/mathUtils';\r\n\r\n/**\r\n * Create SVGPathElement from an annotation definition.\r\n * This is used for anntations of type `drawing`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGPathElement} The path to be rendered\r\n */\r\nexport default function renderArrow(a) {\r\n let arrow = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\r\n\r\n if (a.lines.length === 2) {\r\n let p1 = a.lines[0];\r\n let p2 = a.lines[a.lines.length - 1];\r\n\r\n let arrowLength = 40;\r\n let pt0 = makePoint(p1[0], p1[1], 0);\r\n let pt1 = makePoint(p2[0], p2[1], 0);\r\n let x = makeVectorFromPoints(pt0, pt1);\r\n let unitX = unitVector(x);\r\n pt1 = addVector(pt0, multiplyVector(unitX, arrowLength));\r\n x = makeVectorFromPoints(pt0, pt1);\r\n let unitZ = makeVector(0, 0, 1);\r\n let unitY = unitVector(crossProduct(unitX, unitZ));\r\n let thickness = a.width || 10;\r\n\r\n let A = addVector(pt0, multiplyVector(unitY, thickness * 0.5));\r\n let B = addVector(A, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\r\n let C = addVector(B, multiplyVector(unitY, thickness));\r\n let D = pt1;\r\n let G = addVector(pt0, multiplyVector(negateVector(unitY), thickness * 0.5));\r\n let F = addVector(G, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\r\n let E = addVector(F, multiplyVector(negateVector(unitY), thickness));\r\n\r\n let points = '' +\r\n A.x + ',' + A.y + ' ' +\r\n B.x + ',' + B.y + ' ' +\r\n C.x + ',' + C.y + ' ' +\r\n D.x + ',' + D.y + ' ' +\r\n E.x + ',' + E.y + ' ' +\r\n F.x + ',' + F.y + ' ' +\r\n G.x + ',' + G.y;\r\n\r\n setAttributes(arrow, {\r\n points: points,\r\n stroke: normalizeColor(a.color || '#000'),\r\n fill: normalizeColor(a.color || '#000')\r\n });\r\n }\r\n\r\n return arrow;\r\n}\r\n","import renderLine from './renderLine';\r\nimport renderPath from './renderPath';\r\nimport renderPoint from './renderPoint';\r\nimport renderRect from './renderRect';\r\nimport renderText from './renderText';\r\nimport renderCircle from './renderCircle';\r\nimport renderArrow from './renderArrow';\r\n\r\nconst isFirefox = /firefox/i.test(navigator.userAgent);\r\n\r\n/**\r\n * Get the x/y translation to be used for transforming the annotations\r\n * based on the rotation of the viewport.\r\n *\r\n * @param {Object} viewport The viewport data from the page\r\n * @return {Object}\r\n */\r\nexport function getTranslation(viewport) {\r\n let x;\r\n let y;\r\n\r\n // Modulus 360 on the rotation so that we only\r\n // have to worry about four possible values.\r\n switch (viewport.rotation % 360) {\r\n case 0:\r\n x = y = 0;\r\n break;\r\n case 90:\r\n x = 0;\r\n y = (viewport.width / viewport.scale) * -1;\r\n break;\r\n case 180:\r\n x = (viewport.width / viewport.scale) * -1;\r\n y = (viewport.height / viewport.scale) * -1;\r\n break;\r\n case 270:\r\n x = (viewport.height / viewport.scale) * -1;\r\n y = 0;\r\n break;\r\n }\r\n\r\n return { x, y };\r\n}\r\n\r\n/**\r\n * Transform the rotation and scale of a node using SVG's native transform attribute.\r\n *\r\n * @param {Node} node The node to be transformed\r\n * @param {Object} viewport The page's viewport data\r\n * @return {Node}\r\n */\r\nfunction transform(node, viewport) {\r\n let trans = getTranslation(viewport);\r\n\r\n // Let SVG natively transform the element\r\n node.setAttribute('transform', `scale(${viewport.scale}) rotate(${viewport.rotation}) translate(${trans.x}, ${trans.y})`);\r\n\r\n // Manually adjust x/y for nested SVG nodes\r\n if (!isFirefox && node.nodeName.toLowerCase() === 'svg') {\r\n node.setAttribute('x', parseInt(node.getAttribute('x'), 10) * viewport.scale);\r\n node.setAttribute('y', parseInt(node.getAttribute('y'), 10) * viewport.scale);\r\n\r\n let x = parseInt(node.getAttribute('x', 10));\r\n let y = parseInt(node.getAttribute('y', 10));\r\n let width = parseInt(node.getAttribute('width'), 10);\r\n let height = parseInt(node.getAttribute('height'), 10);\r\n let path = node.querySelector('path');\r\n let svg = path.parentNode;\r\n\r\n // Scale width/height\r\n [node, svg, path, node.querySelector('rect')].forEach((n) => {\r\n n.setAttribute('width', parseInt(n.getAttribute('width'), 10) * viewport.scale);\r\n n.setAttribute('height', parseInt(n.getAttribute('height'), 10) * viewport.scale);\r\n });\r\n\r\n // Transform path but keep scale at 100% since it will be handled natively\r\n transform(path, Object.assign({}, viewport, { scale: 1 }));\r\n\r\n switch (viewport.rotation % 360) {\r\n case 90:\r\n node.setAttribute('x', viewport.width - y - width);\r\n node.setAttribute('y', x);\r\n svg.setAttribute('x', 1);\r\n svg.setAttribute('y', 0);\r\n break;\r\n case 180:\r\n node.setAttribute('x', viewport.width - x - width);\r\n node.setAttribute('y', viewport.height - y - height);\r\n svg.setAttribute('y', 2);\r\n break;\r\n case 270:\r\n node.setAttribute('x', y);\r\n node.setAttribute('y', viewport.height - x - height);\r\n svg.setAttribute('x', -1);\r\n svg.setAttribute('y', 0);\r\n break;\r\n }\r\n }\r\n\r\n return node;\r\n}\r\n\r\n/**\r\n * Append an annotation as a child of an SVG.\r\n *\r\n * @param {SVGElement} svg The SVG element to append the annotation to\r\n * @param {Object} annotation The annotation definition to render and append\r\n * @param {Object} viewport The page's viewport data\r\n * @return {SVGElement} A node that was created and appended by this function\r\n */\r\nexport function appendChild(svg, annotation, viewport) {\r\n if (!viewport) {\r\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\r\n }\r\n\r\n let child;\r\n switch (annotation.type) {\r\n case 'area':\r\n case 'highlight':\r\n child = renderRect(annotation);\r\n break;\r\n case 'circle':\r\n case 'fillcircle':\r\n case 'emptycircle':\r\n child = renderCircle(annotation);\r\n break;\r\n case 'strikeout':\r\n child = renderLine(annotation);\r\n break;\r\n case 'point':\r\n child = renderPoint(annotation);\r\n break;\r\n case 'textbox':\r\n child = renderText(annotation);\r\n break;\r\n case 'drawing':\r\n child = renderPath(annotation);\r\n break;\r\n case 'arrow':\r\n child = renderArrow(annotation);\r\n break;\r\n }\r\n\r\n // If no type was provided for an annotation it will result in node being null.\r\n // Skip appending/transforming if node doesn't exist.\r\n if (child) {\r\n // Set attributes\r\n child.setAttribute('data-pdf-annotate-id', annotation.uuid);\r\n child.setAttribute('aria-hidden', true);\r\n\r\n // Dynamically set any other attributes associated with annotation that is not related to drawing it\r\n Object.keys(annotation).filter((key) => {\r\n return ['color', 'x', 'y', 'cx', 'cy', 'color', 'documentId', 'lines', 'page',\r\n 'width', 'class', 'content', 'size', 'rotation', 'r'].indexOf(key) === -1;\r\n }).forEach((key) => {\r\n child.setAttribute(`data-pdf-annotate-${key}`, annotation[key]);\r\n });\r\n\r\n svg.appendChild(transform(child, viewport));\r\n }\r\n\r\n return child;\r\n}\r\n\r\n/**\r\n * Transform a child annotation of an SVG.\r\n *\r\n * @param {SVGElement} svg The SVG element with the child annotation\r\n * @param {Object} child The SVG child to transform\r\n * @param {Object} viewport The page's viewport data\r\n * @return {SVGElement} A node that was transformed by this function\r\n */\r\nexport function transformChild(svg, child, viewport) {\r\n if (!viewport) {\r\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\r\n }\r\n\r\n // If no type was provided for an annotation it will result in node being null.\r\n // Skip transforming if node doesn't exist.\r\n if (child) {\r\n child = transform(child, viewport);\r\n }\r\n\r\n return child;\r\n}\r\n\r\nexport default {\r\n /**\r\n * Get the x/y translation to be used for transforming the annotations\r\n * based on the rotation of the viewport.\r\n */\r\n getTranslation,\r\n\r\n /**\r\n * Append an SVG child for an annotation\r\n */\r\n appendChild,\r\n\r\n /**\r\n * Transform an existing SVG child\r\n */\r\n transformChild\r\n};\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create SVGLineElements from an annotation definition.\r\n * This is used for anntations of type `strikeout`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGGElement} A group of all lines to be rendered\r\n */\r\nexport default function renderLine(a) {\r\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\r\n setAttributes(group, {\r\n stroke: normalizeColor(a.color || '#f00'),\r\n strokeWidth: 1\r\n });\r\n\r\n a.rectangles.forEach((r) => {\r\n let line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\r\n\r\n setAttributes(line, {\r\n x1: r.x,\r\n y1: r.y,\r\n x2: r.x + r.width,\r\n y2: r.y\r\n });\r\n\r\n group.appendChild(line);\r\n });\r\n\r\n return group;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\n\r\nconst SIZE = 25;\r\nconst D = 'M499.968 214.336q-113.832 0 -212.877 38.781t-157.356 104.625 -58.311 142.29q0 62.496 39.897 119.133t112.437 97.929l48.546 27.9 -15.066 53.568q-13.392 50.778 -39.06 95.976 84.816 -35.154 153.45 -95.418l23.994 -21.204 31.806 3.348q38.502 4.464 72.54 4.464 113.832 0 212.877 -38.781t157.356 -104.625 58.311 -142.29 -58.311 -142.29 -157.356 -104.625 -212.877 -38.781z';\r\n\r\n/**\r\n * Create SVGElement from an annotation definition.\r\n * This is used for anntations of type `comment`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGElement} A svg to be rendered\r\n */\r\nexport default function renderPoint(a) {\r\n let outerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n let innerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n\r\n setAttributes(outerSVG, {\r\n width: SIZE,\r\n height: SIZE,\r\n x: a.x,\r\n y: a.y\r\n });\r\n\r\n setAttributes(innerSVG, {\r\n width: SIZE,\r\n height: SIZE,\r\n x: 0,\r\n y: (SIZE * 0.05) * -1,\r\n viewBox: '0 0 1000 1000'\r\n });\r\n\r\n setAttributes(rect, {\r\n width: SIZE,\r\n height: SIZE,\r\n stroke: '#000',\r\n fill: '#ff0'\r\n });\r\n\r\n setAttributes(path, {\r\n d: D,\r\n strokeWidth: 50,\r\n stroke: '#000',\r\n fill: '#fff'\r\n });\r\n\r\n innerSVG.appendChild(path);\r\n outerSVG.appendChild(rect);\r\n outerSVG.appendChild(innerSVG);\r\n\r\n return outerSVG;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create SVGPathElement from an annotation definition.\r\n * This is used for anntations of type `drawing`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGPathElement} The path to be rendered\r\n */\r\nexport default function renderPath(a) {\r\n let d = [];\r\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n\r\n if (a.lines.length > 0) {\r\n d.push(`M${a.lines[0][0]} ${a.lines[0][1]}`);\r\n for (let i = 1, l = a.lines.length; i < l; i++) {\r\n let p1 = a.lines[i];\r\n let p2 = a.lines[i + 1];\r\n if (p2) {\r\n d.push(`L${p1[0]} ${p1[1]}`);\r\n }\r\n }\r\n }\r\n\r\n /*\r\n\r\n if(a.lines.length>2) {\r\n var p1 = a.lines[0];\r\n var p2 = a.lines[a.lines.length-1];\r\n\r\n var p3 = []; //arrow\r\n var p4 = [];\r\n var p0 = []; //arrow intersection\r\n\r\n if (p2) {\r\n var k = -(p2[0]-p1[0])/(p2[1]-p1[1]);\r\n\r\n var deltaX = 3;\r\n p0[0] = p1[0]+0.8*(p2[0]-p1[0]);\r\n p0[1] = p1[1]+0.8*(p2[1]-p1[1]);\r\n\r\n p3[0] = p0[0] + deltaX;\r\n p3[1] = p0[1] + k*deltaX;\r\n\r\n p4[0] = p0[0] - deltaX;\r\n p4[1] = p0[1] - k*deltaX;\r\n\r\n if(Math.abs(p2[1]-p1[1]) < 20) {\r\n\r\n p3[0] = p0[0] ;\r\n p3[1] = p0[1] + deltaX*1;\r\n\r\n p4[0] = p0[0] ;\r\n p4[1] = p0[1] - deltaX*1;\r\n\r\n }\r\n\r\n d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\r\n //d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\r\n d.push(`M${p2[0]} ${p2[1]} ${p3[0]} ${p3[1]}`);\r\n d.push(`M${p3[0]} ${p3[1]} ${p4[0]} ${p4[1]}`);\r\n d.push(`M${p4[0]} ${p4[1]} ${p2[0]} ${p2[1]}`);\r\n }\r\n } */\r\n\r\n setAttributes(path, {\r\n d: `${d.join(' ')}`, // `${d.join(' ')}Z`,\r\n stroke: normalizeColor(a.color || '#000'),\r\n strokeWidth: a.width || 1,\r\n fill: 'none'\r\n });\r\n\r\n return path;\r\n}\r\n","import { getTranslation } from '../render/appendChild';\r\nimport {\r\n applyTransform,\r\n applyInverseTransform,\r\n translate,\r\n rotate,\r\n scale\r\n} from '../utils/mathUtils';\r\n\r\nexport const BORDER_COLOR = '#00BFFF';\r\n\r\nconst userSelectStyleSheet = document.createElement('style');\r\nuserSelectStyleSheet.innerHTML = `\r\nbody {\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n`;\r\n\r\nuserSelectStyleSheet.setAttribute('data-pdf-annotate-user-select', 'true');\r\n\r\n/**\r\n * Find the SVGElement that contains all the annotations for a page\r\n *\r\n * @param {Element} node An annotation within that container\r\n * @return {SVGElement} The container SVG or null if it can't be found\r\n */\r\nexport function findSVGContainer(node) {\r\n let parentNode = node;\r\n\r\n while ((parentNode = parentNode.parentNode) &&\r\n parentNode !== document) {\r\n if (parentNode.nodeName.toUpperCase() === 'SVG' &&\r\n parentNode.getAttribute('data-pdf-annotate-container') === 'true') {\r\n return parentNode;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Find an SVGElement container at a given point\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @return {SVGElement} The container SVG or null if one can't be found\r\n */\r\nexport function findSVGAtPoint(x, y) {\r\n let elements = document.querySelectorAll('svg[data-pdf-annotate-container=\"true\"]');\r\n\r\n for (let i = 0, l = elements.length; i < l; i++) {\r\n let el = elements[i];\r\n let rect = el.getBoundingClientRect();\r\n\r\n if (pointIntersectsRect(x, y, rect)) {\r\n return el;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Find an Element that represents an annotation at a given point.\r\n *\r\n * IMPORTANT: Requires the annotation layer to be the top most element so\r\n * either use z-ordering or make it the leaf container.\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @return {Element} The annotation element or null if one can't be found\r\n */\r\nexport function findAnnotationAtPoint(x, y) {\r\n let el = null;\r\n let candidate = document.elementFromPoint(x, y);\r\n while (!el && candidate && candidate !== document) {\r\n let type = candidate.getAttribute('data-pdf-annotate-type');\r\n if (type) {\r\n el = candidate;\r\n }\r\n candidate = candidate.parentNode;\r\n }\r\n return el;\r\n}\r\n\r\n/**\r\n * Determine if a point intersects a rect\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Object} rect The points of a rect (likely from getBoundingClientRect)\r\n * @return {Boolean} True if a collision occurs, otherwise false\r\n */\r\nexport function pointIntersectsRect(x, y, rect) {\r\n return y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\r\n}\r\n\r\n/**\r\n * Get the rect of an annotation element accounting for offset.\r\n *\r\n * @param {Element} el The element to get the rect of\r\n * @return {Object} The dimensions of the element\r\n */\r\nexport function getOffsetAnnotationRect(el) {\r\n let rect = el.getBoundingClientRect();\r\n let { width, height } = rect;\r\n let extraOffsetWidth = 0;\r\n let extraOffsetHeight = 0;\r\n if (['line', 'path'].indexOf(el.tagName.toLowerCase()) > -1 && el.getBBox) {\r\n let bbox = el.getBBox();\r\n extraOffsetWidth = (rect.width - bbox.width) / 2;\r\n extraOffsetHeight = (rect.height - bbox.height) / 2;\r\n width = bbox.width;\r\n height = bbox.height;\r\n }\r\n let { offsetLeft, offsetTop } = getOffset(el);\r\n return {\r\n top: rect.top - offsetTop + extraOffsetHeight,\r\n left: rect.left - offsetLeft + extraOffsetWidth,\r\n bottom: rect.bottom - offsetTop - extraOffsetHeight,\r\n right: rect.right - offsetLeft - extraOffsetWidth,\r\n width: width,\r\n height: height\r\n };\r\n}\r\n\r\n/**\r\n * Adjust scale from normalized scale (100%) to rendered scale.\r\n *\r\n * @param {SVGElement} svg The SVG to gather metadata from\r\n * @param {Object} rect A map of numeric values to scale\r\n * @return {Object} A copy of `rect` with values scaled up\r\n */\r\nexport function scaleUp(svg, rect) {\r\n let result = {};\r\n let { viewport } = getMetadata(svg);\r\n\r\n Object.keys(rect).forEach((key) => {\r\n result[key] = rect[key] * viewport.scale;\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport function convertToSvgRect(rect, svg, viewport) {\r\n let pt1 = [rect.x, rect.y];\r\n let pt2 = [rect.x + rect.width, rect.y + rect.height];\r\n\r\n pt1 = convertToSvgPoint(pt1, svg, viewport);\r\n pt2 = convertToSvgPoint(pt2, svg, viewport);\r\n\r\n return {\r\n x: Math.min(pt1[0], pt2[0]),\r\n y: Math.min(pt1[1], pt2[1]),\r\n width: Math.abs(pt2[0] - pt1[0]),\r\n height: Math.abs(pt2[1] - pt1[1])\r\n };\r\n}\r\n\r\nexport function convertToSvgPoint(pt, svg, viewport) {\r\n viewport = viewport || getMetadata(svg).viewport;\r\n\r\n let xform = [ 1, 0, 0, 1, 0, 0 ];\r\n xform = scale(xform, viewport.scale, viewport.scale);\r\n xform = rotate(xform, viewport.rotation);\r\n\r\n let offset = getTranslation(viewport);\r\n xform = translate(xform, offset.x, offset.y);\r\n\r\n return applyInverseTransform(pt, xform);\r\n}\r\n\r\nexport function convertToScreenPoint(pt, svg, viewport) {\r\n viewport = viewport || getMetadata(svg).viewport;\r\n\r\n let xform = [ 1, 0, 0, 1, 0, 0 ];\r\n xform = scale(xform, viewport.scale, viewport.scale);\r\n xform = rotate(xform, viewport.rotation);\r\n\r\n let offset = getTranslation(viewport);\r\n xform = translate(xform, offset.x, offset.y);\r\n\r\n return applyTransform(pt, xform);\r\n}\r\n\r\n/**\r\n * Adjust scale from rendered scale to a normalized scale (100%).\r\n *\r\n * @param {SVGElement} svg The SVG to gather metadata from\r\n * @param {Object} rect A map of numeric values to scale\r\n * @return {Object} A copy of `rect` with values scaled down\r\n */\r\nexport function scaleDown(svg, rect) {\r\n let result = {};\r\n let { viewport } = getMetadata(svg);\r\n\r\n Object.keys(rect).forEach((key) => {\r\n result[key] = rect[key] / viewport.scale;\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get the scroll position of an element, accounting for parent elements\r\n *\r\n * @param {Element} el The element to get the scroll position for\r\n * @return {Object} The scrollTop and scrollLeft position\r\n */\r\nexport function getScroll(el) {\r\n let scrollTop = 0;\r\n let scrollLeft = 0;\r\n let parentNode = el;\r\n\r\n while ((parentNode = parentNode.parentNode) &&\r\n parentNode !== document) {\r\n scrollTop += parentNode.scrollTop;\r\n scrollLeft += parentNode.scrollLeft;\r\n }\r\n\r\n return { scrollTop, scrollLeft };\r\n}\r\n\r\n/**\r\n * Get the offset position of an element, accounting for parent elements\r\n *\r\n * @param {Element} el The element to get the offset position for\r\n * @return {Object} The offsetTop and offsetLeft position\r\n */\r\nexport function getOffset(el) {\r\n let parentNode = el;\r\n\r\n while ((parentNode = parentNode.parentNode) &&\r\n parentNode !== document) {\r\n if (parentNode.nodeName.toUpperCase() === 'SVG') {\r\n break;\r\n }\r\n }\r\n\r\n let rect = parentNode.getBoundingClientRect();\r\n\r\n return { offsetLeft: rect.left, offsetTop: rect.top };\r\n}\r\n\r\n/**\r\n * Disable user ability to select text on page\r\n */\r\nexport function disableUserSelect() {\r\n if (!userSelectStyleSheet.parentNode) {\r\n document.head.appendChild(userSelectStyleSheet);\r\n }\r\n}\r\n\r\n/**\r\n * Enable user ability to select text on page\r\n */\r\nexport function enableUserSelect() {\r\n if (userSelectStyleSheet.parentNode) {\r\n userSelectStyleSheet.parentNode.removeChild(userSelectStyleSheet);\r\n }\r\n}\r\n\r\n/**\r\n * Get the metadata for a SVG container\r\n *\r\n * @param {SVGElement} svg The SVG container to get metadata for\r\n */\r\nexport function getMetadata(svg) {\r\n return {\r\n documentId: svg.getAttribute('data-pdf-annotate-document'),\r\n pageNumber: parseInt(svg.getAttribute('data-pdf-annotate-page'), 10),\r\n viewport: JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'))\r\n };\r\n}\r\n","import EventEmitter from 'events';\r\nimport {\r\n findAnnotationAtPoint,\r\n findSVGAtPoint\r\n} from './utils';\r\n\r\nconst emitter = new EventEmitter();\r\n\r\nlet clickNode;\r\n\r\n/**\r\n * Handle document.click event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\ndocument.addEventListener('click', function handleDocumentClick(e) {\r\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n\r\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\r\n\r\n // Emit annotation:blur if clickNode is no longer clicked\r\n if (clickNode && clickNode !== target) {\r\n emitter.emit('annotation:blur', clickNode);\r\n }\r\n\r\n // Emit annotation:click if target was clicked\r\n if (target) {\r\n emitter.emit('annotation:click', target);\r\n }\r\n\r\n clickNode = target;\r\n});\r\n\r\n// let mouseOverNode;\r\n// document.addEventListener('mousemove', function handleDocumentMousemove(e) {\r\n// let target = findAnnotationAtPoint(e.clientX, e.clientY);\r\n//\r\n// // Emit annotation:mouseout if target was mouseout'd\r\n// if (mouseOverNode && !target) {\r\n// emitter.emit('annotation:mouseout', mouseOverNode);\r\n// }\r\n//\r\n// // Emit annotation:mouseover if target was mouseover'd\r\n// if (target && mouseOverNode !== target) {\r\n// emitter.emit('annotation:mouseover', target);\r\n// }\r\n//\r\n// mouseOverNode = target;\r\n// });\r\n\r\nexport function fireEvent() { emitter.emit(...arguments); };\r\nexport function addEventListener() { emitter.on(...arguments); };\r\nexport function removeEventListener() { emitter.removeListener(...arguments); };\r\n","// Disable JSDoc as it cannot really deal with the odd way that the functions are defined\r\n/* eslint valid-jsdoc: 0 */\r\n\r\nimport abstractFunction from '../utils/abstractFunction';\r\nimport { fireEvent } from '../UI/event';\r\n\r\n// Adapter should never be invoked publicly\r\nexport default class StoreAdapter {\r\n /**\r\n * Create a new StoreAdapter instance\r\n *\r\n * @param {Object} [definition] The definition to use for overriding abstract methods\r\n */\r\n constructor(definition = {}) {\r\n // Copy each function from definition if it is a function we know about\r\n Object.keys(definition).forEach((key) => {\r\n if (typeof definition[key] === 'function' &&\r\n typeof this[key] === 'function') {\r\n this[key] = definition[key];\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get all the annotations for a given document and page number.\r\n *\r\n * @param {String} documentId The ID for the document the annotations belong to\r\n * @param {Number} pageNumber The number of the page the annotations belong to\r\n * @return {Promise} Promise that returns with list of annotations for document and page\r\n */\r\n __getAnnotations(documentId, pageNumber) { abstractFunction('getAnnotations'); }\r\n get getAnnotations() { return this.__getAnnotations; }\r\n set getAnnotations(fn) {\r\n this.__getAnnotations = function getAnnotations(documentId, pageNumber) {\r\n return fn(...arguments).then((annotations) => {\r\n // TODO may be best to have this happen on the server\r\n if (annotations.annotations) {\r\n annotations.annotations.forEach((a) => {\r\n a.documentId = documentId;\r\n });\r\n }\r\n return annotations;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Get the definition for a specific annotation.\r\n *\r\n * @param {String} documentId The ID for the document the annotation belongs to\r\n * @param {String} annotationId The ID for the annotation\r\n * @return {Promise} Promise that returns the requested annotation\r\n */\r\n getAnnotation(documentId, annotationId) { abstractFunction('getAnnotation'); }\r\n\r\n /**\r\n * Add an annotation\r\n *\r\n * @param {String} documentId The ID for the document to add the annotation to\r\n * @param {String} pageNumber The page number to add the annotation to\r\n * @param {Object} annotation The definition for the new annotation\r\n * @return {Promise} Promise that returns with the added annotation\r\n */\r\n __addAnnotation(documentId, pageNumber, annotation) { abstractFunction('addAnnotation'); }\r\n get addAnnotation() { return this.__addAnnotation; }\r\n set addAnnotation(fn) {\r\n this.__addAnnotation = function addAnnotation(documentId, pageNumber, annotation) {\r\n return fn(...arguments).then((annotation) => {\r\n fireEvent('annotation:add', documentId, pageNumber, annotation);\r\n return annotation;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Edit an annotation\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} pageNumber the page number of the annotation\r\n * @param {Object} annotation The definition of the modified annotation\r\n * @return {Promise} Promise that returns with the edited annotation\r\n */\r\n __editAnnotation(documentId, pageNumber, annotation) { abstractFunction('editAnnotation'); }\r\n get editAnnotation() { return this.__editAnnotation; }\r\n set editAnnotation(fn) {\r\n this.__editAnnotation = function editAnnotation(documentId, annotationId, annotation) {\r\n return fn(...arguments).then((annotation) => {\r\n fireEvent('annotation:edit', documentId, annotationId, annotation);\r\n return annotation;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Delete an annotation\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} annotationId The ID for the annotation\r\n * @return {Promise} Promise that returns with boolean if annotation was deleted\r\n */\r\n __deleteAnnotation(documentId, annotationId) { abstractFunction('deleteAnnotation'); }\r\n get deleteAnnotation() { return this.__deleteAnnotation; }\r\n set deleteAnnotation(fn) {\r\n this.__deleteAnnotation = function deleteAnnotation(documentId, annotationId) {\r\n return fn(...arguments).then((success) => {\r\n if (success) {\r\n fireEvent('annotation:delete', documentId, annotationId);\r\n }\r\n return success;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Get all the comments for an annotation\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} annotationId The ID for the annotation\r\n * @return {Promise} Promise that returns with comments for annotation\r\n */\r\n getComments(documentId, annotationId) { abstractFunction('getComments'); }\r\n\r\n /**\r\n * Add a new comment\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} annotationId The ID for the annotation\r\n * @param {Object} content The definition of the comment\r\n * @return {Promise} Promise that returns with the added comment\r\n */\r\n __addComment(documentId, annotationId, content) { abstractFunction('addComment'); }\r\n get addComment() { return this.__addComment; }\r\n set addComment(fn) {\r\n this.__addComment = function addComment(documentId, annotationId, content) {\r\n return fn(...arguments).then((comment) => {\r\n fireEvent('comment:add', documentId, annotationId, comment);\r\n return comment;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Delete a comment\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} commentId The ID for the comment\r\n * @return {Promise} Promise that returns with boolean if comment was deleted\r\n */\r\n __deleteComment(documentId, commentId) { abstractFunction('deleteComment'); }\r\n get deleteComment() { return this.__deleteComment; }\r\n set deleteComment(fn) {\r\n this.__deleteComment = function deleteComment(documentId, commentId) {\r\n return fn(...arguments).then((success) => {\r\n if (success) {\r\n fireEvent('comment:delete', documentId, commentId);\r\n }\r\n return success;\r\n });\r\n };\r\n }\r\n}\r\n","const REGEXP = /[xy]/g;\r\nconst PATTERN = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\r\n\r\nfunction replacement(c) {\r\n let r = Math.random() * 16 | 0;\r\n let v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n}\r\n\r\n/**\r\n * Generate a univierally unique identifier\r\n *\r\n * @return {String} A UUID\r\n */\r\nexport default function uuid() {\r\n return PATTERN.replace(REGEXP, replacement);\r\n}\r\n","import uuid from '../utils/uuid';\r\nimport StoreAdapter from './StoreAdapter';\r\n\r\n// StoreAdapter for working with localStorage\r\n// This is ideal for testing, examples, and prototyping\r\nexport default class LocalStoreAdapter extends StoreAdapter {\r\n constructor() {\r\n super({\r\n getAnnotations(documentId, pageNumber) {\r\n return new Promise((resolve, reject) => {\r\n let annotations = getAnnotations(documentId).filter((i) => {\r\n return i.page === pageNumber && i.class === 'Annotation';\r\n });\r\n\r\n resolve({\r\n documentId,\r\n pageNumber,\r\n annotations\r\n });\r\n });\r\n }\r\n });\r\n\r\n this.getAnnotation = (documentId, annotationId) => {\r\n return Promise.resolve(getAnnotations(documentId)[findAnnotation(documentId, annotationId)]);\r\n };\r\n\r\n this.addAnnotation = (documentId, pageNumber, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n annotation.class = 'Annotation';\r\n annotation.uuid = uuid();\r\n annotation.page = pageNumber;\r\n\r\n let annotations = getAnnotations(documentId);\r\n annotations.push(annotation);\r\n updateAnnotations(documentId, annotations);\r\n\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.editAnnotation = (documentId, annotationId, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n let annotations = getAnnotations(documentId);\r\n annotations[findAnnotation(documentId, annotationId)] = annotation;\r\n updateAnnotations(documentId, annotations);\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.deleteAnnotation = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n let annotation = getAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\r\n if (!annotation) {\r\n return reject('Could not find annotation');\r\n }\r\n let index = findAnnotation(documentId, annotationId);\r\n if (index > -1) {\r\n let annotations = getAnnotations(documentId);\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n\r\n this.getComments = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n resolve(getAnnotations(documentId).filter((i) => {\r\n return i.class === 'Comment' && i.annotation === annotationId;\r\n }));\r\n });\r\n };\r\n\r\n this.addComment = (documentId, annotationId, content) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = {\r\n class: 'Comment',\r\n uuid: uuid(),\r\n annotation: annotationId,\r\n content: content\r\n };\r\n\r\n let annotations = getAnnotations(documentId);\r\n annotations.push(comment);\r\n updateAnnotations(documentId, annotations);\r\n\r\n resolve(comment);\r\n });\r\n };\r\n\r\n this.deleteComment = (documentId, commentId) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = getAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\r\n if (!comment) {\r\n return reject('Could not find annotation');\r\n }\r\n let index = -1;\r\n let annotations = getAnnotations(documentId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === commentId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index > -1) {\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n }\r\n}\r\n\r\nfunction getAnnotations(documentId) {\r\n return JSON.parse(localStorage.getItem(`${documentId}/annotations`)) || [];\r\n}\r\n\r\nfunction updateAnnotations(documentId, annotations) {\r\n localStorage.setItem(`${documentId}/annotations`, JSON.stringify(annotations));\r\n}\r\n/**\r\n *\r\n * @param {String} documentId Document id of the annotation\r\n * @param {String} annotationId The id of the annotation\r\n *\r\n * This function finds all the annotation made by one user.\r\n *\r\n * @return {int} The index of the annotation in localstorage\r\n */\r\nfunction findAnnotation(documentId, annotationId) {\r\n let index = -1;\r\n let annotations = getAnnotations(documentId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === annotationId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n return index;\r\n}\r\n","import uuid from '../utils/uuid';\r\nimport StoreAdapter from './StoreAdapter';\r\n\r\n// StoreAdapter for working with localStorage and associated user id\r\n// This is ideal for testing, examples, and prototyping\r\nexport default class LocalUserStoreAdapter extends StoreAdapter {\r\n constructor(userId = 'user', globalEdit = false) {\r\n super({\r\n getAnnotations(documentId, pageNumber) {\r\n return new Promise((resolve, reject) => {\r\n let annotations = getAllAnnotations(documentId).filter((i) => {\r\n return i.page === pageNumber && i.class === 'Annotation';\r\n });\r\n\r\n resolve({\r\n documentId,\r\n pageNumber,\r\n annotations\r\n });\r\n });\r\n }\r\n });\r\n\r\n this._userId = userId;\r\n this._globalEdit = globalEdit;\r\n\r\n this.getAnnotation = (documentId, annotationId) => {\r\n return Promise.resolve(getAnnotations(documentId, this._userId)[findAnnotation(documentId, this._userId, annotationId)]);\r\n };\r\n\r\n this.addAnnotation = (documentId, pageNumber, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n annotation.class = 'Annotation';\r\n annotation.uuid = uuid();\r\n annotation.page = pageNumber;\r\n annotation.userId = this._userId;\r\n\r\n let annotations = getAnnotations(documentId, this._userId);\r\n annotations.push(annotation);\r\n updateAnnotations(documentId, this._userId, annotations);\r\n\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.editAnnotation = (documentId, annotationId, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\r\n reject('Non-matching userId');\r\n }\r\n let annotations = getAnnotations(documentId, annotation.userId);\r\n annotations[findAnnotation(documentId, annotation.userId, annotationId)] = annotation;\r\n updateAnnotations(documentId, annotation.userId, annotations);\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.deleteAnnotation = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n let annotation = getAllAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\r\n if (!annotation) {\r\n return reject('Could not find annotation');\r\n }\r\n else if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\r\n return reject('Non-matching userId');\r\n }\r\n let index = findAnnotation(documentId, annotation.userId, annotationId);\r\n if (index > -1) {\r\n let annotations = getAnnotations(documentId, annotation.userId);\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, annotation.userId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n\r\n this.getComments = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n resolve(getAnnotations(documentId, this._userId).filter((i) => {\r\n return i.class === 'Comment' && i.annotation === annotationId;\r\n }));\r\n });\r\n };\r\n\r\n this.addComment = (documentId, annotationId, content) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = {\r\n class: 'Comment',\r\n uuid: uuid(),\r\n annotation: annotationId,\r\n content: content,\r\n userId: this._userId\r\n };\r\n\r\n let annotations = getAnnotations(documentId, this._userId);\r\n annotations.push(comment);\r\n updateAnnotations(documentId, this._userId, annotations);\r\n\r\n resolve(comment);\r\n });\r\n };\r\n\r\n this.deleteComment = (documentId, commentId) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = getAllAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\r\n if (!comment) {\r\n return reject('Could not find annotation');\r\n }\r\n else if (!this._globalEdit && comment.userId && comment.userId !== this._userId) {\r\n return reject('Non-matching userId');\r\n }\r\n let index = -1;\r\n let annotations = getAnnotations(documentId, comment.userId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === commentId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index > -1) {\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, comment.userId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n }\r\n\r\n get userId() {\r\n return this._userId;\r\n }\r\n}\r\n\r\nfunction getAllAnnotations(documentId) {\r\n let all_annotations = [];\r\n let re = new RegExp(`${documentId}/(.*)/annotations`);\r\n for (let i = 0; i < localStorage.length; i++) {\r\n if (localStorage.key(i).search(re) > -1) {\r\n all_annotations.push(...JSON.parse(localStorage.getItem(localStorage.key(i))));\r\n }\r\n }\r\n return all_annotations;\r\n}\r\n\r\nfunction getAnnotations(documentId, userId) {\r\n return JSON.parse(localStorage.getItem(`${documentId}/${userId}/annotations`)) || [];\r\n}\r\n\r\nfunction updateAnnotations(documentId, userId, annotations) {\r\n localStorage.setItem(`${documentId}/${userId}/annotations`, JSON.stringify(annotations));\r\n}\r\n/**\r\n *\r\n * @param {String} documentId Document id of the annotation\r\n * @param {String} userId User id of the annotation\r\n * @param {String} annotationId The id of the annotation\r\n *\r\n * This function finds all the annotation made by one user.\r\n *\r\n * @return {int} The index of the annotation in localstorage\r\n */\r\nfunction findAnnotation(documentId, userId, annotationId) {\r\n let index = -1;\r\n let annotations = getAnnotations(documentId, userId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === annotationId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n return index;\r\n}\r\n","export default {\r\n annotationLayerName: 'annotationLayer',\r\n textLayerName: 'textLayer',\r\n annotationSvgQuery: function() {\r\n return 'svg.' + this.annotationLayerName;\r\n },\r\n annotationClassQuery: function() {\r\n return '.' + this.annotationLayerName;\r\n },\r\n textClassQuery: function() {\r\n return '.' + this.textLayerName;\r\n }\r\n};\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport config from '../config';\r\nimport {\r\n addEventListener,\r\n removeEventListener\r\n} from './event';\r\nimport {\r\n BORDER_COLOR,\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGContainer,\r\n findSVGAtPoint,\r\n getOffsetAnnotationRect,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet isDragging = false;\r\nlet overlay;\r\nlet dragOffsetX, dragOffsetY, dragStartX, dragStartY;\r\nconst OVERLAY_BORDER_SIZE = 3;\r\n\r\n/**\r\n * Create an overlay for editing an annotation.\r\n *\r\n * @param {Element} target The annotation element to apply overlay for\r\n */\r\nfunction createEditOverlay(target) {\r\n destroyEditOverlay();\r\n\r\n overlay = document.createElement('div');\r\n let anchor = document.createElement('a');\r\n let parentNode = findSVGContainer(target).parentNode;\r\n let id = target.getAttribute('data-pdf-annotate-id');\r\n let rect = getOffsetAnnotationRect(target);\r\n let styleLeft = rect.left - OVERLAY_BORDER_SIZE;\r\n let styleTop = rect.top - OVERLAY_BORDER_SIZE;\r\n\r\n overlay.setAttribute('id', 'pdf-annotate-edit-overlay');\r\n overlay.setAttribute('data-target-id', id);\r\n overlay.style.boxSizing = 'content-box';\r\n overlay.style.position = 'absolute';\r\n overlay.style.top = `${styleTop}px`;\r\n overlay.style.left = `${styleLeft}px`;\r\n overlay.style.width = `${rect.width}px`;\r\n overlay.style.height = `${rect.height}px`;\r\n overlay.style.border = `${OVERLAY_BORDER_SIZE}px solid ${BORDER_COLOR}`;\r\n overlay.style.borderRadius = `${OVERLAY_BORDER_SIZE}px`;\r\n overlay.style.zIndex = 20100;\r\n\r\n anchor.innerHTML = '×';\r\n anchor.setAttribute('href', 'javascript://');\r\n anchor.style.background = '#fff';\r\n anchor.style.borderRadius = '20px';\r\n anchor.style.border = '1px solid #bbb';\r\n anchor.style.color = '#bbb';\r\n anchor.style.fontSize = '16px';\r\n anchor.style.padding = '2px';\r\n anchor.style.textAlign = 'center';\r\n anchor.style.textDecoration = 'none';\r\n anchor.style.position = 'absolute';\r\n anchor.style.top = '-13px';\r\n anchor.style.right = '-13px';\r\n anchor.style.width = '25px';\r\n anchor.style.height = '25px';\r\n\r\n overlay.appendChild(anchor);\r\n parentNode.appendChild(overlay);\r\n document.addEventListener('click', handleDocumentClick);\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n document.addEventListener('mousedown', handleDocumentMousedown);\r\n anchor.addEventListener('click', deleteAnnotation);\r\n anchor.addEventListener('mouseover', () => {\r\n anchor.style.color = '#35A4DC';\r\n anchor.style.borderColor = '#999';\r\n anchor.style.boxShadow = '0 1px 1px #ccc';\r\n });\r\n anchor.addEventListener('mouseout', () => {\r\n anchor.style.color = '#bbb';\r\n anchor.style.borderColor = '#bbb';\r\n anchor.style.boxShadow = '';\r\n });\r\n overlay.addEventListener('mouseover', () => {\r\n if (!isDragging) { anchor.style.display = ''; }\r\n });\r\n overlay.addEventListener('mouseout', () => {\r\n anchor.style.display = 'none';\r\n });\r\n}\r\n\r\n/**\r\n * Destroy the edit overlay if it exists.\r\n */\r\nfunction destroyEditOverlay() {\r\n if (overlay) {\r\n overlay.parentNode.removeChild(overlay);\r\n overlay = null;\r\n }\r\n\r\n document.removeEventListener('click', handleDocumentClick);\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n document.removeEventListener('mousedown', handleDocumentMousedown);\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n enableUserSelect();\r\n}\r\n\r\n/**\r\n * Delete currently selected annotation\r\n */\r\nfunction deleteAnnotation() {\r\n if (!overlay) {\r\n return;\r\n }\r\n\r\n let annotationId = overlay.getAttribute('data-target-id');\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let { documentId } = getMetadata(svg);\r\n\r\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\r\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n\r\n [...nodes].forEach((n) => {\r\n n.parentNode.removeChild(n);\r\n });\r\n });\r\n\r\n destroyEditOverlay();\r\n}\r\n\r\n/**\r\n * Handle document.click event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentClick(e) {\r\n if (!findSVGAtPoint(e.clientX, e.clientY)) { return; }\r\n\r\n // Remove current overlay\r\n let overlay = document.getElementById('pdf-annotate-edit-overlay');\r\n if (overlay) {\r\n if (isDragging || e.target === overlay) {\r\n return;\r\n }\r\n\r\n destroyEditOverlay();\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {KeyboardEvent} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // keyCode is deprecated, so prefer the newer \"key\" method if possible\r\n let keyTest;\r\n if (e.key) {\r\n keyTest = e.key.toLowerCase() === 'delete' || e.key.toLowerCase() === 'backspace';\r\n }\r\n else {\r\n keyTest = e.keyCode === 8 || e.keyCode === 46;\r\n }\r\n if (overlay && keyTest &&\r\n e.target.nodeName.toLowerCase() !== 'textarea' &&\r\n e.target.nodeName.toLowerCase() !== 'input') {\r\n e.preventDefault();\r\n deleteAnnotation();\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mousedown event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentMousedown(e) {\r\n if (e.target !== overlay) {\r\n return;\r\n }\r\n\r\n // Highlight and strikeout annotations are bound to text within the document.\r\n // It doesn't make sense to allow repositioning these types of annotations.\r\n let annotationId = overlay.getAttribute('data-target-id');\r\n let target = document.querySelector(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n let type = target.getAttribute('data-pdf-annotate-type');\r\n\r\n if (type === 'highlight' || type === 'strikeout') { return; }\r\n\r\n isDragging = true;\r\n dragOffsetX = e.clientX;\r\n dragOffsetY = e.clientY;\r\n dragStartX = overlay.offsetLeft;\r\n dragStartY = overlay.offsetTop;\r\n\r\n overlay.style.background = 'rgba(255, 255, 255, 0.7)';\r\n overlay.style.cursor = 'move';\r\n overlay.querySelector('a').style.display = 'none';\r\n\r\n document.addEventListener('mousemove', handleDocumentMousemove);\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentMousemove(e) {\r\n let parentNode = overlay.parentNode;\r\n let rect = parentNode.getBoundingClientRect();\r\n let y = (dragStartY + (e.clientY - dragOffsetY));\r\n let x = (dragStartX + (e.clientX - dragOffsetX));\r\n let minY = 0;\r\n let maxY = rect.height;\r\n let minX = 0;\r\n let maxX = rect.width;\r\n\r\n if (y > minY && y + overlay.offsetHeight < maxY) {\r\n overlay.style.top = `${y}px`;\r\n }\r\n\r\n if (x > minX && x + overlay.offsetWidth < maxX) {\r\n overlay.style.left = `${x}px`;\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let annotationId = overlay.getAttribute('data-target-id');\r\n let target = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n let type = target[0].getAttribute('data-pdf-annotate-type');\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let { documentId } = getMetadata(svg);\r\n\r\n overlay.querySelector('a').style.display = '';\r\n\r\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\r\n let attribX = 'x';\r\n let attribY = 'y';\r\n if (['circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\r\n attribX = 'cx';\r\n attribY = 'cy';\r\n }\r\n\r\n if (type === 'point') {\r\n // Broken\r\n /*\r\n [...target].forEach((t, i) => {\r\n let moveTo = {\r\n x: overlay.offsetLeft + 3,\r\n y: overlay.offsetTop + 3\r\n };\r\n t.setAttribute(attribX, moveTo.x);\r\n t.setAttribute(attribY, moveTo.y);\r\n annotation[attribX] = moveTo.x;\r\n annotation[attribY] = moveTo.y;\r\n });\r\n */\r\n return;\r\n }\r\n else if (['area', 'highlight', 'textbox', 'circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\r\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\r\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\r\n let modelDelta = {\r\n x: modelEnd[0] - modelStart[0],\r\n y: modelEnd[1] - modelStart[1]\r\n };\r\n\r\n if (type === 'textbox') {\r\n target = [target[0].firstChild];\r\n }\r\n\r\n [...target].forEach((t, i) => {\r\n let modelX = parseInt(t.getAttribute(attribX), 10);\r\n let modelY = parseInt(t.getAttribute(attribY), 10);\r\n if (modelDelta.y !== 0) {\r\n modelY = modelY + modelDelta.y;\r\n\r\n t.setAttribute(attribY, modelY);\r\n if (annotation.rectangles && i < annotation.rectangles.length) {\r\n annotation.rectangles[i].y = modelY;\r\n }\r\n else if (annotation[attribY]) {\r\n annotation[attribY] = modelY;\r\n }\r\n }\r\n if (modelDelta.x !== 0) {\r\n modelX = modelX + modelDelta.x;\r\n\r\n t.setAttribute(attribX, modelX);\r\n if (annotation.rectangles && i < annotation.rectangles.length) {\r\n annotation.rectangles[i].x = modelX;\r\n }\r\n else if (annotation[attribX]) {\r\n annotation[attribX] = modelX;\r\n }\r\n }\r\n });\r\n }\r\n else if (type === 'strikeout') {\r\n return;\r\n // let { deltaX, deltaY } = getDelta('x1', 'y1');\r\n // [...target].forEach(target, (t, i) => {\r\n // if (deltaY !== 0) {\r\n // t.setAttribute('y1', parseInt(t.getAttribute('y1'), 10) + deltaY);\r\n // t.setAttribute('y2', parseInt(t.getAttribute('y2'), 10) + deltaY);\r\n // annotation.rectangles[i].y = parseInt(t.getAttribute('y1'), 10);\r\n // }\r\n // if (deltaX !== 0) {\r\n // t.setAttribute('x1', parseInt(t.getAttribute('x1'), 10) + deltaX);\r\n // t.setAttribute('x2', parseInt(t.getAttribute('x2'), 10) + deltaX);\r\n // annotation.rectangles[i].x = parseInt(t.getAttribute('x1'), 10);\r\n // }\r\n // });\r\n }\r\n else if (type === 'drawing' || type === 'arrow') {\r\n // Do nothing as currently broken\r\n /*\r\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\r\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\r\n let modelDelta = {\r\n x: modelEnd[0] - modelStart[0],\r\n y: modelEnd[1] - modelStart[1]\r\n };\r\n\r\n annotation.lines.forEach((line, i) => {\r\n let [x, y] = annotation.lines[i];\r\n annotation.lines[i][0] = x + modelDelta.x;\r\n annotation.lines[i][1] = y + modelDelta.y;\r\n });\r\n\r\n target[0].parentNode.removeChild(target[0]);\r\n appendChild(svg, annotation);\r\n */\r\n return;\r\n }\r\n\r\n PDFJSAnnotate.getStoreAdapter().editAnnotation(documentId, annotationId, annotation);\r\n });\r\n\r\n setTimeout(() => {\r\n isDragging = false;\r\n }, 0);\r\n\r\n overlay.style.background = '';\r\n overlay.style.cursor = '';\r\n\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n enableUserSelect();\r\n}\r\n\r\n/**\r\n * Handle annotation.click event\r\n *\r\n * @param {Element} e The annotation element that was clicked\r\n */\r\nfunction handleAnnotationClick(target) {\r\n createEditOverlay(target);\r\n}\r\n\r\n/**\r\n * Enable edit mode behavior.\r\n */\r\nexport function enableEdit() {\r\n if (_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = true;\r\n addEventListener('annotation:click', handleAnnotationClick);\r\n};\r\n\r\n/**\r\n * Disable edit mode behavior.\r\n */\r\nexport function disableEdit() {\r\n destroyEditOverlay();\r\n\r\n if (!_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = false;\r\n removeEventListener('annotation:click', handleAnnotationClick);\r\n};\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _candraw = false;\r\nlet _penSize;\r\nlet _penColor;\r\nlet path;\r\nlet lines = [];\r\n\r\n/**\r\n * Handle document.touchdown or document.pointerdown event\r\n * @param {PointerEvent} e The DOM event to be handled\r\n */\r\nfunction handleDocumentPointerdown(e) {\r\n path = null;\r\n lines = [];\r\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n _candraw = true;\r\n e.preventDefault();\r\n}\r\n\r\n/**\r\n * Handle document.pointerup event\r\n *\r\n * @param {PointerEvent} e The DOM event to be handled\r\n */\r\nfunction handleDocumentPointerup(e) {\r\n saveToStorage(e.clientX, e.clientY);\r\n}\r\n\r\nfunction saveToStorage(x, y) {\r\n if (!_candraw) {\r\n return;\r\n }\r\n _candraw = false;\r\n let svg;\r\n if (lines.length > 1 && (svg = findSVGAtPoint(x, y))) {\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\r\n type: 'drawing',\r\n width: _penSize,\r\n color: _penColor,\r\n lines\r\n }).then((annotation) => {\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {PointerEvent} e The DOM event to be handled\r\n */\r\nfunction handleDocumentPointermove(e) {\r\n if (!findSVGAtPoint(e.clientX, e.clientY) || !_candraw) {\r\n return;\r\n }\r\n savePoint(e.clientX, e.clientY);\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {KeyboardEvent} e The DOM event to be handled\r\n * } e The DOM event to be handled\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // Cancel rect if Esc is pressed\r\n if (e.keyCode === 27) {\r\n lines = null;\r\n path.parentNode.removeChild(path);\r\n document.removeEventListener('pointermove', handleDocumentPointermove);\r\n document.removeEventListener('pointerup', handleDocumentPointerup);\r\n }\r\n}\r\n\r\n/**\r\n * Save a point to the line being drawn.\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n */\r\nfunction savePoint(x, y) {\r\n let svg = findSVGAtPoint(x, y);\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n let point = convertToSvgPoint([\r\n x - rect.left,\r\n y - rect.top\r\n ], svg);\r\n point[0] = point[0].toFixed(2);\r\n point[1] = point[1].toFixed(2);\r\n lines.push(point);\r\n\r\n if (lines.length <= 1) {\r\n return;\r\n }\r\n\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n path = appendChild(svg, {\r\n type: 'drawing',\r\n color: _penColor,\r\n width: _penSize,\r\n lines\r\n });\r\n}\r\n\r\n/**\r\n * Set the attributes of the pen.\r\n *\r\n * @param {Number} penSize The size of the lines drawn by the pen, rounded to 2 decimal places\r\n * @param {String} penColor The color of the lines drawn by the pen\r\n */\r\nexport function setPen(penSize = 1, penColor = '000000') {\r\n _penSize = Math.round(parseFloat(penSize) * 1e2) / 1e2;\r\n _penColor = penColor;\r\n}\r\n\r\n/**\r\n * Return pen attributes of the pen\r\n *\r\n * @return {Object} Object with size and color\r\n */\r\nexport function getPen() {\r\n return {\r\n size: _penSize,\r\n color: _penColor\r\n };\r\n}\r\n\r\n/**\r\n * Enable the pen behavior\r\n */\r\nexport function enablePen() {\r\n if (_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = true;\r\n // Chrome and Firefox has different behaviors with how pen works, so we need different events.\r\n document.addEventListener('pointerdown', handleDocumentPointerdown);\r\n document.addEventListener('pointermove', handleDocumentPointermove);\r\n document.addEventListener('pointerup', handleDocumentPointerup);\r\n\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Disable the pen behavior\r\n */\r\nexport function disablePen() {\r\n if (!_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = false;\r\n document.removeEventListener('pointerdown', handleDocumentPointerdown);\r\n document.removeEventListener('pointermove', handleDocumentPointermove);\r\n document.removeEventListener('pointerup', handleDocumentPointerup);\r\n\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n enableUserSelect();\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGAtPoint,\r\n findSVGContainer,\r\n getMetadata,\r\n convertToSvgPoint,\r\n convertToScreenPoint,\r\n findAnnotationAtPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _penSize;\r\nlet _penColor;\r\nlet path;\r\nlet lines;\r\nlet originY;\r\nlet originX;\r\n\r\n/**\r\n * Handle document.mousedown event\r\n */\r\nfunction handleDocumentMousedown(e) {\r\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\r\n if (target === null) {\r\n return;\r\n }\r\n\r\n let type = target.getAttribute('data-pdf-annotate-type');\r\n if (type !== 'circle' && type !== 'fillcircle' && type !== 'emptycircle') {\r\n return;\r\n }\r\n\r\n let svg = findSVGContainer(target);\r\n let { documentId } = getMetadata(svg);\r\n let annotationId = target.getAttribute('data-pdf-annotate-id');\r\n\r\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\r\n if (annotation) {\r\n path = null;\r\n lines = [];\r\n\r\n let point = convertToScreenPoint([\r\n annotation.cx,\r\n annotation.cy\r\n ], svg);\r\n\r\n let rect = svg.getBoundingClientRect();\r\n\r\n originX = point[0] + rect.left;\r\n originY = point[1] + rect.top;\r\n\r\n document.addEventListener('mousemove', handleDocumentMousemove);\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let svg;\r\n if (lines.length > 1 && (svg = findSVGAtPoint(e.clientX, e.clientY))) {\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\r\n type: 'arrow',\r\n width: _penSize,\r\n color: _penColor,\r\n lines\r\n }).then((annotation) => {\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\nfunction handleDocumentMousemove(e) {\r\n let x = lines.length === 0 ? originX : e.clientX;\r\n let y = lines.length === 0 ? originY : e.clientY;\r\n\r\n savePoint(x, y);\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // Cancel rect if Esc is pressed\r\n if (e.keyCode === 27) {\r\n lines = null;\r\n path.parentNode.removeChild(path);\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n }\r\n}\r\n\r\n/**\r\n * Save a point to the line being drawn.\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n */\r\nfunction savePoint(x, y) {\r\n let svg = findSVGAtPoint(x, y);\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n let point = convertToSvgPoint([\r\n x - rect.left,\r\n y - rect.top\r\n ], svg);\r\n\r\n if (lines.length < 2) {\r\n lines.push(point);\r\n return;\r\n }\r\n else {\r\n lines[1] = point; // update end point\r\n }\r\n\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n path = appendChild(svg, {\r\n type: 'arrow',\r\n color: _penColor,\r\n width: _penSize,\r\n lines\r\n });\r\n}\r\n\r\n/**\r\n * Set the attributes of the pen.\r\n *\r\n * @param {Number} penSize The size of the lines drawn by the pen\r\n * @param {String} penColor The color of the lines drawn by the pen\r\n */\r\nexport function setArrow(penSize = 10, penColor = '0000FF') {\r\n _penSize = parseInt(penSize, 10);\r\n _penColor = penColor;\r\n}\r\n\r\n/**\r\n * Enable the pen behavior\r\n */\r\nexport function enableArrow() {\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mousedown', handleDocumentMousedown);\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Disable the pen behavior\r\n */\r\nexport function disableArrow() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mousedown', handleDocumentMousedown);\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n enableUserSelect();\r\n}\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport {\r\n findAnnotationAtPoint,\r\n getMetadata\r\n} from './utils';\r\n\r\nlet _canerase = false;\r\nlet previousPoint = null;\r\n\r\n/**\r\n *\r\n * @param {PointerEvent} e DOM event to handle\r\n */\r\nfunction handleDocumentDown(e) {\r\n _canerase = true;\r\n previousPoint = [e.clientX, e.clientY];\r\n}\r\n\r\n/**\r\n *\r\n * @param {PointerEvent} e DOM event to handle\r\n */\r\nfunction handleDocumentUp(e) {\r\n _canerase = false;\r\n erase(findAnnotationAtPoint(e.clientX, e.clientY));\r\n}\r\n\r\n/**\r\n *\r\n * @param {PointerEvent} e DOM event to handle\r\n */\r\nfunction handleDocumentMouseMove(e) {\r\n if (!_canerase) {\r\n return;\r\n }\r\n\r\n // This algorithm attempts to get the various points between the last\r\n // PointerEvent and this one\r\n let check = [];\r\n let diffX = Math.abs(previousPoint[0] - e.clientX);\r\n let diffY = Math.abs(previousPoint[1] - e.clientY);\r\n if (diffX >= 1 || diffY >= 1) {\r\n let maxSteps = Math.round(Math.max(diffX, diffY));\r\n let subStepSize = Math.min(diffX, diffY) / maxSteps;\r\n let smallerTest = diffX < diffY;\r\n let startPoint = [\r\n Math.min(previousPoint[0], e.clientX),\r\n Math.min(previousPoint[1], e.clientY)\r\n ];\r\n for (let i = 0; i < maxSteps; i++) {\r\n if (smallerTest) {\r\n check.push([Math.round(startPoint[0] + (subStepSize * i)), Math.round(startPoint[1] + i)]);\r\n }\r\n else {\r\n check.push([Math.round(startPoint[0] + i), Math.round(startPoint[1] + (subStepSize * i))]);\r\n }\r\n }\r\n }\r\n for (let point of check) {\r\n erase(findAnnotationAtPoint(point[0], point[1]));\r\n }\r\n previousPoint = [e.clientX, e.clientY];\r\n}\r\n\r\nfunction erase(target) {\r\n if (!_canerase) {\r\n return;\r\n }\r\n\r\n if (target) {\r\n let { documentId } = getMetadata(target.parentElement);\r\n let annotationId = target.getAttribute('data-pdf-annotate-id');\r\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\r\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n [...nodes].forEach((n) => {\r\n n.parentNode.removeChild(n);\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport function enableEraser() {\r\n document.addEventListener('pointermove', handleDocumentMouseMove);\r\n document.addEventListener('pointerdown', handleDocumentDown);\r\n document.addEventListener('pointerup', handleDocumentUp);\r\n}\r\n\r\nexport function disableEraser() {\r\n document.removeEventListener('pointermove', handleDocumentMouseMove);\r\n document.removeEventListener('pointerdown', handleDocumentDown);\r\n document.removeEventListener('pointerup', handleDocumentUp);\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n BORDER_COLOR,\r\n findSVGAtPoint,\r\n getMetadata,\r\n scaleDown\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet input;\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} The DOM event to be handled\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n\r\n input = document.createElement('input');\r\n input.setAttribute('id', 'pdf-annotate-point-input');\r\n input.setAttribute('placeholder', 'Enter comment');\r\n input.style.border = `3px solid ${BORDER_COLOR}`;\r\n input.style.borderRadius = '3px';\r\n input.style.position = 'absolute';\r\n input.style.top = `${e.clientY}px`;\r\n input.style.left = `${e.clientX}px`;\r\n\r\n input.addEventListener('blur', handleInputBlur);\r\n input.addEventListener('keyup', handleInputKeyup);\r\n\r\n document.body.appendChild(input);\r\n input.focus();\r\n}\r\n\r\n/**\r\n * Handle input.blur event\r\n */\r\nfunction handleInputBlur() {\r\n savePoint();\r\n}\r\n\r\n/**\r\n * Handle input.keyup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleInputKeyup(e) {\r\n if (e.keyCode === 27) {\r\n closeInput();\r\n }\r\n else if (e.keyCode === 13) {\r\n savePoint();\r\n }\r\n}\r\n\r\n/**\r\n * Save a new point annotation from input\r\n */\r\nfunction savePoint() {\r\n if (input.value.trim().length > 0) {\r\n let clientX = parseInt(input.style.left, 10);\r\n let clientY = parseInt(input.style.top, 10);\r\n let content = input.value.trim();\r\n let svg = findSVGAtPoint(clientX, clientY);\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n let annotation = Object.assign({\r\n type: 'point'\r\n }, scaleDown(svg, {\r\n x: clientX - rect.left,\r\n y: clientY - rect.top\r\n }));\r\n\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n PDFJSAnnotate.getStoreAdapter().addComment(\r\n documentId,\r\n annotation.uuid,\r\n content\r\n );\r\n\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n\r\n closeInput();\r\n}\r\n\r\n/**\r\n * Close the input element\r\n */\r\nfunction closeInput() {\r\n input.removeEventListener('blur', handleInputBlur);\r\n input.removeEventListener('keyup', handleInputKeyup);\r\n document.body.removeChild(input);\r\n input = null;\r\n}\r\n\r\n/**\r\n * Enable point annotation behavior\r\n */\r\nexport function enablePoint() {\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Disable point annotation behavior\r\n */\r\nexport function disablePoint() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport config from '../config';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n BORDER_COLOR,\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgRect\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _type;\r\nlet overlay;\r\nlet originY;\r\nlet originX;\r\n\r\n/**\r\n * Get the current window selection as rects\r\n *\r\n * @return {Array} An Array of rects\r\n */\r\nfunction getSelectionRects() {\r\n try {\r\n let selection = window.getSelection();\r\n let range = selection.getRangeAt(0);\r\n let rects = range.getClientRects();\r\n\r\n if (rects.length > 0 &&\r\n rects[0].width > 0 &&\r\n rects[0].height > 0) {\r\n return rects;\r\n }\r\n }\r\n catch (e) {}\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Handle document.mousedown event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMousedown(e) {\r\n let svg;\r\n if (_type !== 'area' || !(svg = findSVGAtPoint(e.clientX, e.clientY))) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n originY = e.clientY;\r\n originX = e.clientX;\r\n\r\n overlay = document.createElement('div');\r\n overlay.style.position = 'absolute';\r\n overlay.style.top = `${originY - rect.top}px`;\r\n overlay.style.left = `${originX - rect.left}px`;\r\n overlay.style.border = `3px solid ${BORDER_COLOR}`;\r\n overlay.style.borderRadius = '3px';\r\n svg.parentNode.appendChild(overlay);\r\n\r\n document.addEventListener('mousemove', handleDocumentMousemove);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMousemove(e) {\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let rect = svg.getBoundingClientRect();\r\n\r\n if (originX + (e.clientX - originX) < rect.right) {\r\n overlay.style.width = `${e.clientX - originX}px`;\r\n }\r\n\r\n if (originY + (e.clientY - originY) < rect.bottom) {\r\n overlay.style.height = `${e.clientY - originY}px`;\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let rects;\r\n if (_type !== 'area' && (rects = getSelectionRects())) {\r\n saveRect(_type, [...rects].map((r) => {\r\n return {\r\n top: r.top,\r\n left: r.left,\r\n width: r.width,\r\n height: r.height\r\n };\r\n }));\r\n }\r\n else if (_type === 'area' && overlay) {\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let rect = svg.getBoundingClientRect();\r\n saveRect(_type, [{\r\n top: parseInt(overlay.style.top, 10) + rect.top,\r\n left: parseInt(overlay.style.left, 10) + rect.left,\r\n width: parseInt(overlay.style.width, 10),\r\n height: parseInt(overlay.style.height, 10)\r\n }]);\r\n\r\n overlay.parentNode.removeChild(overlay);\r\n overlay = null;\r\n\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n enableUserSelect();\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // Cancel rect if Esc is pressed\r\n if (e.keyCode === 27) {\r\n let selection = window.getSelection();\r\n selection.removeAllRanges();\r\n if (overlay && overlay.parentNode) {\r\n overlay.parentNode.removeChild(overlay);\r\n overlay = null;\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Save a rect annotation\r\n *\r\n * @param {String} type The type of rect (area, highlight, strikeout)\r\n * @param {Array} rects The rects to use for annotation\r\n * @param {String} color The color of the rects\r\n */\r\nfunction saveRect(type, rects, color) {\r\n let svg = findSVGAtPoint(rects[0].left, rects[0].top);\r\n let annotation;\r\n\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let boundingRect = svg.getBoundingClientRect();\r\n\r\n if (!color) {\r\n if (type === 'highlight') {\r\n color = 'FFFF00';\r\n }\r\n else if (type === 'strikeout') {\r\n color = 'FF0000';\r\n }\r\n }\r\n\r\n // Initialize the annotation\r\n annotation = {\r\n type,\r\n color,\r\n rectangles: [...rects].map((r) => {\r\n let offset = 0;\r\n\r\n if (type === 'strikeout') {\r\n offset = r.height / 2;\r\n }\r\n\r\n return convertToSvgRect({\r\n y: (r.top + offset) - boundingRect.top,\r\n x: r.left - boundingRect.left,\r\n width: r.width,\r\n height: r.height\r\n }, svg);\r\n }).filter((r) => r.width > 0 && r.height > 0 && r.x > -1 && r.y > -1)\r\n };\r\n\r\n // Short circuit if no rectangles exist\r\n if (annotation.rectangles.length === 0) {\r\n return;\r\n }\r\n\r\n // Special treatment for area as it only supports a single rect\r\n if (type === 'area') {\r\n let rect = annotation.rectangles[0];\r\n delete annotation.rectangles;\r\n annotation.x = rect.x;\r\n annotation.y = rect.y;\r\n annotation.width = rect.width;\r\n annotation.height = rect.height;\r\n }\r\n\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n\r\n // Add the annotation\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n appendChild(svg, annotation);\r\n });\r\n}\r\n\r\n/**\r\n * Enable rect behavior\r\n */\r\nexport function enableRect(type) {\r\n _type = type;\r\n\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n document.addEventListener('mousedown', handleDocumentMousedown);\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n}\r\n\r\n/**\r\n * Disable rect behavior\r\n */\r\nexport function disableRect() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n document.removeEventListener('mousedown', handleDocumentMousedown);\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n}\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _type;\r\nlet _circleRadius = 10;\r\nlet _circleColor = '0000FF';\r\n\r\n/**\r\n * Set the attributes of the pen.\r\n *\r\n * @param {Number} circleRadius The radius of the circle\r\n * @param {String} circleColor The color of the circle\r\n */\r\nexport function setCircle(circleRadius = 10, circleColor = '0000FF') {\r\n _circleRadius = parseInt(circleRadius, 10);\r\n _circleColor = circleColor;\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let svg = findSVGAtPoint(e.clientX, e.clientY);\r\n if (!svg) {\r\n return;\r\n }\r\n let rect = svg.getBoundingClientRect();\r\n saveCircle(svg, _type, {\r\n x: e.clientX - rect.left,\r\n y: e.clientY - rect.top\r\n }, _circleRadius, _circleColor);\r\n}\r\n\r\n/**\r\n * Save a circle annotation\r\n *\r\n * @param {SVGElement} svg\r\n * @param {String} type The type of circle (circle, emptycircle, fillcircle)\r\n * @param {Object} pt The point to use for annotation\r\n * @param {float} radius\r\n * @param {String} color The color of the rects\r\n */\r\nfunction saveCircle(svg, type, pt, radius, color) {\r\n // Initialize the annotation\r\n let svg_pt = convertToSvgPoint([ pt.x, pt.y ], svg);\r\n let annotation = {\r\n type,\r\n color,\r\n cx: svg_pt[0],\r\n cy: svg_pt[1],\r\n r: radius\r\n };\r\n\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n\r\n // Add the annotation\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n appendChild(svg, annotation);\r\n });\r\n}\r\n\r\n/**\r\n * Enable circle behavior\r\n */\r\nexport function enableCircle(type) {\r\n _type = type;\r\n\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Disable circle behavior\r\n */\r\nexport function disableCircle() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\nexport function addCircle(type, e) {\r\n let oldType = _type;\r\n _type = type;\r\n handleDocumentMouseup(e);\r\n _type = oldType;\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n BORDER_COLOR,\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet input;\r\nlet _textSize = localStorage.getItem(`text/size`) || 12;\r\nlet _textColor = localStorage.getItem(`text/color`) || '#000000';\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n if (!e.srcElement.classList.contains('annotationLayer')) {\r\n return;\r\n }\r\n input = document.createElement('textarea');\r\n input.setAttribute('id', 'pdf-annotate-text-input');\r\n input.setAttribute('placeholder', 'Enter text... SHIFT + ENTER for new line');\r\n input.style.border = `3px solid ${BORDER_COLOR}`;\r\n input.style.borderRadius = '3px';\r\n input.style.position = 'fixed';\r\n input.style.top = `${e.clientY}px`;\r\n input.style.left = `${e.clientX}px`;\r\n input.style.fontSize = `${_textSize}px`;\r\n input.style.zIndex = '41';\r\n input.addEventListener('blur', handleInputBlur);\r\n input.addEventListener('keyup', handleInputKeyup);\r\n\r\n document.body.appendChild(input);\r\n input.focus();\r\n}\r\n\r\n/**\r\n * Handle input.blur event\r\n */\r\nfunction handleInputBlur() {\r\n saveText();\r\n}\r\n\r\n/**\r\n * Handle input.keyup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleInputKeyup(e) {\r\n if (e.keyCode === 27) {\r\n closeInput();\r\n }\r\n else if (e.keyCode === 13 && !e.shiftKey) {\r\n saveText();\r\n }\r\n}\r\n\r\n/**\r\n * Save a text annotation from input\r\n */\r\nfunction saveText() {\r\n let value = (input.value) ? input.value.replace(/ +$/, '') : '';\r\n if (value.length > 0) {\r\n let clientX = parseInt(input.style.left, 10);\r\n let clientY = parseInt(input.style.top, 10);\r\n let svg = findSVGAtPoint(clientX, clientY);\r\n if (!svg) {\r\n return;\r\n }\r\n let height = _textSize;\r\n let { documentId, pageNumber, viewport } = getMetadata(svg);\r\n let scale = 1 / viewport.scale;\r\n let rect = svg.getBoundingClientRect();\r\n let pt = convertToSvgPoint([\r\n clientX - rect.left,\r\n clientY - rect.top + height], svg, viewport);\r\n let annotation = {\r\n type: 'textbox',\r\n size: _textSize * scale,\r\n color: _textColor,\r\n content: value,\r\n x: pt[0],\r\n y: pt[1],\r\n rotation: -viewport.rotation\r\n };\r\n\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n\r\n closeInput();\r\n}\r\n\r\n/**\r\n * Close the input\r\n */\r\nfunction closeInput() {\r\n if (input) {\r\n input.removeEventListener('blur', handleInputBlur);\r\n input.removeEventListener('keyup', handleInputKeyup);\r\n document.body.removeChild(input);\r\n input = null;\r\n }\r\n}\r\n\r\n/**\r\n * Set the text attributes\r\n *\r\n * @param {Number} textSize The size of the text\r\n * @param {String} textColor The color of the text\r\n */\r\nexport function setText(textSize = 12, textColor = '000000') {\r\n _textSize = parseInt(textSize, 10);\r\n _textColor = textColor;\r\n}\r\n\r\n/**\r\n * Enable text behavior\r\n */\r\nexport function enableText() {\r\n if (_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Disable text behavior\r\n */\r\nexport function disableText() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n","/**\r\n * Create a node that is only visible to screen readers\r\n *\r\n * @param {String} content The text content that should be read by screen reader\r\n * @param {String} [annotationId] The ID of the annotation assocaited\r\n * @return {Element} An Element that is only visible to screen readers\r\n */\r\nexport default function createScreenReaderOnly(content, annotationId) {\r\n let node = document.createElement('div');\r\n let text = document.createTextNode(content);\r\n node.appendChild(text);\r\n node.setAttribute('id', `pdf-annotate-screenreader-${annotationId}`);\r\n node.style.position = 'absolute';\r\n node.style.left = '-10000px';\r\n node.style.top = 'auto';\r\n node.style.width = '1px';\r\n node.style.height = '1px';\r\n node.style.overflow = 'hidden';\r\n return node;\r\n}\r\n","import config from '../config';\r\nimport {\r\n pointIntersectsRect,\r\n scaleUp,\r\n scaleDown\r\n} from '../UI/utils';\r\n\r\n/**\r\n * Insert an element at a point within the document.\r\n * This algorithm will only insert within an element amidst it's text content.\r\n *\r\n * @param {Element} el The element to be inserted\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Number} pageNumber The page number to limit elements to\r\n * @param {Boolean} insertBefore Whether the element is to be inserted before or after x\r\n * @return {Boolean} True if element was able to be inserted, otherwise false\r\n */\r\nexport default function insertElementWithinElement(el, x, y, pageNumber, insertBefore) {\r\n const OFFSET_ADJUST = 2;\r\n\r\n // If inserting before adjust `x` by looking for element a few px to the right\r\n // Otherwise adjust a few px to the left\r\n // This is to allow a little tolerance by searching within the box, instead\r\n // of getting a false negative by testing right on the border.\r\n x = Math.max(x + (OFFSET_ADJUST * (insertBefore ? 1 : -1)), 0);\r\n\r\n let node = textLayerElementFromPoint(x, y + OFFSET_ADJUST, pageNumber);\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n // Now that node has been found inverse the adjustment for `x`.\r\n // This is done to accomodate tolerance by cutting off on the outside of the\r\n // text boundary, instead of missing a character by cutting off within.\r\n x = x + (OFFSET_ADJUST * (insertBefore ? -1 : 1));\r\n\r\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\r\n let left = scaleDown(svg, {left: node.getBoundingClientRect().left}).left - svg.getBoundingClientRect().left;\r\n let temp = node.cloneNode(true);\r\n let head = temp.innerHTML.split('');\r\n let tail = [];\r\n\r\n // Insert temp off screen\r\n temp.style.position = 'absolute';\r\n temp.style.top = '-10000px';\r\n temp.style.left = '-10000px';\r\n document.body.appendChild(temp);\r\n\r\n while (head.length) {\r\n // Don't insert within HTML tags\r\n if (head[head.length - 1] === '>') {\r\n while (head.length) {\r\n tail.unshift(head.pop());\r\n if (tail[0] === '<') {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Check if width of temp based on current head value satisfies x\r\n temp.innerHTML = head.join('');\r\n let width = scaleDown(svg, {width: temp.getBoundingClientRect().width}).width;\r\n if (left + width <= x) {\r\n break;\r\n }\r\n tail.unshift(head.pop());\r\n }\r\n\r\n // Update original node with new markup, including element to be inserted\r\n node.innerHTML = head.join('') + el.outerHTML + tail.join('');\r\n temp.parentNode.removeChild(temp);\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Get a text layer element at a given point on a page\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Number} pageNumber The page to limit elements to\r\n * @return {Element} First text layer element found at the point\r\n */\r\nfunction textLayerElementFromPoint(x, y, pageNumber) {\r\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\r\n let rect = svg.getBoundingClientRect();\r\n y = scaleUp(svg, {y}).y + rect.top;\r\n x = scaleUp(svg, {x}).x + rect.left;\r\n return [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' [data-canvas-width]')].filter((el) => {\r\n return pointIntersectsRect(x, y, el.getBoundingClientRect());\r\n })[0];\r\n}\r\n","import config from '../config';\r\nimport insertElementWithinElement from './insertElementWithinElement';\r\nimport { pointIntersectsRect, scaleUp } from '../UI/utils';\r\n\r\n/**\r\n * Insert an element at a point within the document.\r\n * This algorithm will try to insert between elements if possible.\r\n * It will however use `insertElementWithinElement` if it is more accurate.\r\n *\r\n * @param {Element} el The element to be inserted\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Number} pageNumber The page number to limit elements to\r\n * @return {Boolean} True if element was able to be inserted, otherwise false\r\n */\r\nexport default function insertElementWithinChildren(el, x, y, pageNumber) {\r\n // Try and use most accurate method of inserting within an element\r\n if (insertElementWithinElement(el, x, y, pageNumber, true)) {\r\n return true;\r\n }\r\n\r\n // Fall back to inserting between elements\r\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\r\n let rect = svg.getBoundingClientRect();\r\n let nodes = [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' > div')];\r\n\r\n y = scaleUp(svg, {y}).y + rect.top;\r\n x = scaleUp(svg, {x}).x + rect.left;\r\n\r\n // Find the best node to insert before\r\n for (let i = 0, l = nodes.length; i < l; i++) {\r\n let n = nodes[i];\r\n let r = n.getBoundingClientRect();\r\n if (y <= r.top) {\r\n n.parentNode.insertBefore(el, n);\r\n return true;\r\n }\r\n }\r\n\r\n // If all else fails try to append to the bottom\r\n let textLayer = svg.parentNode.querySelector(config.textClassQuery());\r\n if (textLayer) {\r\n let textRect = textLayer.getBoundingClientRect();\r\n if (pointIntersectsRect(x, y, textRect)) {\r\n textLayer.appendChild(el);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n","/**\r\n * Insert a comment into the DOM to be available by screen reader\r\n *\r\n * @param {Object} comment The comment to be inserted\r\n */\r\nexport default function insertScreenReaderComment(comment) {\r\n if (!comment) {\r\n return;\r\n }\r\n\r\n let list = document.querySelector(`#pdf-annotate-screenreader-${comment.annotation} ol`);\r\n if (list) {\r\n let item = document.createElement('li');\r\n item.setAttribute('id', `pdf-annotate-screenreader-comment-${comment.uuid}`);\r\n item.appendChild(document.createTextNode(`${comment.content}`));\r\n list.appendChild(item);\r\n }\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport insertScreenReaderComment from './insertScreenReaderComment';\r\n\r\n/**\r\n * Insert the comments into the DOM to be available by screen reader\r\n *\r\n * Example output:\r\n *
\r\n *
Begin highlight 1
\r\n *
    \r\n *
  1. Foo
  2. \r\n *
  3. Bar
  4. \r\n *
  5. Baz
  6. \r\n *
  7. Qux
  8. \r\n *
\r\n *
\r\n *
Some highlighted text goes here...
\r\n *
End highlight 1
\r\n *\r\n * NOTE: `screenReaderOnly` is not a real class, just used for brevity\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} annotationId The ID of the annotation\r\n * @param {Array} [comments] Optionally preloaded comments to be rendered\r\n * @return {Promise} Promise that once has comments, render them for screen reader\r\n */\r\nexport default function renderScreenReaderComments(documentId, annotationId, comments) {\r\n let promise;\r\n\r\n if (Array.isArray(comments)) {\r\n promise = Promise.resolve(comments);\r\n }\r\n else {\r\n promise = PDFJSAnnotate.getStoreAdapter().getComments(documentId, annotationId);\r\n }\r\n\r\n return promise.then((comments) => {\r\n // Node needs to be found by querying DOM as it may have been inserted as innerHTML\r\n // leaving `screenReaderNode` as an invalid reference (see `insertElementWithinElement`).\r\n let node = document.getElementById(`pdf-annotate-screenreader-${annotationId}`);\r\n if (node) {\r\n let list = document.createElement('ol');\r\n list.setAttribute('id', `pdf-annotate-screenreader-comment-list-${annotationId}`);\r\n list.setAttribute('aria-label', 'Comments');\r\n node.appendChild(list);\r\n comments.forEach(insertScreenReaderComment);\r\n }\r\n });\r\n}\r\n","import createScreenReaderOnly from './createScreenReaderOnly';\r\nimport insertElementWithinChildren from './insertElementWithinChildren';\r\nimport insertElementWithinElement from './insertElementWithinElement';\r\nimport renderScreenReaderComments from './renderScreenReaderComments';\r\n\r\n// Annotation types that support comments\r\nconst COMMENT_TYPES = ['highlight', 'point', 'area', 'circle', 'emptycircle', 'fillcircle'];\r\n\r\n/**\r\n * Insert a hint into the DOM for screen readers for a specific annotation.\r\n *\r\n * @param {Object} annotation The annotation to insert a hint for\r\n * @param {Number} num The number of the annotation out of all annotations of the same type\r\n */\r\nexport default function insertScreenReaderHint(annotation, num = 0) {\r\n switch (annotation.type) {\r\n case 'highlight':\r\n case 'strikeout':\r\n let rects = annotation.rectangles;\r\n let first = rects[0];\r\n let last = rects[rects.length - 1];\r\n\r\n insertElementWithinElement(\r\n createScreenReaderOnly(`Begin ${annotation.type} annotation ${num}`, annotation.uuid),\r\n first.x, first.y, annotation.page, true\r\n );\r\n\r\n insertElementWithinElement(\r\n createScreenReaderOnly(`End ${annotation.type} annotation ${num}`, `${annotation.uuid}-end`),\r\n last.x + last.width, last.y, annotation.page, false\r\n );\r\n break;\r\n\r\n case 'textbox':\r\n case 'point':\r\n let text = annotation.type === 'textbox' ? ` (content: ${annotation.content})` : '';\r\n\r\n insertElementWithinChildren(\r\n createScreenReaderOnly(`${annotation.type} annotation ${num}${text}`, annotation.uuid),\r\n annotation.x, annotation.y, annotation.page\r\n );\r\n break;\r\n\r\n case 'drawing':\r\n case 'area':\r\n let x = typeof annotation.x !== 'undefined' ? annotation.x : annotation.lines[0][0];\r\n let y = typeof annotation.y !== 'undefined' ? annotation.y : annotation.lines[0][1];\r\n\r\n insertElementWithinChildren(\r\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\r\n x, y, annotation.page\r\n );\r\n break;\r\n\r\n case 'circle':\r\n case 'fillcircle':\r\n case 'emptycircle':\r\n let x2 = typeof annotation.cx !== 'undefined' ? annotation.cx : annotation.lines[0][0];\r\n let y2 = typeof annotation.cy !== 'undefined' ? annotation.cy : annotation.lines[0][1];\r\n\r\n insertElementWithinChildren(\r\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\r\n x2, y2, annotation.page\r\n );\r\n break;\r\n }\r\n\r\n // Include comments in screen reader hint\r\n if (COMMENT_TYPES.includes(annotation.type)) {\r\n renderScreenReaderComments(annotation.documentId, annotation.uuid);\r\n }\r\n}\r\n","import renderScreenReaderHints from './renderScreenReaderHints';\r\nimport insertScreenReaderComment from './insertScreenReaderComment';\r\nimport renderScreenReaderComments from './renderScreenReaderComments';\r\nimport { addEventListener } from '../UI/event';\r\nimport PDFJSAnnotate from '../PDFJSAnnotate';\r\n\r\n/**\r\n * Initialize the event handlers for keeping screen reader hints synced with data\r\n */\r\nexport default function initEventHandlers() {\r\n addEventListener('annotation:add', (documentId, pageNumber, annotation) => {\r\n reorderAnnotationsByType(documentId, pageNumber, annotation.type);\r\n });\r\n addEventListener('annotation:edit', (documentId, annotationId, annotation) => {\r\n reorderAnnotationsByType(documentId, annotation.page, annotation.type);\r\n });\r\n addEventListener('annotation:delete', removeAnnotation);\r\n addEventListener('comment:add', insertComment);\r\n addEventListener('comment:delete', removeComment);\r\n}\r\n\r\n/**\r\n * Reorder the annotation numbers by annotation type\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {Number} pageNumber The page number of the annotations\r\n * @param {Strig} type The annotation type\r\n */\r\nfunction reorderAnnotationsByType(documentId, pageNumber, type) {\r\n PDFJSAnnotate.getStoreAdapter().getAnnotations(documentId, pageNumber)\r\n .then((annotations) => {\r\n return annotations.annotations.filter((a) => {\r\n return a.type === type;\r\n });\r\n })\r\n .then((annotations) => {\r\n annotations.forEach((a) => {\r\n removeAnnotation(documentId, a.uuid);\r\n });\r\n\r\n return annotations;\r\n })\r\n .then(renderScreenReaderHints);\r\n}\r\n\r\n/**\r\n * Remove the screen reader hint for an annotation\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} annotationId The Id of the annotation\r\n */\r\nfunction removeAnnotation(documentId, annotationId) {\r\n removeElementById(`pdf-annotate-screenreader-${annotationId}`);\r\n removeElementById(`pdf-annotate-screenreader-${annotationId}-end`);\r\n}\r\n\r\n/**\r\n * Insert a screen reader hint for a comment\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} annotationId The ID of tha assocated annotation\r\n * @param {Object} comment The comment to insert a hint for\r\n */\r\nfunction insertComment(documentId, annotationId, comment) {\r\n let list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\r\n let promise;\r\n\r\n if (!list) {\r\n promise = renderScreenReaderComments(documentId, annotationId, []).then(() => {\r\n list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\r\n return true;\r\n });\r\n }\r\n else {\r\n promise = Promise.resolve(true);\r\n }\r\n\r\n promise.then(() => {\r\n insertScreenReaderComment(comment);\r\n });\r\n}\r\n\r\n/**\r\n * Remove a screen reader hint for a comment\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} commentId The ID of the comment\r\n */\r\nfunction removeComment(documentId, commentId) {\r\n removeElementById(`pdf-annotate-screenreader-comment-${commentId}`);\r\n}\r\n\r\n/**\r\n * Remove an element from the DOM by it's ID if it exists\r\n *\r\n * @param {String} elementId The ID of the element to be removed\r\n */\r\nfunction removeElementById(elementId) {\r\n let el = document.getElementById(elementId);\r\n if (el) {\r\n el.parentNode.removeChild(el);\r\n }\r\n}\r\n","import insertScreenReaderHint from './insertScreenReaderHint';\r\nimport initEventHandlers from './initEventHandlers';\r\n\r\n// TODO This is not the right place for this to live\r\ninitEventHandlers();\r\n\r\n/**\r\n * Insert hints into the DOM for screen readers.\r\n *\r\n * @param {Array} annotations The annotations that hints are inserted for\r\n */\r\nexport default function renderScreenReaderHints(annotations) {\r\n annotations = Array.isArray(annotations) ? annotations : [];\r\n\r\n // Insert hints for each type\r\n Object.keys(SORT_TYPES).forEach((type) => {\r\n let sortBy = SORT_TYPES[type];\r\n annotations\r\n .filter((a) => a.type === type)\r\n .sort(sortBy)\r\n .forEach((a, i) => insertScreenReaderHint(a, i + 1));\r\n });\r\n}\r\n\r\n// Sort annotations first by y, then by x.\r\n// This allows hints to be injected in the order they appear,\r\n// which makes numbering them easier.\r\nfunction sortByPoint(a, b) {\r\n if (a.y < b.y) {\r\n return a.x - b.x;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n\r\n// Sort annotation by it's first rectangle\r\nfunction sortByRectPoint(a, b) {\r\n return sortByPoint(a.rectangles[0], b.rectangles[0]);\r\n}\r\n\r\n// Sort annotation by it's first line\r\nfunction sortByLinePoint(a, b) {\r\n let lineA = a.lines[0];\r\n let lineB = b.lines[0];\r\n return sortByPoint(\r\n {x: lineA[0], y: lineA[1]},\r\n {x: lineB[0], y: lineB[1]}\r\n );\r\n}\r\n\r\n// Arrange supported types and associated sort methods\r\nconst SORT_TYPES = {\r\n 'highlight': sortByRectPoint,\r\n 'strikeout': sortByRectPoint,\r\n 'drawing': sortByLinePoint,\r\n 'textbox': sortByPoint,\r\n 'point': sortByPoint,\r\n 'area': sortByPoint\r\n};\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport config from '../config';\r\nimport renderScreenReaderHints from '../a11y/renderScreenReaderHints';\r\n\r\n// Template for creating a new page\r\nconst PAGE_TEMPLATE = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n`;\r\n\r\n/**\r\n * Create a new page to be appended to the DOM.\r\n *\r\n * @param {Number} pageNumber The page number that is being created\r\n * @return {HTMLElement}\r\n */\r\nexport function createPage(pageNumber) {\r\n let temp = document.createElement('div');\r\n temp.innerHTML = PAGE_TEMPLATE;\r\n\r\n let page = temp.children[0];\r\n let canvas = page.querySelector('canvas');\r\n\r\n page.setAttribute('id', `pageContainer${pageNumber}`);\r\n page.setAttribute('data-page-number', pageNumber);\r\n\r\n canvas.mozOpaque = true;\r\n canvas.setAttribute('id', `page${pageNumber}`);\r\n\r\n return page;\r\n}\r\n\r\n/**\r\n * Render a page that has already been created.\r\n *\r\n * @param {Number} pageNumber The page number to be rendered\r\n * @param {Object} renderOptions The options for rendering\r\n * @return {Promise} Settled once rendering has completed\r\n * A settled Promise will be either:\r\n * - fulfilled: [pdfPage, annotations]\r\n * - rejected: Error\r\n */\r\nexport function renderPage(pageNumber, renderOptions) {\r\n let {\r\n documentId,\r\n pdfDocument,\r\n scale,\r\n rotate\r\n } = renderOptions;\r\n\r\n const eventBus = new pdfjsViewer.EventBus();\r\n\r\n // Load the page and annotations\r\n return Promise.all([\r\n pdfDocument.getPage(pageNumber),\r\n PDFJSAnnotate.getAnnotations(documentId, pageNumber)\r\n ]).then(([pdfPage, annotations]) => {\r\n let page = document.getElementById(`pageContainer${pageNumber}`);\r\n let svg = page.querySelector(config.annotationClassQuery());\r\n let canvas = page.querySelector('.canvasWrapper canvas');\r\n let canvasContext = canvas.getContext('2d', {alpha: false});\r\n let totalRotation = (rotate + pdfPage.rotate) % 360;\r\n let viewport = pdfPage.getViewport({scale: scale, rotation: totalRotation});\r\n let transform = scalePage(pageNumber, viewport, canvasContext);\r\n\r\n // Render the page\r\n return Promise.all([\r\n pdfPage.render({ canvasContext, viewport, transform }).promise,\r\n PDFJSAnnotate.render(svg, viewport, annotations)\r\n ]).then(() => {\r\n // Text content is needed for a11y, but is also necessary for creating\r\n // highlight and strikeout annotations which require selecting text.\r\n return pdfPage.getTextContent({normalizeWhitespace: true}).then((textContent) => {\r\n return new Promise((resolve, reject) => {\r\n // Render text layer for a11y of text content\r\n let textLayer = page.querySelector(config.textClassQuery());\r\n let textLayerFactory = new pdfjsViewer.DefaultTextLayerFactory();\r\n let textLayerBuilder = textLayerFactory.createTextLayerBuilder(\r\n textLayer,\r\n pageNumber - 1,\r\n viewport,\r\n false,\r\n eventBus\r\n );\r\n textLayerBuilder.setTextContent(textContent);\r\n textLayerBuilder.render();\r\n\r\n // Enable a11y for annotations\r\n // Timeout is needed to wait for `textLayerBuilder.render`\r\n setTimeout(() => {\r\n try {\r\n renderScreenReaderHints(annotations.annotations);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n });\r\n }).then(() => {\r\n // Indicate that the page was loaded\r\n page.setAttribute('data-loaded', 'true');\r\n\r\n return [pdfPage, annotations];\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Scale the elements of a page.\r\n *\r\n * @param {Number} pageNumber The page number to be scaled\r\n * @param {Object} viewport The viewport of the PDF page (see pdfPage.getViewport(scale, rotate))\r\n * @param {Object} context The canvas context that the PDF page is rendered to\r\n * @return {Array} The transform data for rendering the PDF page\r\n */\r\nfunction scalePage(pageNumber, viewport, context) {\r\n let page = document.getElementById(`pageContainer${pageNumber}`);\r\n let canvas = page.querySelector('.canvasWrapper canvas');\r\n let svg = page.querySelector(config.annotationClassQuery());\r\n let wrapper = page.querySelector('.canvasWrapper');\r\n let textLayer = page.querySelector(config.textClassQuery());\r\n let outputScale = getOutputScale(context);\r\n let transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\r\n let sfx = approximateFraction(outputScale.sx);\r\n let sfy = approximateFraction(outputScale.sy);\r\n\r\n // Adjust width/height for scale\r\n page.style.visibility = '';\r\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\r\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\r\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px';\r\n canvas.style.height = roundToDivide(viewport.height, sfx[1]) + 'px';\r\n svg.setAttribute('width', viewport.width);\r\n svg.setAttribute('height', viewport.height);\r\n svg.style.width = `${viewport.width}px`;\r\n svg.style.height = `${viewport.height}px`;\r\n page.style.width = `${viewport.width}px`;\r\n page.style.height = `${viewport.height}px`;\r\n wrapper.style.width = `${viewport.width}px`;\r\n wrapper.style.height = `${viewport.height}px`;\r\n textLayer.style.width = `${viewport.width}px`;\r\n textLayer.style.height = `${viewport.height}px`;\r\n\r\n return transform;\r\n}\r\n\r\n/**\r\n * Approximates a float number as a fraction using Farey sequence (max order of 8).\r\n *\r\n * @param {Number} x Positive float number\r\n * @return {Array} Estimated fraction: the first array item is a numerator,\r\n * the second one is a denominator.\r\n */\r\nfunction approximateFraction(x) {\r\n // Fast path for int numbers or their inversions.\r\n if (Math.floor(x) === x) {\r\n return [x, 1];\r\n }\r\n\r\n const xinv = 1 / x;\r\n const limit = 8;\r\n if (xinv > limit) {\r\n return [1, limit];\r\n }\r\n else if (Math.floor(xinv) === xinv) {\r\n return [1, xinv];\r\n }\r\n\r\n const x_ = x > 1 ? xinv : x;\r\n\r\n // a/b and c/d are neighbours in Farey sequence.\r\n let a = 0; let b = 1; let c = 1; let d = 1;\r\n\r\n // Limit search to order 8.\r\n while (true) {\r\n // Generating next term in sequence (order of q).\r\n let p = a + c; let q = b + d;\r\n if (q > limit) {\r\n break;\r\n }\r\n if (x_ <= p / q) {\r\n c = p; d = q;\r\n }\r\n else {\r\n a = p; b = q;\r\n }\r\n }\r\n\r\n // Select closest of neighbours to x.\r\n if (x_ - a / b < c / d - x_) {\r\n return x_ === x ? [a, b] : [b, a];\r\n }\r\n else {\r\n return x_ === x ? [c, d] : [d, c];\r\n }\r\n}\r\n\r\nfunction getOutputScale(ctx) {\r\n let devicePixelRatio = window.devicePixelRatio || 1;\r\n let backingStoreRatio = ctx.webkitBackingStorePixelRatio ||\r\n ctx.mozBackingStorePixelRatio ||\r\n ctx.msBackingStorePixelRatio ||\r\n ctx.oBackingStorePixelRatio ||\r\n ctx.backingStorePixelRatio || 1;\r\n let pixelRatio = devicePixelRatio / backingStoreRatio;\r\n return {\r\n sx: pixelRatio,\r\n sy: pixelRatio,\r\n scaled: pixelRatio !== 1\r\n };\r\n}\r\n\r\nfunction roundToDivide(x, div) {\r\n let r = x % div;\r\n return r === 0 ? x : Math.round(x - r + div);\r\n}\r\n","import { addEventListener, removeEventListener, fireEvent } from './event';\r\nimport { disableEdit, enableEdit } from './edit';\r\nimport { disablePen, enablePen, setPen } from './pen';\r\nimport { disableArrow, enableArrow, setArrow } from './arrow';\r\nimport { disableEraser, enableEraser } from './eraser';\r\nimport { disablePoint, enablePoint } from './point';\r\nimport { disableRect, enableRect } from './rect';\r\nimport { disableCircle, enableCircle, setCircle, addCircle } from './circle';\r\nimport { disableText, enableText, setText } from './text';\r\nimport { createPage, renderPage } from './page';\r\n\r\nexport default {\r\n addEventListener,\r\n removeEventListener,\r\n fireEvent,\r\n\r\n disableEdit,\r\n enableEdit,\r\n\r\n disablePen,\r\n enablePen,\r\n setPen,\r\n\r\n disablePoint,\r\n enablePoint,\r\n\r\n disableRect,\r\n enableRect,\r\n\r\n disableCircle,\r\n enableCircle,\r\n setCircle,\r\n addCircle,\r\n\r\n disableArrow,\r\n enableArrow,\r\n setArrow,\r\n\r\n disableEraser,\r\n enableEraser,\r\n\r\n disableText,\r\n enableText,\r\n setText,\r\n\r\n createPage,\r\n renderPage\r\n};\r\n","import StoreAdapter from './adapter/StoreAdapter';\r\nimport LocalStoreAdapter from './adapter/LocalStoreAdapter';\r\nimport LocalUserStoreAdapter from './adapter/LocalUserStoreAdapter';\r\nimport render from './render';\r\nimport UI from './UI';\r\nimport config from './config';\r\nimport uuid from './utils/uuid';\r\nimport {\r\n findAnnotationAtPoint,\r\n findSVGContainer,\r\n convertToScreenPoint\r\n} from './UI/utils';\r\n\r\nexport default {\r\n findAnnotationAtPoint,\r\n findSVGContainer,\r\n convertToScreenPoint,\r\n\r\n /**\r\n * Abstract class that needs to be defined so PDFJSAnnotate\r\n * knows how to communicate with your server.\r\n */\r\n StoreAdapter,\r\n\r\n /**\r\n * Implementation of StoreAdapter that stores annotation data to localStorage.\r\n */\r\n LocalStoreAdapter,\r\n\r\n /**\r\n * Implementation of StoreAdapter that stores annotation data to localStorage particular\r\n * to a specific user\r\n */\r\n LocalUserStoreAdapter,\r\n\r\n /**\r\n * Abstract instance of StoreAdapter\r\n */\r\n __storeAdapter: new StoreAdapter(),\r\n\r\n /**\r\n * Getter for the underlying StoreAdapter property\r\n *\r\n * @return {StoreAdapter}\r\n */\r\n getStoreAdapter() {\r\n return this.__storeAdapter;\r\n },\r\n\r\n /**\r\n * Setter for the underlying StoreAdapter property\r\n *\r\n * @param {StoreAdapter} adapter The StoreAdapter implementation to be used.\r\n */\r\n setStoreAdapter(adapter) {\r\n // TODO this throws an error when bundled\r\n // if (!(adapter instanceof StoreAdapter)) {\r\n // throw new Error('adapter must be an instance of StoreAdapter');\r\n // }\r\n\r\n this.__storeAdapter = adapter;\r\n },\r\n\r\n /**\r\n * UI is a helper for instrumenting UI interactions for creating,\r\n * editing, and deleting annotations in the browser.\r\n */\r\n UI,\r\n\r\n /**\r\n * Render the annotations for a page in the PDF Document\r\n *\r\n * @param {SVGElement} svg The SVG element that annotations should be rendered to\r\n * @param {PageViewport} viewport The PDFPage.getViewport data\r\n * @param {Object} data The StoreAdapter.getAnnotations data\r\n * @return {Promise}\r\n */\r\n render,\r\n\r\n /**\r\n * Convenience method for getting annotation data\r\n *\r\n * @alias StoreAdapter.getAnnotations\r\n * @param {String} documentId The ID of the document\r\n * @param {String} pageNumber The page number\r\n * @return {Promise}\r\n */\r\n getAnnotations(documentId, pageNumber) {\r\n return this.getStoreAdapter().getAnnotations(...arguments);\r\n },\r\n\r\n config,\r\n\r\n uuid\r\n};\r\n","import { appendChild, transformChild } from './appendChild';\r\n\r\n/**\r\n * Render the response from PDFJSAnnotate.getStoreAdapter().getAnnotations to SVG\r\n *\r\n * @param {SVGElement} svg The SVG element to render the annotations to\r\n * @param {Object} viewport The page viewport data\r\n * @param {Object} data The response from PDFJSAnnotate.getStoreAdapter().getAnnotations\r\n * @return {Promise} Settled once rendering has completed\r\n * A settled Promise will be either:\r\n * - fulfilled: SVGElement\r\n * - rejected: Error\r\n */\r\nexport default function render(svg, viewport, data) {\r\n return new Promise((resolve, reject) => {\r\n // Reset the content of the SVG\r\n svg.setAttribute('data-pdf-annotate-container', true);\r\n svg.setAttribute('data-pdf-annotate-viewport', JSON.stringify(viewport));\r\n svg.removeAttribute('data-pdf-annotate-document');\r\n svg.removeAttribute('data-pdf-annotate-page');\r\n\r\n // If there's no data nothing can be done\r\n if (!data) {\r\n svg.innerHTML = '';\r\n return resolve(svg);\r\n }\r\n\r\n svg.setAttribute('data-pdf-annotate-document', data.documentId);\r\n svg.setAttribute('data-pdf-annotate-page', data.pageNumber);\r\n\r\n // Make sure annotations is an array\r\n if (!Array.isArray(data.annotations) || data.annotations.length === 0) {\r\n return resolve(svg);\r\n }\r\n\r\n // Append or transform annotation to svg\r\n data.annotations.forEach((a) => {\r\n let node = svg.querySelector('[data-pdf-annotate-id=\"' + a.uuid + '\"]');\r\n if (node) {\r\n transformChild(svg, node, viewport);\r\n }\r\n else {\r\n appendChild(svg, a, viewport);\r\n }\r\n });\r\n\r\n resolve(svg);\r\n });\r\n}\r\n","import PDFJSAnnotate from './src/PDFJSAnnotate';\r\n\r\nexport default PDFJSAnnotate;\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pdf-annotate.js","mappings":"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","sources":["webpack://PDFAnnotate/webpack/universalModuleDefinition","webpack://PDFAnnotate/./node_modules/events/events.js","webpack://PDFAnnotate/webpack/bootstrap","webpack://PDFAnnotate/webpack/runtime/compat get default export","webpack://PDFAnnotate/webpack/runtime/define property getters","webpack://PDFAnnotate/webpack/runtime/hasOwnProperty shorthand","webpack://PDFAnnotate/webpack/runtime/make namespace object","webpack://PDFAnnotate/./src/utils/abstractFunction.js","webpack://PDFAnnotate/./src/utils/setAttributes.js","webpack://PDFAnnotate/./src/utils/normalizeColor.js","webpack://PDFAnnotate/./src/render/renderPoint.js","webpack://PDFAnnotate/./src/render/renderRect.js","webpack://PDFAnnotate/./src/render/renderText.js","webpack://PDFAnnotate/./src/utils/mathUtils.js","webpack://PDFAnnotate/./src/render/appendChild.js","webpack://PDFAnnotate/./src/render/renderLine.js","webpack://PDFAnnotate/./src/render/renderCircle.js","webpack://PDFAnnotate/./src/render/renderPath.js","webpack://PDFAnnotate/./src/render/renderArrow.js","webpack://PDFAnnotate/./src/UI/utils.js","webpack://PDFAnnotate/./src/UI/event.js","webpack://PDFAnnotate/./src/adapter/StoreAdapter.js","webpack://PDFAnnotate/./src/utils/uuid.js","webpack://PDFAnnotate/./src/adapter/LocalStoreAdapter.js","webpack://PDFAnnotate/./src/adapter/LocalUserStoreAdapter.js","webpack://PDFAnnotate/./src/config.js","webpack://PDFAnnotate/./src/UI/edit.js","webpack://PDFAnnotate/./src/UI/pen.js","webpack://PDFAnnotate/./src/UI/arrow.js","webpack://PDFAnnotate/./src/UI/eraser.js","webpack://PDFAnnotate/./src/UI/point.js","webpack://PDFAnnotate/./src/UI/rect.js","webpack://PDFAnnotate/./src/UI/circle.js","webpack://PDFAnnotate/./src/UI/text.js","webpack://PDFAnnotate/./src/a11y/createScreenReaderOnly.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinElement.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinChildren.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderComment.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderComments.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderHint.js","webpack://PDFAnnotate/./src/a11y/initEventHandlers.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderHints.js","webpack://PDFAnnotate/./src/UI/page.js","webpack://PDFAnnotate/./src/UI/index.js","webpack://PDFAnnotate/./src/PDFJSAnnotate.js","webpack://PDFAnnotate/./src/render/index.js","webpack://PDFAnnotate/./index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PDFAnnotate\"] = factory();\n\telse\n\t\troot[\"PDFAnnotate\"] = factory();\n})(self, () => {\nreturn ","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Throw an Error for an abstract function that hasn't been implemented.\n *\n * @param {String} name The name of the abstract function\n */\nexport default function abstractFunction(name) {\n throw new Error(name + ' is not implemented');\n}\n","const UPPER_REGEX = /[A-Z]/g;\n\n// Don't convert these attributes from camelCase to hyphenated-attributes\nconst BLACKLIST = [\n 'viewBox'\n];\n\nlet keyCase = (key) => {\n if (BLACKLIST.indexOf(key) === -1) {\n key = key.replace(UPPER_REGEX, match => '-' + match.toLowerCase());\n }\n return key;\n};\n\n/**\n * Set attributes for a node from a map\n *\n * @param {Node} node The node to set attributes on\n * @param {Object} attributes The map of key/value pairs to use for attributes\n */\nexport default function setAttributes(node, attributes) {\n Object.keys(attributes).forEach((key) => {\n node.setAttribute(keyCase(key), attributes[key]);\n });\n}\n","const REGEX_HASHLESS_HEX = /^([a-f0-9]{6}|[a-f0-9]{3})$/i;\n\n/**\n * Normalize a color value\n *\n * @param {String} color The color to normalize\n * @return {String}\n */\nexport default function normalizeColor(color) {\n if (REGEX_HASHLESS_HEX.test(color)) {\n color = `#${color}`;\n }\n return color;\n}\n","import setAttributes from '../utils/setAttributes';\n\nconst SIZE = 25;\nconst D = 'M499.968 214.336q-113.832 0 -212.877 38.781t-157.356 104.625 -58.311 142.29q0 62.496 39.897 119.133t112.437 97.929l48.546 27.9 -15.066 53.568q-13.392 50.778 -39.06 95.976 84.816 -35.154 153.45 -95.418l23.994 -21.204 31.806 3.348q38.502 4.464 72.54 4.464 113.832 0 212.877 -38.781t157.356 -104.625 58.311 -142.29 -58.311 -142.29 -157.356 -104.625 -212.877 -38.781z';\n\n/**\n * Create SVGElement from an annotation definition.\n * This is used for anntations of type `comment`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGElement} A svg to be rendered\n */\nexport default function renderPoint(a) {\n let outerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n let innerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\n setAttributes(outerSVG, {\n width: SIZE,\n height: SIZE,\n x: a.x,\n y: a.y\n });\n\n setAttributes(innerSVG, {\n width: SIZE,\n height: SIZE,\n x: 0,\n y: (SIZE * 0.05) * -1,\n viewBox: '0 0 1000 1000'\n });\n\n setAttributes(rect, {\n width: SIZE,\n height: SIZE,\n stroke: '#000',\n fill: '#ff0'\n });\n\n setAttributes(path, {\n d: D,\n strokeWidth: 50,\n stroke: '#000',\n fill: '#fff'\n });\n\n innerSVG.appendChild(path);\n outerSVG.appendChild(rect);\n outerSVG.appendChild(innerSVG);\n\n return outerSVG;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGRectElements from an annotation definition.\n * This is used for anntations of type `area` and `highlight`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGGElement|SVGRectElement} A group of all rects to be rendered\n */\nexport default function renderRect(a) {\n if (a.type === 'highlight') {\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n setAttributes(group, {\n fill: normalizeColor(a.color || '#ff0'),\n fillOpacity: 0.2\n });\n\n a.rectangles.forEach((r) => {\n group.appendChild(createRect(r));\n });\n\n return group;\n }\n else {\n let rect = createRect(a);\n setAttributes(rect, {\n stroke: normalizeColor(a.color || '#f00'),\n fill: 'none'\n });\n\n return rect;\n }\n}\n\nfunction createRect(r) {\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\n setAttributes(rect, {\n x: r.x,\n y: r.y,\n width: r.width,\n height: r.height\n });\n\n return rect;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Wrap each line of given text in a `` element and append these\n * lines to the given SVGTextElement\n *\n * @param {SVGTextElement} textElement A text element to hold the split text\n * @param {String} textContent String to render with line breaks\n */\nfunction insertLineBreaks(textElement, textContent) {\n const lines = (textContent || '').split('\\n');\n // can't use dy attribute here since we want empty lines to take up space as well,\n // so we will update y manually based on font size\n const x = textElement.getAttribute('x');\n let y = Number(textElement.getAttribute('y'));\n const size = Number(textElement.getAttribute('font-size'));\n for (const line of lines) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('y', y.toString());\n tspan.setAttribute('x', x);\n tspan.innerHTML = line;\n textElement.appendChild(tspan);\n\n y += size;\n }\n}\n\n/**\n * Create SVGTextElement from an annotation definition.\n * This is used for anntations of type `textbox`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGTextElement} A text to be rendered\n */\nexport default function renderText(a) {\n // Text should be rendered at 0 degrees relative to\n // document rotation\n let text = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n setAttributes(text, {\n x: a.x,\n y: a.y,\n fill: normalizeColor(a.color || '#000'),\n fontSize: a.size,\n transform: `rotate(${a.rotation})`,\n style: 'white-space: pre'\n });\n\n insertLineBreaks(text, a.content);\n\n let g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n g.appendChild(text);\n\n return g;\n}\n","// Transform point by matrix\n//\nexport function applyTransform(p, m) {\n return [\n p[0] * m[0] + p[1] * m[2] + m[4],\n p[0] * m[1] + p[1] * m[3] + m[5]\n ];\n};\n\n// Transform point by matrix inverse\n//\nexport function applyInverseTransform(p, m) {\n let d = m[0] * m[3] - m[1] * m[2];\n return [\n (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d,\n (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d\n ];\n};\n\n// Concatenates two transformation matrices together and returns the result.\nexport function transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n};\n\nexport function translate(m, x, y) {\n return [\n m[0],\n m[1],\n m[2],\n m[3],\n m[0] * x + m[2] * y + m[4],\n m[1] * x + m[3] * y + m[5]\n ];\n};\n\nexport function rotate(m, angle) {\n angle = angle * Math.PI / 180;\n\n let cosValue = Math.cos(angle);\n let sinValue = Math.sin(angle);\n\n return [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * (-sinValue) + m[2] * cosValue,\n m[1] * (-sinValue) + m[3] * cosValue,\n m[4],\n m[5]\n ];\n};\n\nexport function scale(m, x, y) {\n return [\n m[0] * x,\n m[1] * x,\n m[2] * y,\n m[3] * y,\n m[4],\n m[5]\n ];\n};\n\nexport function makePoint(x, y, z) {\n return { x: x, y: y, z: z };\n};\n\nexport function makeVector(xcoord, ycoord, zcoord) {\n return { xcoord: xcoord, ycoord: ycoord, zcoord: zcoord };\n};\n\nexport function makeVectorFromPoints(pt1, pt2) {\n let xcoord = pt2.x - pt1.x;\n let ycoord = pt2.y - pt1.y;\n let zcoord = pt2.z - pt1.z;\n return makeVector(xcoord, ycoord, zcoord);\n};\n\nexport function addVector(pt, v) {\n return makePoint(pt.x + v.xcoord, pt.y + v.ycoord, pt.z + v.zcoord);\n};\n\nexport function multiplyVector(v, scalar) {\n return makeVector(v.xcoord * scalar, v.ycoord * scalar, v.zcoord * scalar);\n};\n\nexport function magnitude(v) {\n return Math.sqrt(\n Math.pow(v.xcoord, 2) + Math.pow(v.ycoord, 2) + Math.pow(v.zcoord, 2)\n );\n};\n\nexport function negateVector(v) {\n return multiplyVector(v, -1);\n};\n\nexport function unitVector(v) {\n let mag = magnitude(v);\n let xcoord = v.xcoord / mag;\n let ycoord = v.ycoord / mag;\n let zcoord = v.zcoord / mag;\n return makeVector(xcoord, ycoord, zcoord);\n};\n\nexport function crossProduct(u, v) {\n //\n // u X v = < u2*v3 - u3*v2,\n // u3*v1 - u1*v3,\n // u1*v2 - u2*v1 >\n let xcoord = u.ycoord * v.zcoord - u.zcoord * v.ycoord;\n let ycoord = u.zcoord * v.xcoord - u.xcoord * v.zcoord;\n let zcoord = u.xcoord * v.ycoord - u.ycoord * v.xcoord;\n return makeVector(xcoord, ycoord, zcoord);\n};\n","import renderLine from './renderLine';\nimport renderPath from './renderPath';\nimport renderPoint from './renderPoint';\nimport renderRect from './renderRect';\nimport renderText from './renderText';\nimport renderCircle from './renderCircle';\nimport renderArrow from './renderArrow';\n\nconst isFirefox = /firefox/i.test(navigator.userAgent);\n\n/**\n * Get the x/y translation to be used for transforming the annotations\n * based on the rotation of the viewport.\n *\n * @param {Object} viewport The viewport data from the page\n * @return {Object}\n */\nexport function getTranslation(viewport) {\n let x;\n let y;\n\n // Modulus 360 on the rotation so that we only\n // have to worry about four possible values.\n switch (viewport.rotation % 360) {\n case 0:\n x = y = 0;\n break;\n case 90:\n x = 0;\n y = (viewport.width / viewport.scale) * -1;\n break;\n case 180:\n x = (viewport.width / viewport.scale) * -1;\n y = (viewport.height / viewport.scale) * -1;\n break;\n case 270:\n x = (viewport.height / viewport.scale) * -1;\n y = 0;\n break;\n }\n\n return { x, y };\n}\n\n/**\n * Transform the rotation and scale of a node using SVG's native transform attribute.\n *\n * @param {Node} node The node to be transformed\n * @param {Object} viewport The page's viewport data\n * @return {Node}\n */\nfunction transform(node, viewport) {\n let trans = getTranslation(viewport);\n\n // Let SVG natively transform the element\n node.setAttribute('transform', `scale(${viewport.scale}) rotate(${viewport.rotation}) translate(${trans.x}, ${trans.y})`);\n\n // Manually adjust x/y for nested SVG nodes\n if (!isFirefox && node.nodeName.toLowerCase() === 'svg') {\n node.setAttribute('x', parseInt(node.getAttribute('x'), 10) * viewport.scale);\n node.setAttribute('y', parseInt(node.getAttribute('y'), 10) * viewport.scale);\n\n let x = parseInt(node.getAttribute('x', 10));\n let y = parseInt(node.getAttribute('y', 10));\n let width = parseInt(node.getAttribute('width'), 10);\n let height = parseInt(node.getAttribute('height'), 10);\n let path = node.querySelector('path');\n let svg = path.parentNode;\n\n // Scale width/height\n [node, svg, path, node.querySelector('rect')].forEach((n) => {\n n.setAttribute('width', parseInt(n.getAttribute('width'), 10) * viewport.scale);\n n.setAttribute('height', parseInt(n.getAttribute('height'), 10) * viewport.scale);\n });\n\n // Transform path but keep scale at 100% since it will be handled natively\n transform(path, Object.assign({}, viewport, { scale: 1 }));\n\n switch (viewport.rotation % 360) {\n case 90:\n node.setAttribute('x', viewport.width - y - width);\n node.setAttribute('y', x);\n svg.setAttribute('x', 1);\n svg.setAttribute('y', 0);\n break;\n case 180:\n node.setAttribute('x', viewport.width - x - width);\n node.setAttribute('y', viewport.height - y - height);\n svg.setAttribute('y', 2);\n break;\n case 270:\n node.setAttribute('x', y);\n node.setAttribute('y', viewport.height - x - height);\n svg.setAttribute('x', -1);\n svg.setAttribute('y', 0);\n break;\n }\n }\n\n return node;\n}\n\n/**\n * Append an annotation as a child of an SVG.\n *\n * @param {SVGElement} svg The SVG element to append the annotation to\n * @param {Object} annotation The annotation definition to render and append\n * @param {Object} viewport The page's viewport data\n * @return {SVGElement} A node that was created and appended by this function\n */\nexport function appendChild(svg, annotation, viewport) {\n if (!viewport) {\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\n }\n\n let child;\n switch (annotation.type) {\n case 'area':\n case 'highlight':\n child = renderRect(annotation);\n break;\n case 'circle':\n case 'fillcircle':\n case 'emptycircle':\n child = renderCircle(annotation);\n break;\n case 'strikeout':\n child = renderLine(annotation);\n break;\n case 'point':\n child = renderPoint(annotation);\n break;\n case 'textbox':\n child = renderText(annotation);\n break;\n case 'drawing':\n child = renderPath(annotation);\n break;\n case 'arrow':\n child = renderArrow(annotation);\n break;\n }\n\n // If no type was provided for an annotation it will result in node being null.\n // Skip appending/transforming if node doesn't exist.\n if (child) {\n // Set attributes\n child.setAttribute('data-pdf-annotate-id', annotation.uuid);\n child.setAttribute('aria-hidden', true);\n\n // Dynamically set any other attributes associated with annotation that is not related to drawing it\n Object.keys(annotation).filter((key) => {\n return ['color', 'x', 'y', 'cx', 'cy', 'color', 'documentId', 'lines', 'page',\n 'width', 'class', 'content', 'size', 'rotation', 'r'].indexOf(key) === -1;\n }).forEach((key) => {\n child.setAttribute(`data-pdf-annotate-${key}`, annotation[key]);\n });\n\n svg.appendChild(transform(child, viewport));\n }\n\n return child;\n}\n\n/**\n * Transform a child annotation of an SVG.\n *\n * @param {SVGElement} svg The SVG element with the child annotation\n * @param {Object} child The SVG child to transform\n * @param {Object} viewport The page's viewport data\n * @return {SVGElement} A node that was transformed by this function\n */\nexport function transformChild(svg, child, viewport) {\n if (!viewport) {\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\n }\n\n // If no type was provided for an annotation it will result in node being null.\n // Skip transforming if node doesn't exist.\n if (child) {\n child = transform(child, viewport);\n }\n\n return child;\n}\n\nexport default {\n /**\n * Get the x/y translation to be used for transforming the annotations\n * based on the rotation of the viewport.\n */\n getTranslation,\n\n /**\n * Append an SVG child for an annotation\n */\n appendChild,\n\n /**\n * Transform an existing SVG child\n */\n transformChild\n};\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGLineElements from an annotation definition.\n * This is used for anntations of type `strikeout`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGGElement} A group of all lines to be rendered\n */\nexport default function renderLine(a) {\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n setAttributes(group, {\n stroke: normalizeColor(a.color || '#f00'),\n strokeWidth: 1\n });\n\n a.rectangles.forEach((r) => {\n let line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n\n setAttributes(line, {\n x1: r.x,\n y1: r.y,\n x2: r.x + r.width,\n y2: r.y\n });\n\n group.appendChild(line);\n });\n\n return group;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create an SVGCircleElement from an annotation definition.\n * This is used for annotations of type `circle`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGGElement|SVGCircleElement} A circle to be rendered\n */\nexport default function renderCircle(a) {\n let circle = createCircle(a);\n let color = normalizeColor(a.color || '#f00');\n\n if (a.type === 'circle') {\n setAttributes(circle, {\n stroke: color,\n fill: 'none',\n 'stroke-width': 5\n });\n }\n if (a.type === 'emptycircle') {\n setAttributes(circle, {\n stroke: color,\n fill: 'none',\n 'stroke-width': 2\n });\n }\n\n if (a.type === 'fillcircle') {\n setAttributes(circle, {\n stroke: color,\n fill: color,\n 'stroke-width': 5\n });\n }\n\n return circle;\n}\n\nfunction createCircle(a) {\n let circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n setAttributes(circle, {\n cx: a.cx,\n cy: a.cy,\n r: a.r\n });\n\n return circle;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGPathElement from an annotation definition.\n * This is used for anntations of type `drawing`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGPathElement} The path to be rendered\n */\nexport default function renderPath(a) {\n let d = [];\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\n if (a.lines.length > 0) {\n d.push(`M${a.lines[0][0]} ${a.lines[0][1]}`);\n for (let i = 1, l = a.lines.length; i < l; i++) {\n let p1 = a.lines[i];\n let p2 = a.lines[i + 1];\n if (p2) {\n d.push(`L${p1[0]} ${p1[1]}`);\n }\n }\n }\n\n /*\n\n if(a.lines.length>2) {\n var p1 = a.lines[0];\n var p2 = a.lines[a.lines.length-1];\n\n var p3 = []; //arrow\n var p4 = [];\n var p0 = []; //arrow intersection\n\n if (p2) {\n var k = -(p2[0]-p1[0])/(p2[1]-p1[1]);\n\n var deltaX = 3;\n p0[0] = p1[0]+0.8*(p2[0]-p1[0]);\n p0[1] = p1[1]+0.8*(p2[1]-p1[1]);\n\n p3[0] = p0[0] + deltaX;\n p3[1] = p0[1] + k*deltaX;\n\n p4[0] = p0[0] - deltaX;\n p4[1] = p0[1] - k*deltaX;\n\n if(Math.abs(p2[1]-p1[1]) < 20) {\n\n p3[0] = p0[0] ;\n p3[1] = p0[1] + deltaX*1;\n\n p4[0] = p0[0] ;\n p4[1] = p0[1] - deltaX*1;\n\n }\n\n d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\n //d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\n d.push(`M${p2[0]} ${p2[1]} ${p3[0]} ${p3[1]}`);\n d.push(`M${p3[0]} ${p3[1]} ${p4[0]} ${p4[1]}`);\n d.push(`M${p4[0]} ${p4[1]} ${p2[0]} ${p2[1]}`);\n }\n } */\n\n setAttributes(path, {\n d: `${d.join(' ')}`, // `${d.join(' ')}Z`,\n stroke: normalizeColor(a.color || '#000'),\n strokeWidth: a.width || 1,\n fill: 'none'\n });\n\n return path;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\nimport {\n makePoint, makeVector, makeVectorFromPoints,\n magnitude, unitVector, crossProduct,\n addVector, multiplyVector, negateVector\n} from '../utils/mathUtils';\n\n/**\n * Create SVGPathElement from an annotation definition.\n * This is used for anntations of type `drawing`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGPathElement} The path to be rendered\n */\nexport default function renderArrow(a) {\n let arrow = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n\n if (a.lines.length === 2) {\n let p1 = a.lines[0];\n let p2 = a.lines[a.lines.length - 1];\n\n let arrowLength = 40;\n let pt0 = makePoint(p1[0], p1[1], 0);\n let pt1 = makePoint(p2[0], p2[1], 0);\n let x = makeVectorFromPoints(pt0, pt1);\n let unitX = unitVector(x);\n pt1 = addVector(pt0, multiplyVector(unitX, arrowLength));\n x = makeVectorFromPoints(pt0, pt1);\n let unitZ = makeVector(0, 0, 1);\n let unitY = unitVector(crossProduct(unitX, unitZ));\n let thickness = a.width || 10;\n\n let A = addVector(pt0, multiplyVector(unitY, thickness * 0.5));\n let B = addVector(A, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\n let C = addVector(B, multiplyVector(unitY, thickness));\n let D = pt1;\n let G = addVector(pt0, multiplyVector(negateVector(unitY), thickness * 0.5));\n let F = addVector(G, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\n let E = addVector(F, multiplyVector(negateVector(unitY), thickness));\n\n let points = '' +\n A.x + ',' + A.y + ' ' +\n B.x + ',' + B.y + ' ' +\n C.x + ',' + C.y + ' ' +\n D.x + ',' + D.y + ' ' +\n E.x + ',' + E.y + ' ' +\n F.x + ',' + F.y + ' ' +\n G.x + ',' + G.y;\n\n setAttributes(arrow, {\n points: points,\n stroke: normalizeColor(a.color || '#000'),\n fill: normalizeColor(a.color || '#000')\n });\n }\n\n return arrow;\n}\n","import { getTranslation } from '../render/appendChild';\nimport {\n applyTransform,\n applyInverseTransform,\n translate,\n rotate,\n scale\n} from '../utils/mathUtils';\n\nexport const BORDER_COLOR = '#00BFFF';\n\nconst userSelectStyleSheet = document.createElement('style');\nuserSelectStyleSheet.innerHTML = `\nbody {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n`;\n\nuserSelectStyleSheet.setAttribute('data-pdf-annotate-user-select', 'true');\n\n/**\n * Find the SVGElement that contains all the annotations for a page\n *\n * @param {Element} node An annotation within that container\n * @return {SVGElement} The container SVG or null if it can't be found\n */\nexport function findSVGContainer(node) {\n let parentNode = node;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n if (parentNode.nodeName.toUpperCase() === 'SVG' &&\n parentNode.getAttribute('data-pdf-annotate-container') === 'true') {\n return parentNode;\n }\n }\n\n return null;\n}\n\n/**\n * Find an SVGElement container at a given point\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @return {SVGElement} The container SVG or null if one can't be found\n */\nexport function findSVGAtPoint(x, y) {\n let elements = document.querySelectorAll('svg[data-pdf-annotate-container=\"true\"]');\n\n for (let i = 0, l = elements.length; i < l; i++) {\n let el = elements[i];\n let rect = el.getBoundingClientRect();\n\n if (pointIntersectsRect(x, y, rect)) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Find an Element that represents an annotation at a given point.\n *\n * IMPORTANT: Requires the annotation layer to be the top most element so\n * either use z-ordering or make it the leaf container.\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @return {Element} The annotation element or null if one can't be found\n */\nexport function findAnnotationAtPoint(x, y) {\n let el = null;\n let candidate = document.elementFromPoint(x, y);\n while (!el && candidate && candidate !== document) {\n let type = candidate.getAttribute('data-pdf-annotate-type');\n if (type) {\n el = candidate;\n }\n candidate = candidate.parentNode;\n }\n return el;\n}\n\n/**\n * Determine if a point intersects a rect\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Object} rect The points of a rect (likely from getBoundingClientRect)\n * @return {Boolean} True if a collision occurs, otherwise false\n */\nexport function pointIntersectsRect(x, y, rect) {\n return y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\n}\n\n/**\n * Get the rect of an annotation element accounting for offset.\n *\n * @param {Element} el The element to get the rect of\n * @return {Object} The dimensions of the element\n */\nexport function getOffsetAnnotationRect(el) {\n let rect = el.getBoundingClientRect();\n let { width, height } = rect;\n let extraOffsetWidth = 0;\n let extraOffsetHeight = 0;\n if (['line', 'path'].indexOf(el.tagName.toLowerCase()) > -1 && el.getBBox) {\n let bbox = el.getBBox();\n extraOffsetWidth = (rect.width - bbox.width) / 2;\n extraOffsetHeight = (rect.height - bbox.height) / 2;\n width = bbox.width;\n height = bbox.height;\n }\n let { offsetLeft, offsetTop } = getOffset(el);\n return {\n top: rect.top - offsetTop + extraOffsetHeight,\n left: rect.left - offsetLeft + extraOffsetWidth,\n bottom: rect.bottom - offsetTop - extraOffsetHeight,\n right: rect.right - offsetLeft - extraOffsetWidth,\n width: width,\n height: height\n };\n}\n\n/**\n * Adjust scale from normalized scale (100%) to rendered scale.\n *\n * @param {SVGElement} svg The SVG to gather metadata from\n * @param {Object} rect A map of numeric values to scale\n * @return {Object} A copy of `rect` with values scaled up\n */\nexport function scaleUp(svg, rect) {\n let result = {};\n let { viewport } = getMetadata(svg);\n\n Object.keys(rect).forEach((key) => {\n result[key] = rect[key] * viewport.scale;\n });\n\n return result;\n}\n\nexport function convertToSvgRect(rect, svg, viewport) {\n let pt1 = [rect.x, rect.y];\n let pt2 = [rect.x + rect.width, rect.y + rect.height];\n\n pt1 = convertToSvgPoint(pt1, svg, viewport);\n pt2 = convertToSvgPoint(pt2, svg, viewport);\n\n return {\n x: Math.min(pt1[0], pt2[0]),\n y: Math.min(pt1[1], pt2[1]),\n width: Math.abs(pt2[0] - pt1[0]),\n height: Math.abs(pt2[1] - pt1[1])\n };\n}\n\nexport function convertToSvgPoint(pt, svg, viewport) {\n viewport = viewport || getMetadata(svg).viewport;\n\n let xform = [ 1, 0, 0, 1, 0, 0 ];\n xform = scale(xform, viewport.scale, viewport.scale);\n xform = rotate(xform, viewport.rotation);\n\n let offset = getTranslation(viewport);\n xform = translate(xform, offset.x, offset.y);\n\n return applyInverseTransform(pt, xform);\n}\n\nexport function convertToScreenPoint(pt, svg, viewport) {\n viewport = viewport || getMetadata(svg).viewport;\n\n let xform = [ 1, 0, 0, 1, 0, 0 ];\n xform = scale(xform, viewport.scale, viewport.scale);\n xform = rotate(xform, viewport.rotation);\n\n let offset = getTranslation(viewport);\n xform = translate(xform, offset.x, offset.y);\n\n return applyTransform(pt, xform);\n}\n\n/**\n * Adjust scale from rendered scale to a normalized scale (100%).\n *\n * @param {SVGElement} svg The SVG to gather metadata from\n * @param {Object} rect A map of numeric values to scale\n * @return {Object} A copy of `rect` with values scaled down\n */\nexport function scaleDown(svg, rect) {\n let result = {};\n let { viewport } = getMetadata(svg);\n\n Object.keys(rect).forEach((key) => {\n result[key] = rect[key] / viewport.scale;\n });\n\n return result;\n}\n\n/**\n * Get the scroll position of an element, accounting for parent elements\n *\n * @param {Element} el The element to get the scroll position for\n * @return {Object} The scrollTop and scrollLeft position\n */\nexport function getScroll(el) {\n let scrollTop = 0;\n let scrollLeft = 0;\n let parentNode = el;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n scrollTop += parentNode.scrollTop;\n scrollLeft += parentNode.scrollLeft;\n }\n\n return { scrollTop, scrollLeft };\n}\n\n/**\n * Get the offset position of an element, accounting for parent elements\n *\n * @param {Element} el The element to get the offset position for\n * @return {Object} The offsetTop and offsetLeft position\n */\nexport function getOffset(el) {\n let parentNode = el;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n if (parentNode.nodeName.toUpperCase() === 'SVG') {\n break;\n }\n }\n\n let rect = parentNode.getBoundingClientRect();\n\n return { offsetLeft: rect.left, offsetTop: rect.top };\n}\n\n/**\n * Disable user ability to select text on page\n */\nexport function disableUserSelect() {\n if (!userSelectStyleSheet.parentNode) {\n document.head.appendChild(userSelectStyleSheet);\n }\n}\n\n/**\n * Enable user ability to select text on page\n */\nexport function enableUserSelect() {\n if (userSelectStyleSheet.parentNode) {\n userSelectStyleSheet.parentNode.removeChild(userSelectStyleSheet);\n }\n}\n\n/**\n * Get the metadata for a SVG container\n *\n * @param {SVGElement} svg The SVG container to get metadata for\n */\nexport function getMetadata(svg) {\n return {\n documentId: svg.getAttribute('data-pdf-annotate-document'),\n pageNumber: parseInt(svg.getAttribute('data-pdf-annotate-page'), 10),\n viewport: JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'))\n };\n}\n","import EventEmitter from 'events';\nimport {\n findAnnotationAtPoint,\n findSVGAtPoint\n} from './utils';\n\nconst emitter = new EventEmitter();\n\nlet clickNode;\n\n/**\n * Handle document.click event\n *\n * @param {Event} e The DOM event to be handled\n */\ndocument.addEventListener('click', function handleDocumentClick(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\n\n // Emit annotation:blur if clickNode is no longer clicked\n if (clickNode && clickNode !== target) {\n emitter.emit('annotation:blur', clickNode);\n }\n\n // Emit annotation:click if target was clicked\n if (target) {\n emitter.emit('annotation:click', target);\n }\n\n clickNode = target;\n});\n\n// let mouseOverNode;\n// document.addEventListener('mousemove', function handleDocumentMousemove(e) {\n// let target = findAnnotationAtPoint(e.clientX, e.clientY);\n//\n// // Emit annotation:mouseout if target was mouseout'd\n// if (mouseOverNode && !target) {\n// emitter.emit('annotation:mouseout', mouseOverNode);\n// }\n//\n// // Emit annotation:mouseover if target was mouseover'd\n// if (target && mouseOverNode !== target) {\n// emitter.emit('annotation:mouseover', target);\n// }\n//\n// mouseOverNode = target;\n// });\n\nexport function fireEvent() { emitter.emit(...arguments); };\nexport function addEventListener() { emitter.on(...arguments); };\nexport function removeEventListener() { emitter.removeListener(...arguments); };\n","// Disable JSDoc as it cannot really deal with the odd way that the functions are defined\n/* eslint valid-jsdoc: 0 */\n\nimport abstractFunction from '../utils/abstractFunction';\nimport { fireEvent } from '../UI/event';\n\n// Adapter should never be invoked publicly\nexport default class StoreAdapter {\n /**\n * Create a new StoreAdapter instance\n *\n * @param {Object} [definition] The definition to use for overriding abstract methods\n */\n constructor(definition = {}) {\n // Copy each function from definition if it is a function we know about\n Object.keys(definition).forEach((key) => {\n if (typeof definition[key] === 'function' &&\n typeof this[key] === 'function') {\n this[key] = definition[key];\n }\n });\n }\n\n /**\n * Get all the annotations for a given document and page number.\n *\n * @param {String} documentId The ID for the document the annotations belong to\n * @param {Number} pageNumber The number of the page the annotations belong to\n * @return {Promise} Promise that returns with list of annotations for document and page\n */\n __getAnnotations(documentId, pageNumber) { abstractFunction('getAnnotations'); }\n get getAnnotations() { return this.__getAnnotations; }\n set getAnnotations(fn) {\n this.__getAnnotations = function getAnnotations(documentId, pageNumber) {\n return fn(...arguments).then((annotations) => {\n // TODO may be best to have this happen on the server\n if (annotations.annotations) {\n annotations.annotations.forEach((a) => {\n a.documentId = documentId;\n });\n }\n return annotations;\n });\n };\n }\n\n /**\n * Get the definition for a specific annotation.\n *\n * @param {String} documentId The ID for the document the annotation belongs to\n * @param {String} annotationId The ID for the annotation\n * @return {Promise} Promise that returns the requested annotation\n */\n getAnnotation(documentId, annotationId) { abstractFunction('getAnnotation'); }\n\n /**\n * Add an annotation\n *\n * @param {String} documentId The ID for the document to add the annotation to\n * @param {String} pageNumber The page number to add the annotation to\n * @param {Object} annotation The definition for the new annotation\n * @return {Promise} Promise that returns with the added annotation\n */\n __addAnnotation(documentId, pageNumber, annotation) { abstractFunction('addAnnotation'); }\n get addAnnotation() { return this.__addAnnotation; }\n set addAnnotation(fn) {\n this.__addAnnotation = function addAnnotation(documentId, pageNumber, annotation) {\n return fn(...arguments).then((annotation) => {\n fireEvent('annotation:add', documentId, pageNumber, annotation);\n return annotation;\n });\n };\n }\n\n /**\n * Edit an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} pageNumber the page number of the annotation\n * @param {Object} annotation The definition of the modified annotation\n * @return {Promise} Promise that returns with the edited annotation\n */\n __editAnnotation(documentId, pageNumber, annotation) { abstractFunction('editAnnotation'); }\n get editAnnotation() { return this.__editAnnotation; }\n set editAnnotation(fn) {\n this.__editAnnotation = function editAnnotation(documentId, annotationId, annotation) {\n return fn(...arguments).then((annotation) => {\n fireEvent('annotation:edit', documentId, annotationId, annotation);\n return annotation;\n });\n };\n }\n\n /**\n * Delete an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @return {Promise} Promise that returns with boolean if annotation was deleted\n */\n __deleteAnnotation(documentId, annotationId) { abstractFunction('deleteAnnotation'); }\n get deleteAnnotation() { return this.__deleteAnnotation; }\n set deleteAnnotation(fn) {\n this.__deleteAnnotation = function deleteAnnotation(documentId, annotationId) {\n return fn(...arguments).then((success) => {\n if (success) {\n fireEvent('annotation:delete', documentId, annotationId);\n }\n return success;\n });\n };\n }\n\n /**\n * Get all the comments for an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @return {Promise} Promise that returns with comments for annotation\n */\n getComments(documentId, annotationId) { abstractFunction('getComments'); }\n\n /**\n * Add a new comment\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @param {Object} content The definition of the comment\n * @return {Promise} Promise that returns with the added comment\n */\n __addComment(documentId, annotationId, content) { abstractFunction('addComment'); }\n get addComment() { return this.__addComment; }\n set addComment(fn) {\n this.__addComment = function addComment(documentId, annotationId, content) {\n return fn(...arguments).then((comment) => {\n fireEvent('comment:add', documentId, annotationId, comment);\n return comment;\n });\n };\n }\n\n /**\n * Delete a comment\n *\n * @param {String} documentId The ID for the document\n * @param {String} commentId The ID for the comment\n * @return {Promise} Promise that returns with boolean if comment was deleted\n */\n __deleteComment(documentId, commentId) { abstractFunction('deleteComment'); }\n get deleteComment() { return this.__deleteComment; }\n set deleteComment(fn) {\n this.__deleteComment = function deleteComment(documentId, commentId) {\n return fn(...arguments).then((success) => {\n if (success) {\n fireEvent('comment:delete', documentId, commentId);\n }\n return success;\n });\n };\n }\n}\n","const REGEXP = /[xy]/g;\nconst PATTERN = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nfunction replacement(c) {\n let r = Math.random() * 16 | 0;\n let v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n}\n\n/**\n * Generate a univierally unique identifier\n *\n * @return {String} A UUID\n */\nexport default function uuid() {\n return PATTERN.replace(REGEXP, replacement);\n}\n","import uuid from '../utils/uuid';\nimport StoreAdapter from './StoreAdapter';\n\n// StoreAdapter for working with localStorage\n// This is ideal for testing, examples, and prototyping\nexport default class LocalStoreAdapter extends StoreAdapter {\n constructor() {\n super({\n getAnnotations(documentId, pageNumber) {\n return new Promise((resolve, reject) => {\n let annotations = getAnnotations(documentId).filter((i) => {\n return i.page === pageNumber && i.class === 'Annotation';\n });\n\n resolve({\n documentId,\n pageNumber,\n annotations\n });\n });\n }\n });\n\n this.getAnnotation = (documentId, annotationId) => {\n return Promise.resolve(getAnnotations(documentId)[findAnnotation(documentId, annotationId)]);\n };\n\n this.addAnnotation = (documentId, pageNumber, annotation) => {\n return new Promise((resolve, reject) => {\n annotation.class = 'Annotation';\n annotation.uuid = uuid();\n annotation.page = pageNumber;\n\n let annotations = getAnnotations(documentId);\n annotations.push(annotation);\n updateAnnotations(documentId, annotations);\n\n resolve(annotation);\n });\n };\n\n this.editAnnotation = (documentId, annotationId, annotation) => {\n return new Promise((resolve, reject) => {\n let annotations = getAnnotations(documentId);\n annotations[findAnnotation(documentId, annotationId)] = annotation;\n updateAnnotations(documentId, annotations);\n resolve(annotation);\n });\n };\n\n this.deleteAnnotation = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n let annotation = getAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\n if (!annotation) {\n return reject('Could not find annotation');\n }\n let index = findAnnotation(documentId, annotationId);\n if (index > -1) {\n let annotations = getAnnotations(documentId);\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotations);\n }\n\n resolve(true);\n });\n };\n\n this.getComments = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n resolve(getAnnotations(documentId).filter((i) => {\n return i.class === 'Comment' && i.annotation === annotationId;\n }));\n });\n };\n\n this.addComment = (documentId, annotationId, content) => {\n return new Promise((resolve, reject) => {\n let comment = {\n class: 'Comment',\n uuid: uuid(),\n annotation: annotationId,\n content: content\n };\n\n let annotations = getAnnotations(documentId);\n annotations.push(comment);\n updateAnnotations(documentId, annotations);\n\n resolve(comment);\n });\n };\n\n this.deleteComment = (documentId, commentId) => {\n return new Promise((resolve, reject) => {\n let comment = getAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\n if (!comment) {\n return reject('Could not find annotation');\n }\n let index = -1;\n let annotations = getAnnotations(documentId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === commentId) {\n index = i;\n break;\n }\n }\n\n if (index > -1) {\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotations);\n }\n\n resolve(true);\n });\n };\n }\n}\n\nfunction getAnnotations(documentId) {\n return JSON.parse(localStorage.getItem(`${documentId}/annotations`)) || [];\n}\n\nfunction updateAnnotations(documentId, annotations) {\n localStorage.setItem(`${documentId}/annotations`, JSON.stringify(annotations));\n}\n/**\n *\n * @param {String} documentId Document id of the annotation\n * @param {String} annotationId The id of the annotation\n *\n * This function finds all the annotation made by one user.\n *\n * @return {int} The index of the annotation in localstorage\n */\nfunction findAnnotation(documentId, annotationId) {\n let index = -1;\n let annotations = getAnnotations(documentId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === annotationId) {\n index = i;\n break;\n }\n }\n return index;\n}\n","import uuid from '../utils/uuid';\nimport StoreAdapter from './StoreAdapter';\n\n// StoreAdapter for working with localStorage and associated user id\n// This is ideal for testing, examples, and prototyping\nexport default class LocalUserStoreAdapter extends StoreAdapter {\n constructor(userId = 'user', globalEdit = false) {\n super({\n getAnnotations(documentId, pageNumber) {\n return new Promise((resolve, reject) => {\n let annotations = getAllAnnotations(documentId).filter((i) => {\n return i.page === pageNumber && i.class === 'Annotation';\n });\n\n resolve({\n documentId,\n pageNumber,\n annotations\n });\n });\n }\n });\n\n this._userId = userId;\n this._globalEdit = globalEdit;\n\n this.getAnnotation = (documentId, annotationId) => {\n return Promise.resolve(getAnnotations(documentId, this._userId)[findAnnotation(documentId, this._userId, annotationId)]);\n };\n\n this.addAnnotation = (documentId, pageNumber, annotation) => {\n return new Promise((resolve, reject) => {\n annotation.class = 'Annotation';\n annotation.uuid = uuid();\n annotation.page = pageNumber;\n annotation.userId = this._userId;\n\n let annotations = getAnnotations(documentId, this._userId);\n annotations.push(annotation);\n updateAnnotations(documentId, this._userId, annotations);\n\n resolve(annotation);\n });\n };\n\n this.editAnnotation = (documentId, annotationId, annotation) => {\n return new Promise((resolve, reject) => {\n if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\n reject('Non-matching userId');\n }\n let annotations = getAnnotations(documentId, annotation.userId);\n annotations[findAnnotation(documentId, annotation.userId, annotationId)] = annotation;\n updateAnnotations(documentId, annotation.userId, annotations);\n resolve(annotation);\n });\n };\n\n this.deleteAnnotation = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n let annotation = getAllAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\n if (!annotation) {\n return reject('Could not find annotation');\n }\n else if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\n return reject('Non-matching userId');\n }\n let index = findAnnotation(documentId, annotation.userId, annotationId);\n if (index > -1) {\n let annotations = getAnnotations(documentId, annotation.userId);\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotation.userId, annotations);\n }\n\n resolve(true);\n });\n };\n\n this.getComments = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n resolve(getAnnotations(documentId, this._userId).filter((i) => {\n return i.class === 'Comment' && i.annotation === annotationId;\n }));\n });\n };\n\n this.addComment = (documentId, annotationId, content) => {\n return new Promise((resolve, reject) => {\n let comment = {\n class: 'Comment',\n uuid: uuid(),\n annotation: annotationId,\n content: content,\n userId: this._userId\n };\n\n let annotations = getAnnotations(documentId, this._userId);\n annotations.push(comment);\n updateAnnotations(documentId, this._userId, annotations);\n\n resolve(comment);\n });\n };\n\n this.deleteComment = (documentId, commentId) => {\n return new Promise((resolve, reject) => {\n let comment = getAllAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\n if (!comment) {\n return reject('Could not find annotation');\n }\n else if (!this._globalEdit && comment.userId && comment.userId !== this._userId) {\n return reject('Non-matching userId');\n }\n let index = -1;\n let annotations = getAnnotations(documentId, comment.userId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === commentId) {\n index = i;\n break;\n }\n }\n\n if (index > -1) {\n annotations.splice(index, 1);\n updateAnnotations(documentId, comment.userId, annotations);\n }\n\n resolve(true);\n });\n };\n }\n\n get userId() {\n return this._userId;\n }\n}\n\nfunction getAllAnnotations(documentId) {\n let all_annotations = [];\n let re = new RegExp(`${documentId}/(.*)/annotations`);\n for (let i = 0; i < localStorage.length; i++) {\n if (localStorage.key(i).search(re) > -1) {\n all_annotations.push(...JSON.parse(localStorage.getItem(localStorage.key(i))));\n }\n }\n return all_annotations;\n}\n\nfunction getAnnotations(documentId, userId) {\n return JSON.parse(localStorage.getItem(`${documentId}/${userId}/annotations`)) || [];\n}\n\nfunction updateAnnotations(documentId, userId, annotations) {\n localStorage.setItem(`${documentId}/${userId}/annotations`, JSON.stringify(annotations));\n}\n/**\n *\n * @param {String} documentId Document id of the annotation\n * @param {String} userId User id of the annotation\n * @param {String} annotationId The id of the annotation\n *\n * This function finds all the annotation made by one user.\n *\n * @return {int} The index of the annotation in localstorage\n */\nfunction findAnnotation(documentId, userId, annotationId) {\n let index = -1;\n let annotations = getAnnotations(documentId, userId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === annotationId) {\n index = i;\n break;\n }\n }\n return index;\n}\n","export default {\n annotationLayerName: 'annotationLayer',\n textLayerName: 'textLayer',\n annotationSvgQuery: function() {\n return 'svg.' + this.annotationLayerName;\n },\n annotationClassQuery: function() {\n return '.' + this.annotationLayerName;\n },\n textClassQuery: function() {\n return '.' + this.textLayerName;\n }\n};\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport config from '../config';\nimport {\n addEventListener,\n removeEventListener\n} from './event';\nimport {\n BORDER_COLOR,\n disableUserSelect,\n enableUserSelect,\n findSVGContainer,\n findSVGAtPoint,\n getOffsetAnnotationRect,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet isDragging = false;\nlet overlay;\nlet dragOffsetX, dragOffsetY, dragStartX, dragStartY;\nconst OVERLAY_BORDER_SIZE = 3;\n\n/**\n * Create an overlay for editing an annotation.\n *\n * @param {Element} target The annotation element to apply overlay for\n */\nfunction createEditOverlay(target) {\n destroyEditOverlay();\n\n overlay = document.createElement('div');\n let anchor = document.createElement('a');\n let parentNode = findSVGContainer(target).parentNode;\n let id = target.getAttribute('data-pdf-annotate-id');\n let rect = getOffsetAnnotationRect(target);\n let styleLeft = rect.left - OVERLAY_BORDER_SIZE;\n let styleTop = rect.top - OVERLAY_BORDER_SIZE;\n\n overlay.setAttribute('id', 'pdf-annotate-edit-overlay');\n overlay.setAttribute('data-target-id', id);\n overlay.style.boxSizing = 'content-box';\n overlay.style.position = 'absolute';\n overlay.style.top = `${styleTop}px`;\n overlay.style.left = `${styleLeft}px`;\n overlay.style.width = `${rect.width}px`;\n overlay.style.height = `${rect.height}px`;\n overlay.style.border = `${OVERLAY_BORDER_SIZE}px solid ${BORDER_COLOR}`;\n overlay.style.borderRadius = `${OVERLAY_BORDER_SIZE}px`;\n overlay.style.zIndex = 20100;\n\n anchor.innerHTML = '×';\n anchor.setAttribute('href', 'javascript://');\n anchor.style.background = '#fff';\n anchor.style.borderRadius = '20px';\n anchor.style.border = '1px solid #bbb';\n anchor.style.color = '#bbb';\n anchor.style.fontSize = '16px';\n anchor.style.padding = '2px';\n anchor.style.textAlign = 'center';\n anchor.style.textDecoration = 'none';\n anchor.style.position = 'absolute';\n anchor.style.top = '-13px';\n anchor.style.right = '-13px';\n anchor.style.width = '25px';\n anchor.style.height = '25px';\n\n overlay.appendChild(anchor);\n parentNode.appendChild(overlay);\n document.addEventListener('click', handleDocumentClick);\n document.addEventListener('keyup', handleDocumentKeyup);\n document.addEventListener('mousedown', handleDocumentMousedown);\n anchor.addEventListener('click', deleteAnnotation);\n anchor.addEventListener('mouseover', () => {\n anchor.style.color = '#35A4DC';\n anchor.style.borderColor = '#999';\n anchor.style.boxShadow = '0 1px 1px #ccc';\n });\n anchor.addEventListener('mouseout', () => {\n anchor.style.color = '#bbb';\n anchor.style.borderColor = '#bbb';\n anchor.style.boxShadow = '';\n });\n overlay.addEventListener('mouseover', () => {\n if (!isDragging) { anchor.style.display = ''; }\n });\n overlay.addEventListener('mouseout', () => {\n anchor.style.display = 'none';\n });\n}\n\n/**\n * Destroy the edit overlay if it exists.\n */\nfunction destroyEditOverlay() {\n if (overlay) {\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n }\n\n document.removeEventListener('click', handleDocumentClick);\n document.removeEventListener('keyup', handleDocumentKeyup);\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n enableUserSelect();\n}\n\n/**\n * Delete currently selected annotation\n */\nfunction deleteAnnotation() {\n if (!overlay) {\n return;\n }\n\n let annotationId = overlay.getAttribute('data-target-id');\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let { documentId } = getMetadata(svg);\n\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n\n [...nodes].forEach((n) => {\n n.parentNode.removeChild(n);\n });\n });\n\n destroyEditOverlay();\n}\n\n/**\n * Handle document.click event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentClick(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY)) { return; }\n\n // Remove current overlay\n let overlay = document.getElementById('pdf-annotate-edit-overlay');\n if (overlay) {\n if (isDragging || e.target === overlay) {\n return;\n }\n\n destroyEditOverlay();\n }\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {KeyboardEvent} e The DOM event that needs to be handled\n */\nfunction handleDocumentKeyup(e) {\n // keyCode is deprecated, so prefer the newer \"key\" method if possible\n let keyTest;\n if (e.key) {\n keyTest = e.key.toLowerCase() === 'delete' || e.key.toLowerCase() === 'backspace';\n }\n else {\n keyTest = e.keyCode === 8 || e.keyCode === 46;\n }\n if (overlay && keyTest &&\n e.target.nodeName.toLowerCase() !== 'textarea' &&\n e.target.nodeName.toLowerCase() !== 'input') {\n e.preventDefault();\n deleteAnnotation();\n }\n}\n\n/**\n * Handle document.mousedown event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMousedown(e) {\n if (e.target !== overlay) {\n return;\n }\n\n // Highlight and strikeout annotations are bound to text within the document.\n // It doesn't make sense to allow repositioning these types of annotations.\n let annotationId = overlay.getAttribute('data-target-id');\n let target = document.querySelector(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n let type = target.getAttribute('data-pdf-annotate-type');\n\n if (type === 'highlight' || type === 'strikeout') { return; }\n\n isDragging = true;\n dragOffsetX = e.clientX;\n dragOffsetY = e.clientY;\n dragStartX = overlay.offsetLeft;\n dragStartY = overlay.offsetTop;\n\n overlay.style.background = 'rgba(255, 255, 255, 0.7)';\n overlay.style.cursor = 'move';\n overlay.querySelector('a').style.display = 'none';\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n document.addEventListener('mouseup', handleDocumentMouseup);\n disableUserSelect();\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMousemove(e) {\n let parentNode = overlay.parentNode;\n let rect = parentNode.getBoundingClientRect();\n let y = (dragStartY + (e.clientY - dragOffsetY));\n let x = (dragStartX + (e.clientX - dragOffsetX));\n let minY = 0;\n let maxY = rect.height;\n let minX = 0;\n let maxX = rect.width;\n\n if (y > minY && y + overlay.offsetHeight < maxY) {\n overlay.style.top = `${y}px`;\n }\n\n if (x > minX && x + overlay.offsetWidth < maxX) {\n overlay.style.left = `${x}px`;\n }\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMouseup(e) {\n let annotationId = overlay.getAttribute('data-target-id');\n let target = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n let type = target[0].getAttribute('data-pdf-annotate-type');\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let { documentId } = getMetadata(svg);\n\n overlay.querySelector('a').style.display = '';\n\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\n let attribX = 'x';\n let attribY = 'y';\n if (['circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\n attribX = 'cx';\n attribY = 'cy';\n }\n\n if (type === 'point') {\n // Broken\n /*\n [...target].forEach((t, i) => {\n let moveTo = {\n x: overlay.offsetLeft + 3,\n y: overlay.offsetTop + 3\n };\n t.setAttribute(attribX, moveTo.x);\n t.setAttribute(attribY, moveTo.y);\n annotation[attribX] = moveTo.x;\n annotation[attribY] = moveTo.y;\n });\n */\n return;\n }\n else if (['area', 'highlight', 'textbox', 'circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\n let modelDelta = {\n x: modelEnd[0] - modelStart[0],\n y: modelEnd[1] - modelStart[1]\n };\n\n if (type === 'textbox') {\n target = [target[0].firstChild];\n }\n\n [...target].forEach((t, i) => {\n let modelX = parseInt(t.getAttribute(attribX), 10);\n let modelY = parseInt(t.getAttribute(attribY), 10);\n if (modelDelta.y !== 0) {\n modelY = modelY + modelDelta.y;\n\n t.setAttribute(attribY, modelY);\n if (annotation.rectangles && i < annotation.rectangles.length) {\n annotation.rectangles[i].y = modelY;\n }\n else if (annotation[attribY]) {\n annotation[attribY] = modelY;\n }\n }\n if (modelDelta.x !== 0) {\n modelX = modelX + modelDelta.x;\n\n t.setAttribute(attribX, modelX);\n if (annotation.rectangles && i < annotation.rectangles.length) {\n annotation.rectangles[i].x = modelX;\n }\n else if (annotation[attribX]) {\n annotation[attribX] = modelX;\n }\n }\n });\n }\n else if (type === 'strikeout') {\n return;\n // let { deltaX, deltaY } = getDelta('x1', 'y1');\n // [...target].forEach(target, (t, i) => {\n // if (deltaY !== 0) {\n // t.setAttribute('y1', parseInt(t.getAttribute('y1'), 10) + deltaY);\n // t.setAttribute('y2', parseInt(t.getAttribute('y2'), 10) + deltaY);\n // annotation.rectangles[i].y = parseInt(t.getAttribute('y1'), 10);\n // }\n // if (deltaX !== 0) {\n // t.setAttribute('x1', parseInt(t.getAttribute('x1'), 10) + deltaX);\n // t.setAttribute('x2', parseInt(t.getAttribute('x2'), 10) + deltaX);\n // annotation.rectangles[i].x = parseInt(t.getAttribute('x1'), 10);\n // }\n // });\n }\n else if (type === 'drawing' || type === 'arrow') {\n // Do nothing as currently broken\n /*\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\n let modelDelta = {\n x: modelEnd[0] - modelStart[0],\n y: modelEnd[1] - modelStart[1]\n };\n\n annotation.lines.forEach((line, i) => {\n let [x, y] = annotation.lines[i];\n annotation.lines[i][0] = x + modelDelta.x;\n annotation.lines[i][1] = y + modelDelta.y;\n });\n\n target[0].parentNode.removeChild(target[0]);\n appendChild(svg, annotation);\n */\n return;\n }\n\n PDFJSAnnotate.getStoreAdapter().editAnnotation(documentId, annotationId, annotation);\n });\n\n setTimeout(() => {\n isDragging = false;\n }, 0);\n\n overlay.style.background = '';\n overlay.style.cursor = '';\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n enableUserSelect();\n}\n\n/**\n * Handle annotation.click event\n *\n * @param {Element} e The annotation element that was clicked\n */\nfunction handleAnnotationClick(target) {\n createEditOverlay(target);\n}\n\n/**\n * Enable edit mode behavior.\n */\nexport function enableEdit() {\n if (_enabled) {\n return;\n }\n\n _enabled = true;\n addEventListener('annotation:click', handleAnnotationClick);\n};\n\n/**\n * Disable edit mode behavior.\n */\nexport function disableEdit() {\n destroyEditOverlay();\n\n if (!_enabled) {\n return;\n }\n\n _enabled = false;\n removeEventListener('annotation:click', handleAnnotationClick);\n};\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet _candraw = false;\nlet _penSize;\nlet _penColor;\nlet path;\nlet lines = [];\n\n/**\n * Handle document.touchdown or document.pointerdown event\n * @param {PointerEvent} e The DOM event to be handled\n */\nfunction handleDocumentPointerdown(e) {\n path = null;\n lines = [];\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n _candraw = true;\n e.preventDefault();\n}\n\n/**\n * Handle document.pointerup event\n *\n * @param {PointerEvent} e The DOM event to be handled\n */\nfunction handleDocumentPointerup(e) {\n saveToStorage(e.clientX, e.clientY);\n}\n\nfunction saveToStorage(x, y) {\n if (!_candraw) {\n return;\n }\n _candraw = false;\n let svg;\n if (lines.length > 1 && (svg = findSVGAtPoint(x, y))) {\n let { documentId, pageNumber } = getMetadata(svg);\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\n type: 'drawing',\n width: _penSize,\n color: _penColor,\n lines\n }).then((annotation) => {\n if (path) {\n svg.removeChild(path);\n }\n\n appendChild(svg, annotation);\n });\n }\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {PointerEvent} e The DOM event to be handled\n */\nfunction handleDocumentPointermove(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY) || !_candraw) {\n return;\n }\n savePoint(e.clientX, e.clientY);\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {KeyboardEvent} e The DOM event to be handled\n * } e The DOM event to be handled\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n lines = null;\n path.parentNode.removeChild(path);\n document.removeEventListener('pointermove', handleDocumentPointermove);\n document.removeEventListener('pointerup', handleDocumentPointerup);\n }\n}\n\n/**\n * Save a point to the line being drawn.\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n */\nfunction savePoint(x, y) {\n let svg = findSVGAtPoint(x, y);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let point = convertToSvgPoint([\n x - rect.left,\n y - rect.top\n ], svg);\n point[0] = point[0].toFixed(2);\n point[1] = point[1].toFixed(2);\n lines.push(point);\n\n if (lines.length <= 1) {\n return;\n }\n\n if (path) {\n svg.removeChild(path);\n }\n\n path = appendChild(svg, {\n type: 'drawing',\n color: _penColor,\n width: _penSize,\n lines\n });\n}\n\n/**\n * Set the attributes of the pen.\n *\n * @param {Number} penSize The size of the lines drawn by the pen, rounded to 2 decimal places\n * @param {String} penColor The color of the lines drawn by the pen\n */\nexport function setPen(penSize = 1, penColor = '000000') {\n _penSize = Math.round(parseFloat(penSize) * 1e2) / 1e2;\n _penColor = penColor;\n}\n\n/**\n * Return pen attributes of the pen\n *\n * @return {Object} Object with size and color\n */\nexport function getPen() {\n return {\n size: _penSize,\n color: _penColor\n };\n}\n\n/**\n * Enable the pen behavior\n */\nexport function enablePen() {\n if (_enabled) {\n return;\n }\n\n _enabled = true;\n // Chrome and Firefox has different behaviors with how pen works, so we need different events.\n document.addEventListener('pointerdown', handleDocumentPointerdown);\n document.addEventListener('pointermove', handleDocumentPointermove);\n document.addEventListener('pointerup', handleDocumentPointerup);\n\n document.addEventListener('keyup', handleDocumentKeyup);\n disableUserSelect();\n}\n\n/**\n * Disable the pen behavior\n */\nexport function disablePen() {\n if (!_enabled) {\n return;\n }\n\n _enabled = false;\n document.removeEventListener('pointerdown', handleDocumentPointerdown);\n document.removeEventListener('pointermove', handleDocumentPointermove);\n document.removeEventListener('pointerup', handleDocumentPointerup);\n\n document.removeEventListener('keyup', handleDocumentKeyup);\n enableUserSelect();\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n findSVGContainer,\n getMetadata,\n convertToSvgPoint,\n convertToScreenPoint,\n findAnnotationAtPoint\n} from './utils';\n\nlet _enabled = false;\nlet _penSize;\nlet _penColor;\nlet path;\nlet lines;\nlet originY;\nlet originX;\n\n/**\n * Handle document.mousedown event\n */\nfunction handleDocumentMousedown(e) {\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\n if (target === null) {\n return;\n }\n\n let type = target.getAttribute('data-pdf-annotate-type');\n if (type !== 'circle' && type !== 'fillcircle' && type !== 'emptycircle') {\n return;\n }\n\n let svg = findSVGContainer(target);\n let { documentId } = getMetadata(svg);\n let annotationId = target.getAttribute('data-pdf-annotate-id');\n\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\n if (annotation) {\n path = null;\n lines = [];\n\n let point = convertToScreenPoint([\n annotation.cx,\n annotation.cy\n ], svg);\n\n let rect = svg.getBoundingClientRect();\n\n originX = point[0] + rect.left;\n originY = point[1] + rect.top;\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n document.addEventListener('mouseup', handleDocumentMouseup);\n }\n });\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentMouseup(e) {\n let svg;\n if (lines.length > 1 && (svg = findSVGAtPoint(e.clientX, e.clientY))) {\n let { documentId, pageNumber } = getMetadata(svg);\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\n type: 'arrow',\n width: _penSize,\n color: _penColor,\n lines\n }).then((annotation) => {\n if (path) {\n svg.removeChild(path);\n }\n\n appendChild(svg, annotation);\n });\n }\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentMousemove(e) {\n let x = lines.length === 0 ? originX : e.clientX;\n let y = lines.length === 0 ? originY : e.clientY;\n\n savePoint(x, y);\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n lines = null;\n path.parentNode.removeChild(path);\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n }\n}\n\n/**\n * Save a point to the line being drawn.\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n */\nfunction savePoint(x, y) {\n let svg = findSVGAtPoint(x, y);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let point = convertToSvgPoint([\n x - rect.left,\n y - rect.top\n ], svg);\n\n if (lines.length < 2) {\n lines.push(point);\n return;\n }\n else {\n lines[1] = point; // update end point\n }\n\n if (path) {\n svg.removeChild(path);\n }\n\n path = appendChild(svg, {\n type: 'arrow',\n color: _penColor,\n width: _penSize,\n lines\n });\n}\n\n/**\n * Set the attributes of the pen.\n *\n * @param {Number} penSize The size of the lines drawn by the pen\n * @param {String} penColor The color of the lines drawn by the pen\n */\nexport function setArrow(penSize = 10, penColor = '0000FF') {\n _penSize = parseInt(penSize, 10);\n _penColor = penColor;\n}\n\n/**\n * Enable the pen behavior\n */\nexport function enableArrow() {\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mousedown', handleDocumentMousedown);\n document.addEventListener('keyup', handleDocumentKeyup);\n disableUserSelect();\n}\n\n/**\n * Disable the pen behavior\n */\nexport function disableArrow() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('keyup', handleDocumentKeyup);\n enableUserSelect();\n}\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport {\n findAnnotationAtPoint,\n getMetadata\n} from './utils';\n\nlet _canerase = false;\nlet previousPoint = null;\n\n/**\n *\n * @param {PointerEvent} e DOM event to handle\n */\nfunction handleDocumentDown(e) {\n _canerase = true;\n previousPoint = [e.clientX, e.clientY];\n}\n\n/**\n *\n * @param {PointerEvent} e DOM event to handle\n */\nfunction handleDocumentUp(e) {\n _canerase = false;\n erase(findAnnotationAtPoint(e.clientX, e.clientY));\n}\n\n/**\n *\n * @param {PointerEvent} e DOM event to handle\n */\nfunction handleDocumentMouseMove(e) {\n if (!_canerase) {\n return;\n }\n\n // This algorithm attempts to get the various points between the last\n // PointerEvent and this one\n let check = [];\n let diffX = Math.abs(previousPoint[0] - e.clientX);\n let diffY = Math.abs(previousPoint[1] - e.clientY);\n if (diffX >= 1 || diffY >= 1) {\n let maxSteps = Math.round(Math.max(diffX, diffY));\n let subStepSize = Math.min(diffX, diffY) / maxSteps;\n let smallerTest = diffX < diffY;\n let startPoint = [\n Math.min(previousPoint[0], e.clientX),\n Math.min(previousPoint[1], e.clientY)\n ];\n for (let i = 0; i < maxSteps; i++) {\n if (smallerTest) {\n check.push([Math.round(startPoint[0] + (subStepSize * i)), Math.round(startPoint[1] + i)]);\n }\n else {\n check.push([Math.round(startPoint[0] + i), Math.round(startPoint[1] + (subStepSize * i))]);\n }\n }\n }\n for (let point of check) {\n erase(findAnnotationAtPoint(point[0], point[1]));\n }\n previousPoint = [e.clientX, e.clientY];\n}\n\nfunction erase(target) {\n if (!_canerase) {\n return;\n }\n\n if (target) {\n let { documentId } = getMetadata(target.parentElement);\n let annotationId = target.getAttribute('data-pdf-annotate-id');\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n [...nodes].forEach((n) => {\n n.parentNode.removeChild(n);\n });\n });\n }\n}\n\nexport function enableEraser() {\n document.addEventListener('pointermove', handleDocumentMouseMove);\n document.addEventListener('pointerdown', handleDocumentDown);\n document.addEventListener('pointerup', handleDocumentUp);\n}\n\nexport function disableEraser() {\n document.removeEventListener('pointermove', handleDocumentMouseMove);\n document.removeEventListener('pointerdown', handleDocumentDown);\n document.removeEventListener('pointerup', handleDocumentUp);\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n BORDER_COLOR,\n findSVGAtPoint,\n getMetadata,\n scaleDown\n} from './utils';\n\nlet _enabled = false;\nlet input;\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} The DOM event to be handled\n */\nfunction handleDocumentMouseup(e) {\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n\n input = document.createElement('input');\n input.setAttribute('id', 'pdf-annotate-point-input');\n input.setAttribute('placeholder', 'Enter comment');\n input.style.border = `3px solid ${BORDER_COLOR}`;\n input.style.borderRadius = '3px';\n input.style.position = 'absolute';\n input.style.top = `${e.clientY}px`;\n input.style.left = `${e.clientX}px`;\n\n input.addEventListener('blur', handleInputBlur);\n input.addEventListener('keyup', handleInputKeyup);\n\n document.body.appendChild(input);\n input.focus();\n}\n\n/**\n * Handle input.blur event\n */\nfunction handleInputBlur() {\n savePoint();\n}\n\n/**\n * Handle input.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleInputKeyup(e) {\n if (e.keyCode === 27) {\n closeInput();\n }\n else if (e.keyCode === 13) {\n savePoint();\n }\n}\n\n/**\n * Save a new point annotation from input\n */\nfunction savePoint() {\n if (input.value.trim().length > 0) {\n let clientX = parseInt(input.style.left, 10);\n let clientY = parseInt(input.style.top, 10);\n let content = input.value.trim();\n let svg = findSVGAtPoint(clientX, clientY);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let { documentId, pageNumber } = getMetadata(svg);\n let annotation = Object.assign({\n type: 'point'\n }, scaleDown(svg, {\n x: clientX - rect.left,\n y: clientY - rect.top\n }));\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n PDFJSAnnotate.getStoreAdapter().addComment(\n documentId,\n annotation.uuid,\n content\n );\n\n appendChild(svg, annotation);\n });\n }\n\n closeInput();\n}\n\n/**\n * Close the input element\n */\nfunction closeInput() {\n input.removeEventListener('blur', handleInputBlur);\n input.removeEventListener('keyup', handleInputKeyup);\n document.body.removeChild(input);\n input = null;\n}\n\n/**\n * Enable point annotation behavior\n */\nexport function enablePoint() {\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Disable point annotation behavior\n */\nexport function disablePoint() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport config from '../config';\nimport { appendChild } from '../render/appendChild';\nimport {\n BORDER_COLOR,\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n getMetadata,\n convertToSvgRect\n} from './utils';\n\nlet _enabled = false;\nlet _type;\nlet overlay;\nlet originY;\nlet originX;\n\n/**\n * Get the current window selection as rects\n *\n * @return {Array} An Array of rects\n */\nfunction getSelectionRects() {\n try {\n let selection = window.getSelection();\n let range = selection.getRangeAt(0);\n let rects = range.getClientRects();\n\n if (rects.length > 0 &&\n rects[0].width > 0 &&\n rects[0].height > 0) {\n return rects;\n }\n }\n catch (e) {}\n\n return null;\n}\n\n/**\n * Handle document.mousedown event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMousedown(e) {\n let svg;\n if (_type !== 'area' || !(svg = findSVGAtPoint(e.clientX, e.clientY))) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n originY = e.clientY;\n originX = e.clientX;\n\n overlay = document.createElement('div');\n overlay.style.position = 'absolute';\n overlay.style.top = `${originY - rect.top}px`;\n overlay.style.left = `${originX - rect.left}px`;\n overlay.style.border = `3px solid ${BORDER_COLOR}`;\n overlay.style.borderRadius = '3px';\n svg.parentNode.appendChild(overlay);\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n disableUserSelect();\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMousemove(e) {\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let rect = svg.getBoundingClientRect();\n\n if (originX + (e.clientX - originX) < rect.right) {\n overlay.style.width = `${e.clientX - originX}px`;\n }\n\n if (originY + (e.clientY - originY) < rect.bottom) {\n overlay.style.height = `${e.clientY - originY}px`;\n }\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n let rects;\n if (_type !== 'area' && (rects = getSelectionRects())) {\n saveRect(_type, [...rects].map((r) => {\n return {\n top: r.top,\n left: r.left,\n width: r.width,\n height: r.height\n };\n }));\n }\n else if (_type === 'area' && overlay) {\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let rect = svg.getBoundingClientRect();\n saveRect(_type, [{\n top: parseInt(overlay.style.top, 10) + rect.top,\n left: parseInt(overlay.style.left, 10) + rect.left,\n width: parseInt(overlay.style.width, 10),\n height: parseInt(overlay.style.height, 10)\n }]);\n\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n enableUserSelect();\n }\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n let selection = window.getSelection();\n selection.removeAllRanges();\n if (overlay && overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n document.removeEventListener('mousemove', handleDocumentMousemove);\n }\n }\n}\n\n/**\n * Save a rect annotation\n *\n * @param {String} type The type of rect (area, highlight, strikeout)\n * @param {Array} rects The rects to use for annotation\n * @param {String} color The color of the rects\n */\nfunction saveRect(type, rects, color) {\n let svg = findSVGAtPoint(rects[0].left, rects[0].top);\n let annotation;\n\n if (!svg) {\n return;\n }\n\n let boundingRect = svg.getBoundingClientRect();\n\n if (!color) {\n if (type === 'highlight') {\n color = 'FFFF00';\n }\n else if (type === 'strikeout') {\n color = 'FF0000';\n }\n }\n\n // Initialize the annotation\n annotation = {\n type,\n color,\n rectangles: [...rects].map((r) => {\n let offset = 0;\n\n if (type === 'strikeout') {\n offset = r.height / 2;\n }\n\n return convertToSvgRect({\n y: (r.top + offset) - boundingRect.top,\n x: r.left - boundingRect.left,\n width: r.width,\n height: r.height\n }, svg);\n }).filter((r) => r.width > 0 && r.height > 0 && r.x > -1 && r.y > -1)\n };\n\n // Short circuit if no rectangles exist\n if (annotation.rectangles.length === 0) {\n return;\n }\n\n // Special treatment for area as it only supports a single rect\n if (type === 'area') {\n let rect = annotation.rectangles[0];\n delete annotation.rectangles;\n annotation.x = rect.x;\n annotation.y = rect.y;\n annotation.width = rect.width;\n annotation.height = rect.height;\n }\n\n let { documentId, pageNumber } = getMetadata(svg);\n\n // Add the annotation\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n}\n\n/**\n * Enable rect behavior\n */\nexport function enableRect(type) {\n _type = type;\n\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n document.addEventListener('mousedown', handleDocumentMousedown);\n document.addEventListener('keyup', handleDocumentKeyup);\n}\n\n/**\n * Disable rect behavior\n */\nexport function disableRect() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('keyup', handleDocumentKeyup);\n}\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n findSVGAtPoint,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet _type;\nlet _circleRadius = 10;\nlet _circleColor = '0000FF';\n\n/**\n * Set the attributes of the pen.\n *\n * @param {Number} circleRadius The radius of the circle\n * @param {String} circleColor The color of the circle\n */\nexport function setCircle(circleRadius = 10, circleColor = '0000FF') {\n _circleRadius = parseInt(circleRadius, 10);\n _circleColor = circleColor;\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n let svg = findSVGAtPoint(e.clientX, e.clientY);\n if (!svg) {\n return;\n }\n let rect = svg.getBoundingClientRect();\n saveCircle(svg, _type, {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n }, _circleRadius, _circleColor);\n}\n\n/**\n * Save a circle annotation\n *\n * @param {SVGElement} svg\n * @param {String} type The type of circle (circle, emptycircle, fillcircle)\n * @param {Object} pt The point to use for annotation\n * @param {float} radius\n * @param {String} color The color of the rects\n */\nfunction saveCircle(svg, type, pt, radius, color) {\n // Initialize the annotation\n let svg_pt = convertToSvgPoint([ pt.x, pt.y ], svg);\n let annotation = {\n type,\n color,\n cx: svg_pt[0],\n cy: svg_pt[1],\n r: radius\n };\n\n let { documentId, pageNumber } = getMetadata(svg);\n\n // Add the annotation\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n}\n\n/**\n * Enable circle behavior\n */\nexport function enableCircle(type) {\n _type = type;\n\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Disable circle behavior\n */\nexport function disableCircle() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\nexport function addCircle(type, e) {\n let oldType = _type;\n _type = type;\n handleDocumentMouseup(e);\n _type = oldType;\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n BORDER_COLOR,\n findSVGAtPoint,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet input;\nlet _textSize = localStorage.getItem(`text/size`) || 12;\nlet _textColor = localStorage.getItem(`text/color`) || '#000000';\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n if (!e.srcElement.classList.contains('annotationLayer')) {\n return;\n }\n input = document.createElement('textarea');\n input.setAttribute('id', 'pdf-annotate-text-input');\n input.setAttribute('placeholder', 'Enter text... SHIFT + ENTER for new line');\n input.style.border = `3px solid ${BORDER_COLOR}`;\n input.style.borderRadius = '3px';\n input.style.position = 'fixed';\n input.style.top = `${e.clientY}px`;\n input.style.left = `${e.clientX}px`;\n input.style.fontSize = `${_textSize}px`;\n input.style.zIndex = '41';\n input.addEventListener('blur', handleInputBlur);\n input.addEventListener('keyup', handleInputKeyup);\n\n document.body.appendChild(input);\n input.focus();\n}\n\n/**\n * Handle input.blur event\n */\nfunction handleInputBlur() {\n saveText();\n}\n\n/**\n * Handle input.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleInputKeyup(e) {\n if (e.keyCode === 27) {\n closeInput();\n }\n else if (e.keyCode === 13 && !e.shiftKey) {\n saveText();\n }\n}\n\n/**\n * Save a text annotation from input\n */\nfunction saveText() {\n let value = (input.value) ? input.value.replace(/ +$/, '') : '';\n if (value.length > 0) {\n let clientX = parseInt(input.style.left, 10);\n let clientY = parseInt(input.style.top, 10);\n let svg = findSVGAtPoint(clientX, clientY);\n if (!svg) {\n return;\n }\n let height = _textSize;\n let { documentId, pageNumber, viewport } = getMetadata(svg);\n let scale = 1 / viewport.scale;\n let rect = svg.getBoundingClientRect();\n let pt = convertToSvgPoint([\n clientX - rect.left,\n clientY - rect.top + height], svg, viewport);\n let annotation = {\n type: 'textbox',\n size: _textSize * scale,\n color: _textColor,\n content: value,\n x: pt[0],\n y: pt[1],\n rotation: -viewport.rotation\n };\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n }\n\n closeInput();\n}\n\n/**\n * Close the input\n */\nfunction closeInput() {\n if (input) {\n input.removeEventListener('blur', handleInputBlur);\n input.removeEventListener('keyup', handleInputKeyup);\n document.body.removeChild(input);\n input = null;\n }\n}\n\n/**\n * Set the text attributes\n *\n * @param {Number} textSize The size of the text\n * @param {String} textColor The color of the text\n */\nexport function setText(textSize = 12, textColor = '000000') {\n _textSize = parseInt(textSize, 10);\n _textColor = textColor;\n}\n\n/**\n * Enable text behavior\n */\nexport function enableText() {\n if (_enabled) {\n return;\n }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Disable text behavior\n */\nexport function disableText() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n","/**\n * Create a node that is only visible to screen readers\n *\n * @param {String} content The text content that should be read by screen reader\n * @param {String} [annotationId] The ID of the annotation assocaited\n * @return {Element} An Element that is only visible to screen readers\n */\nexport default function createScreenReaderOnly(content, annotationId) {\n let node = document.createElement('div');\n let text = document.createTextNode(content);\n node.appendChild(text);\n node.setAttribute('id', `pdf-annotate-screenreader-${annotationId}`);\n node.style.position = 'absolute';\n node.style.left = '-10000px';\n node.style.top = 'auto';\n node.style.width = '1px';\n node.style.height = '1px';\n node.style.overflow = 'hidden';\n return node;\n}\n","import config from '../config';\nimport {\n pointIntersectsRect,\n scaleUp,\n scaleDown\n} from '../UI/utils';\n\n/**\n * Insert an element at a point within the document.\n * This algorithm will only insert within an element amidst it's text content.\n *\n * @param {Element} el The element to be inserted\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page number to limit elements to\n * @param {Boolean} insertBefore Whether the element is to be inserted before or after x\n * @return {Boolean} True if element was able to be inserted, otherwise false\n */\nexport default function insertElementWithinElement(el, x, y, pageNumber, insertBefore) {\n const OFFSET_ADJUST = 2;\n\n // If inserting before adjust `x` by looking for element a few px to the right\n // Otherwise adjust a few px to the left\n // This is to allow a little tolerance by searching within the box, instead\n // of getting a false negative by testing right on the border.\n x = Math.max(x + (OFFSET_ADJUST * (insertBefore ? 1 : -1)), 0);\n\n let node = textLayerElementFromPoint(x, y + OFFSET_ADJUST, pageNumber);\n if (!node) {\n return false;\n }\n\n // Now that node has been found inverse the adjustment for `x`.\n // This is done to accomodate tolerance by cutting off on the outside of the\n // text boundary, instead of missing a character by cutting off within.\n x = x + (OFFSET_ADJUST * (insertBefore ? -1 : 1));\n\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let left = scaleDown(svg, {left: node.getBoundingClientRect().left}).left - svg.getBoundingClientRect().left;\n let temp = node.cloneNode(true);\n let head = temp.innerHTML.split('');\n let tail = [];\n\n // Insert temp off screen\n temp.style.position = 'absolute';\n temp.style.top = '-10000px';\n temp.style.left = '-10000px';\n document.body.appendChild(temp);\n\n while (head.length) {\n // Don't insert within HTML tags\n if (head[head.length - 1] === '>') {\n while (head.length) {\n tail.unshift(head.pop());\n if (tail[0] === '<') {\n break;\n }\n }\n }\n\n // Check if width of temp based on current head value satisfies x\n temp.innerHTML = head.join('');\n let width = scaleDown(svg, {width: temp.getBoundingClientRect().width}).width;\n if (left + width <= x) {\n break;\n }\n tail.unshift(head.pop());\n }\n\n // Update original node with new markup, including element to be inserted\n node.innerHTML = head.join('') + el.outerHTML + tail.join('');\n temp.parentNode.removeChild(temp);\n\n return true;\n}\n\n/**\n * Get a text layer element at a given point on a page\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page to limit elements to\n * @return {Element} First text layer element found at the point\n */\nfunction textLayerElementFromPoint(x, y, pageNumber) {\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let rect = svg.getBoundingClientRect();\n y = scaleUp(svg, {y}).y + rect.top;\n x = scaleUp(svg, {x}).x + rect.left;\n return [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' [data-canvas-width]')].filter((el) => {\n return pointIntersectsRect(x, y, el.getBoundingClientRect());\n })[0];\n}\n","import config from '../config';\nimport insertElementWithinElement from './insertElementWithinElement';\nimport { pointIntersectsRect, scaleUp } from '../UI/utils';\n\n/**\n * Insert an element at a point within the document.\n * This algorithm will try to insert between elements if possible.\n * It will however use `insertElementWithinElement` if it is more accurate.\n *\n * @param {Element} el The element to be inserted\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page number to limit elements to\n * @return {Boolean} True if element was able to be inserted, otherwise false\n */\nexport default function insertElementWithinChildren(el, x, y, pageNumber) {\n // Try and use most accurate method of inserting within an element\n if (insertElementWithinElement(el, x, y, pageNumber, true)) {\n return true;\n }\n\n // Fall back to inserting between elements\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let rect = svg.getBoundingClientRect();\n let nodes = [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' > div')];\n\n y = scaleUp(svg, {y}).y + rect.top;\n x = scaleUp(svg, {x}).x + rect.left;\n\n // Find the best node to insert before\n for (let i = 0, l = nodes.length; i < l; i++) {\n let n = nodes[i];\n let r = n.getBoundingClientRect();\n if (y <= r.top) {\n n.parentNode.insertBefore(el, n);\n return true;\n }\n }\n\n // If all else fails try to append to the bottom\n let textLayer = svg.parentNode.querySelector(config.textClassQuery());\n if (textLayer) {\n let textRect = textLayer.getBoundingClientRect();\n if (pointIntersectsRect(x, y, textRect)) {\n textLayer.appendChild(el);\n return true;\n }\n }\n\n return false;\n}\n","/**\n * Insert a comment into the DOM to be available by screen reader\n *\n * @param {Object} comment The comment to be inserted\n */\nexport default function insertScreenReaderComment(comment) {\n if (!comment) {\n return;\n }\n\n let list = document.querySelector(`#pdf-annotate-screenreader-${comment.annotation} ol`);\n if (list) {\n let item = document.createElement('li');\n item.setAttribute('id', `pdf-annotate-screenreader-comment-${comment.uuid}`);\n item.appendChild(document.createTextNode(`${comment.content}`));\n list.appendChild(item);\n }\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport insertScreenReaderComment from './insertScreenReaderComment';\n\n/**\n * Insert the comments into the DOM to be available by screen reader\n *\n * Example output:\n *
\n *
Begin highlight 1
\n *
    \n *
  1. Foo
  2. \n *
  3. Bar
  4. \n *
  5. Baz
  6. \n *
  7. Qux
  8. \n *
\n *
\n *
Some highlighted text goes here...
\n *
End highlight 1
\n *\n * NOTE: `screenReaderOnly` is not a real class, just used for brevity\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The ID of the annotation\n * @param {Array} [comments] Optionally preloaded comments to be rendered\n * @return {Promise} Promise that once has comments, render them for screen reader\n */\nexport default function renderScreenReaderComments(documentId, annotationId, comments) {\n let promise;\n\n if (Array.isArray(comments)) {\n promise = Promise.resolve(comments);\n }\n else {\n promise = PDFJSAnnotate.getStoreAdapter().getComments(documentId, annotationId);\n }\n\n return promise.then((comments) => {\n // Node needs to be found by querying DOM as it may have been inserted as innerHTML\n // leaving `screenReaderNode` as an invalid reference (see `insertElementWithinElement`).\n let node = document.getElementById(`pdf-annotate-screenreader-${annotationId}`);\n if (node) {\n let list = document.createElement('ol');\n list.setAttribute('id', `pdf-annotate-screenreader-comment-list-${annotationId}`);\n list.setAttribute('aria-label', 'Comments');\n node.appendChild(list);\n comments.forEach(insertScreenReaderComment);\n }\n });\n}\n","import createScreenReaderOnly from './createScreenReaderOnly';\nimport insertElementWithinChildren from './insertElementWithinChildren';\nimport insertElementWithinElement from './insertElementWithinElement';\nimport renderScreenReaderComments from './renderScreenReaderComments';\n\n// Annotation types that support comments\nconst COMMENT_TYPES = ['highlight', 'point', 'area', 'circle', 'emptycircle', 'fillcircle'];\n\n/**\n * Insert a hint into the DOM for screen readers for a specific annotation.\n *\n * @param {Object} annotation The annotation to insert a hint for\n * @param {Number} num The number of the annotation out of all annotations of the same type\n */\nexport default function insertScreenReaderHint(annotation, num = 0) {\n switch (annotation.type) {\n case 'highlight':\n case 'strikeout':\n let rects = annotation.rectangles;\n let first = rects[0];\n let last = rects[rects.length - 1];\n\n insertElementWithinElement(\n createScreenReaderOnly(`Begin ${annotation.type} annotation ${num}`, annotation.uuid),\n first.x, first.y, annotation.page, true\n );\n\n insertElementWithinElement(\n createScreenReaderOnly(`End ${annotation.type} annotation ${num}`, `${annotation.uuid}-end`),\n last.x + last.width, last.y, annotation.page, false\n );\n break;\n\n case 'textbox':\n case 'point':\n let text = annotation.type === 'textbox' ? ` (content: ${annotation.content})` : '';\n\n insertElementWithinChildren(\n createScreenReaderOnly(`${annotation.type} annotation ${num}${text}`, annotation.uuid),\n annotation.x, annotation.y, annotation.page\n );\n break;\n\n case 'drawing':\n case 'area':\n let x = typeof annotation.x !== 'undefined' ? annotation.x : annotation.lines[0][0];\n let y = typeof annotation.y !== 'undefined' ? annotation.y : annotation.lines[0][1];\n\n insertElementWithinChildren(\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\n x, y, annotation.page\n );\n break;\n\n case 'circle':\n case 'fillcircle':\n case 'emptycircle':\n let x2 = typeof annotation.cx !== 'undefined' ? annotation.cx : annotation.lines[0][0];\n let y2 = typeof annotation.cy !== 'undefined' ? annotation.cy : annotation.lines[0][1];\n\n insertElementWithinChildren(\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\n x2, y2, annotation.page\n );\n break;\n }\n\n // Include comments in screen reader hint\n if (COMMENT_TYPES.includes(annotation.type)) {\n renderScreenReaderComments(annotation.documentId, annotation.uuid);\n }\n}\n","import renderScreenReaderHints from './renderScreenReaderHints';\nimport insertScreenReaderComment from './insertScreenReaderComment';\nimport renderScreenReaderComments from './renderScreenReaderComments';\nimport { addEventListener } from '../UI/event';\nimport PDFJSAnnotate from '../PDFJSAnnotate';\n\n/**\n * Initialize the event handlers for keeping screen reader hints synced with data\n */\nexport default function initEventHandlers() {\n addEventListener('annotation:add', (documentId, pageNumber, annotation) => {\n reorderAnnotationsByType(documentId, pageNumber, annotation.type);\n });\n addEventListener('annotation:edit', (documentId, annotationId, annotation) => {\n reorderAnnotationsByType(documentId, annotation.page, annotation.type);\n });\n addEventListener('annotation:delete', removeAnnotation);\n addEventListener('comment:add', insertComment);\n addEventListener('comment:delete', removeComment);\n}\n\n/**\n * Reorder the annotation numbers by annotation type\n *\n * @param {String} documentId The ID of the document\n * @param {Number} pageNumber The page number of the annotations\n * @param {Strig} type The annotation type\n */\nfunction reorderAnnotationsByType(documentId, pageNumber, type) {\n PDFJSAnnotate.getStoreAdapter().getAnnotations(documentId, pageNumber)\n .then((annotations) => {\n return annotations.annotations.filter((a) => {\n return a.type === type;\n });\n })\n .then((annotations) => {\n annotations.forEach((a) => {\n removeAnnotation(documentId, a.uuid);\n });\n\n return annotations;\n })\n .then(renderScreenReaderHints);\n}\n\n/**\n * Remove the screen reader hint for an annotation\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The Id of the annotation\n */\nfunction removeAnnotation(documentId, annotationId) {\n removeElementById(`pdf-annotate-screenreader-${annotationId}`);\n removeElementById(`pdf-annotate-screenreader-${annotationId}-end`);\n}\n\n/**\n * Insert a screen reader hint for a comment\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The ID of tha assocated annotation\n * @param {Object} comment The comment to insert a hint for\n */\nfunction insertComment(documentId, annotationId, comment) {\n let list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\n let promise;\n\n if (!list) {\n promise = renderScreenReaderComments(documentId, annotationId, []).then(() => {\n list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\n return true;\n });\n }\n else {\n promise = Promise.resolve(true);\n }\n\n promise.then(() => {\n insertScreenReaderComment(comment);\n });\n}\n\n/**\n * Remove a screen reader hint for a comment\n *\n * @param {String} documentId The ID of the document\n * @param {String} commentId The ID of the comment\n */\nfunction removeComment(documentId, commentId) {\n removeElementById(`pdf-annotate-screenreader-comment-${commentId}`);\n}\n\n/**\n * Remove an element from the DOM by it's ID if it exists\n *\n * @param {String} elementId The ID of the element to be removed\n */\nfunction removeElementById(elementId) {\n let el = document.getElementById(elementId);\n if (el) {\n el.parentNode.removeChild(el);\n }\n}\n","import insertScreenReaderHint from './insertScreenReaderHint';\nimport initEventHandlers from './initEventHandlers';\n\n// TODO This is not the right place for this to live\ninitEventHandlers();\n\n/**\n * Insert hints into the DOM for screen readers.\n *\n * @param {Array} annotations The annotations that hints are inserted for\n */\nexport default function renderScreenReaderHints(annotations) {\n annotations = Array.isArray(annotations) ? annotations : [];\n\n // Insert hints for each type\n Object.keys(SORT_TYPES).forEach((type) => {\n let sortBy = SORT_TYPES[type];\n annotations\n .filter((a) => a.type === type)\n .sort(sortBy)\n .forEach((a, i) => insertScreenReaderHint(a, i + 1));\n });\n}\n\n// Sort annotations first by y, then by x.\n// This allows hints to be injected in the order they appear,\n// which makes numbering them easier.\nfunction sortByPoint(a, b) {\n if (a.y < b.y) {\n return a.x - b.x;\n }\n else {\n return 1;\n }\n}\n\n// Sort annotation by it's first rectangle\nfunction sortByRectPoint(a, b) {\n return sortByPoint(a.rectangles[0], b.rectangles[0]);\n}\n\n// Sort annotation by it's first line\nfunction sortByLinePoint(a, b) {\n let lineA = a.lines[0];\n let lineB = b.lines[0];\n return sortByPoint(\n {x: lineA[0], y: lineA[1]},\n {x: lineB[0], y: lineB[1]}\n );\n}\n\n// Arrange supported types and associated sort methods\nconst SORT_TYPES = {\n 'highlight': sortByRectPoint,\n 'strikeout': sortByRectPoint,\n 'drawing': sortByLinePoint,\n 'textbox': sortByPoint,\n 'point': sortByPoint,\n 'area': sortByPoint\n};\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport config from '../config';\nimport renderScreenReaderHints from '../a11y/renderScreenReaderHints';\n\n// Template for creating a new page\nconst PAGE_TEMPLATE = `\n
\n
\n \n
\n
\n \n
\n`;\n\n/**\n * Create a new page to be appended to the DOM.\n *\n * @param {Number} pageNumber The page number that is being created\n * @return {HTMLElement}\n */\nexport function createPage(pageNumber) {\n let temp = document.createElement('div');\n temp.innerHTML = PAGE_TEMPLATE;\n\n let page = temp.children[0];\n let canvas = page.querySelector('canvas');\n\n page.setAttribute('id', `pageContainer${pageNumber}`);\n page.setAttribute('data-page-number', pageNumber);\n\n canvas.mozOpaque = true;\n canvas.setAttribute('id', `page${pageNumber}`);\n\n return page;\n}\n\n/**\n * Render a page that has already been created.\n *\n * @param {Number} pageNumber The page number to be rendered\n * @param {Object} renderOptions The options for rendering\n * @return {Promise} Settled once rendering has completed\n * A settled Promise will be either:\n * - fulfilled: [pdfPage, annotations]\n * - rejected: Error\n */\nexport function renderPage(pageNumber, renderOptions) {\n let {\n documentId,\n pdfDocument,\n scale,\n rotate\n } = renderOptions;\n\n const eventBus = new pdfjsViewer.EventBus();\n\n // Load the page and annotations\n return Promise.all([\n pdfDocument.getPage(pageNumber),\n PDFJSAnnotate.getAnnotations(documentId, pageNumber)\n ]).then(([pdfPage, annotations]) => {\n let page = document.getElementById(`pageContainer${pageNumber}`);\n let svg = page.querySelector(config.annotationClassQuery());\n let canvas = page.querySelector('.canvasWrapper canvas');\n let canvasContext = canvas.getContext('2d', {alpha: false});\n let totalRotation = (rotate + pdfPage.rotate) % 360;\n let viewport = pdfPage.getViewport({scale: scale, rotation: totalRotation});\n let transform = scalePage(pageNumber, viewport, canvasContext);\n\n // Render the page\n return Promise.all([\n pdfPage.render({ canvasContext, viewport, transform }).promise,\n PDFJSAnnotate.render(svg, viewport, annotations)\n ]).then(() => {\n // Text content is needed for a11y, but is also necessary for creating\n // highlight and strikeout annotations which require selecting text.\n return pdfPage.getTextContent({normalizeWhitespace: true}).then((textContent) => {\n return new Promise((resolve, reject) => {\n // Render text layer for a11y of text content\n let textLayer = page.querySelector(config.textClassQuery());\n let textLayerFactory = new pdfjsViewer.DefaultTextLayerFactory();\n let textLayerBuilder = textLayerFactory.createTextLayerBuilder(\n textLayer,\n pageNumber - 1,\n viewport,\n false,\n eventBus\n );\n textLayerBuilder.setTextContent(textContent);\n textLayerBuilder.render();\n\n // Enable a11y for annotations\n // Timeout is needed to wait for `textLayerBuilder.render`\n setTimeout(() => {\n try {\n renderScreenReaderHints(annotations.annotations);\n resolve();\n }\n catch (e) {\n reject(e);\n }\n });\n });\n });\n }).then(() => {\n // Indicate that the page was loaded\n page.setAttribute('data-loaded', 'true');\n\n return [pdfPage, annotations];\n });\n });\n}\n\n/**\n * Scale the elements of a page.\n *\n * @param {Number} pageNumber The page number to be scaled\n * @param {Object} viewport The viewport of the PDF page (see pdfPage.getViewport(scale, rotate))\n * @param {Object} context The canvas context that the PDF page is rendered to\n * @return {Array} The transform data for rendering the PDF page\n */\nfunction scalePage(pageNumber, viewport, context) {\n let page = document.getElementById(`pageContainer${pageNumber}`);\n let canvas = page.querySelector('.canvasWrapper canvas');\n let svg = page.querySelector(config.annotationClassQuery());\n let wrapper = page.querySelector('.canvasWrapper');\n let textLayer = page.querySelector(config.textClassQuery());\n let outputScale = getOutputScale(context);\n let transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\n let sfx = approximateFraction(outputScale.sx);\n let sfy = approximateFraction(outputScale.sy);\n\n // Adjust width/height for scale\n page.style.visibility = '';\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px';\n canvas.style.height = roundToDivide(viewport.height, sfx[1]) + 'px';\n svg.setAttribute('width', viewport.width);\n svg.setAttribute('height', viewport.height);\n svg.style.width = `${viewport.width}px`;\n svg.style.height = `${viewport.height}px`;\n page.style.width = `${viewport.width}px`;\n page.style.height = `${viewport.height}px`;\n wrapper.style.width = `${viewport.width}px`;\n wrapper.style.height = `${viewport.height}px`;\n textLayer.style.width = `${viewport.width}px`;\n textLayer.style.height = `${viewport.height}px`;\n\n return transform;\n}\n\n/**\n * Approximates a float number as a fraction using Farey sequence (max order of 8).\n *\n * @param {Number} x Positive float number\n * @return {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast path for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n }\n else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0; let b = 1; let c = 1; let d = 1;\n\n // Limit search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n let p = a + c; let q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p; d = q;\n }\n else {\n a = p; b = q;\n }\n }\n\n // Select closest of neighbours to x.\n if (x_ - a / b < c / d - x_) {\n return x_ === x ? [a, b] : [b, a];\n }\n else {\n return x_ === x ? [c, d] : [d, c];\n }\n}\n\nfunction getOutputScale(ctx) {\n let devicePixelRatio = window.devicePixelRatio || 1;\n let backingStoreRatio = ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1;\n let pixelRatio = devicePixelRatio / backingStoreRatio;\n return {\n sx: pixelRatio,\n sy: pixelRatio,\n scaled: pixelRatio !== 1\n };\n}\n\nfunction roundToDivide(x, div) {\n let r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n","import { addEventListener, removeEventListener, fireEvent } from './event';\nimport { disableEdit, enableEdit } from './edit';\nimport { disablePen, enablePen, setPen } from './pen';\nimport { disableArrow, enableArrow, setArrow } from './arrow';\nimport { disableEraser, enableEraser } from './eraser';\nimport { disablePoint, enablePoint } from './point';\nimport { disableRect, enableRect } from './rect';\nimport { disableCircle, enableCircle, setCircle, addCircle } from './circle';\nimport { disableText, enableText, setText } from './text';\nimport { createPage, renderPage } from './page';\n\nexport default {\n addEventListener,\n removeEventListener,\n fireEvent,\n\n disableEdit,\n enableEdit,\n\n disablePen,\n enablePen,\n setPen,\n\n disablePoint,\n enablePoint,\n\n disableRect,\n enableRect,\n\n disableCircle,\n enableCircle,\n setCircle,\n addCircle,\n\n disableArrow,\n enableArrow,\n setArrow,\n\n disableEraser,\n enableEraser,\n\n disableText,\n enableText,\n setText,\n\n createPage,\n renderPage\n};\n","import StoreAdapter from './adapter/StoreAdapter';\nimport LocalStoreAdapter from './adapter/LocalStoreAdapter';\nimport LocalUserStoreAdapter from './adapter/LocalUserStoreAdapter';\nimport render from './render';\nimport UI from './UI';\nimport config from './config';\nimport uuid from './utils/uuid';\nimport {\n findAnnotationAtPoint,\n findSVGContainer,\n convertToScreenPoint\n} from './UI/utils';\n\nexport default {\n findAnnotationAtPoint,\n findSVGContainer,\n convertToScreenPoint,\n\n /**\n * Abstract class that needs to be defined so PDFJSAnnotate\n * knows how to communicate with your server.\n */\n StoreAdapter,\n\n /**\n * Implementation of StoreAdapter that stores annotation data to localStorage.\n */\n LocalStoreAdapter,\n\n /**\n * Implementation of StoreAdapter that stores annotation data to localStorage particular\n * to a specific user\n */\n LocalUserStoreAdapter,\n\n /**\n * Abstract instance of StoreAdapter\n */\n __storeAdapter: new StoreAdapter(),\n\n /**\n * Getter for the underlying StoreAdapter property\n *\n * @return {StoreAdapter}\n */\n getStoreAdapter() {\n return this.__storeAdapter;\n },\n\n /**\n * Setter for the underlying StoreAdapter property\n *\n * @param {StoreAdapter} adapter The StoreAdapter implementation to be used.\n */\n setStoreAdapter(adapter) {\n // TODO this throws an error when bundled\n // if (!(adapter instanceof StoreAdapter)) {\n // throw new Error('adapter must be an instance of StoreAdapter');\n // }\n\n this.__storeAdapter = adapter;\n },\n\n /**\n * UI is a helper for instrumenting UI interactions for creating,\n * editing, and deleting annotations in the browser.\n */\n UI,\n\n /**\n * Render the annotations for a page in the PDF Document\n *\n * @param {SVGElement} svg The SVG element that annotations should be rendered to\n * @param {PageViewport} viewport The PDFPage.getViewport data\n * @param {Object} data The StoreAdapter.getAnnotations data\n * @return {Promise}\n */\n render,\n\n /**\n * Convenience method for getting annotation data\n *\n * @alias StoreAdapter.getAnnotations\n * @param {String} documentId The ID of the document\n * @param {String} pageNumber The page number\n * @return {Promise}\n */\n getAnnotations(documentId, pageNumber) {\n return this.getStoreAdapter().getAnnotations(...arguments);\n },\n\n config,\n\n uuid\n};\n","import { appendChild, transformChild } from './appendChild';\n\n/**\n * Render the response from PDFJSAnnotate.getStoreAdapter().getAnnotations to SVG\n *\n * @param {SVGElement} svg The SVG element to render the annotations to\n * @param {Object} viewport The page viewport data\n * @param {Object} data The response from PDFJSAnnotate.getStoreAdapter().getAnnotations\n * @return {Promise} Settled once rendering has completed\n * A settled Promise will be either:\n * - fulfilled: SVGElement\n * - rejected: Error\n */\nexport default function render(svg, viewport, data) {\n return new Promise((resolve, reject) => {\n // Reset the content of the SVG\n svg.setAttribute('data-pdf-annotate-container', true);\n svg.setAttribute('data-pdf-annotate-viewport', JSON.stringify(viewport));\n svg.removeAttribute('data-pdf-annotate-document');\n svg.removeAttribute('data-pdf-annotate-page');\n\n // If there's no data nothing can be done\n if (!data) {\n svg.innerHTML = '';\n return resolve(svg);\n }\n\n svg.setAttribute('data-pdf-annotate-document', data.documentId);\n svg.setAttribute('data-pdf-annotate-page', data.pageNumber);\n\n // Make sure annotations is an array\n if (!Array.isArray(data.annotations) || data.annotations.length === 0) {\n return resolve(svg);\n }\n\n // Append or transform annotation to svg\n data.annotations.forEach((a) => {\n let node = svg.querySelector('[data-pdf-annotate-id=\"' + a.uuid + '\"]');\n if (node) {\n transformChild(svg, node, viewport);\n }\n else {\n appendChild(svg, a, viewport);\n }\n });\n\n resolve(svg);\n });\n}\n","import PDFJSAnnotate from './src/PDFJSAnnotate';\n\nexport default PDFJSAnnotate;\n"],"names":["root","factory","exports","module","define","amd","self","ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","once","emitter","name","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","Array","i","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","key","keys","rawListeners","eventNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","d","a","definition","o","obj","prop","hasOwnProperty","r","Symbol","toStringTag","abstractFunction","UPPER_REGEX","BLACKLIST","keyCase","indexOf","replace","match","toLowerCase","setAttributes","node","attributes","forEach","setAttribute","REGEX_HASHLESS_HEX","normalizeColor","color","test","SIZE","D","createRect","rect","document","createElementNS","x","y","width","height","renderText","text","fill","fontSize","size","transform","rotation","style","textElement","textContent","_step","lines","split","getAttribute","_iterator","_createForOfIteratorHelper","s","done","line","tspan","toString","innerHTML","appendChild","e","f","insertLineBreaks","content","g","translate","rotate","angle","Math","PI","cosValue","cos","sinValue","sin","scale","makePoint","z","makeVector","xcoord","ycoord","zcoord","makeVectorFromPoints","pt1","pt2","addVector","pt","v","multiplyVector","scalar","magnitude","sqrt","pow","negateVector","unitVector","mag","isFirefox","navigator","userAgent","getTranslation","viewport","trans","nodeName","parseInt","path","querySelector","svg","parentNode","assign","annotation","child","group","JSON","parse","fillOpacity","rectangles","stroke","renderRect","circle","cx","cy","createCircle","renderCircle","strokeWidth","x1","y1","x2","y2","outerSVG","innerSVG","viewBox","renderPoint","l","p1","join","renderPath","u","arrow","p2","pt0","unitX","unitY","thickness","A","B","C","G","F","E","points","renderArrow","uuid","filter","BORDER_COLOR","userSelectStyleSheet","createElement","findSVGContainer","toUpperCase","findSVGAtPoint","elements","querySelectorAll","el","pointIntersectsRect","getBoundingClientRect","findAnnotationAtPoint","candidate","elementFromPoint","top","bottom","left","right","scaleUp","result","getMetadata","convertToSvgPoint","xform","p","offset","convertToScreenPoint","scaleDown","disableUserSelect","head","enableUserSelect","removeChild","documentId","pageNumber","clickNode","fireEvent","clientX","clientY","StoreAdapter","_this","_classCallCheck","__getAnnotations","fn","then","annotations","annotationId","__addAnnotation","__editAnnotation","__deleteAnnotation","success","__addComment","comment","commentId","__deleteComment","REGEXP","replacement","c","random","LocalStoreAdapter","_StoreAdapter","_callSuper","getAnnotations","page","getAnnotation","findAnnotation","addAnnotation","updateAnnotations","editAnnotation","deleteAnnotation","splice","getComments","addComment","class","deleteComment","_inherits","localStorage","getItem","setItem","stringify","LocalUserStoreAdapter","userId","globalEdit","getAllAnnotations","_userId","_globalEdit","all_annotations","re","RegExp","search","annotationLayerName","textLayerName","annotationSvgQuery","annotationClassQuery","textClassQuery","overlay","dragOffsetX","dragOffsetY","dragStartX","dragStartY","_enabled","isDragging","destroyEditOverlay","handleDocumentClick","handleDocumentKeyup","handleDocumentMousedown","handleDocumentMousemove","handleDocumentMouseup","config","PDFJSAnnotate","getStoreAdapter","_toConsumableArray","getElementById","keyTest","keyCode","preventDefault","offsetLeft","offsetTop","background","cursor","display","maxY","maxX","offsetHeight","offsetWidth","attribX","attribY","modelStart","modelEnd","modelDelta","firstChild","t","modelX","modelY","setTimeout","handleAnnotationClick","anchor","id","extraOffsetWidth","extraOffsetHeight","tagName","getBBox","bbox","_getOffset","getOffset","getOffsetAnnotationRect","styleLeft","styleTop","boxSizing","border","borderRadius","zIndex","padding","textAlign","textDecoration","borderColor","boxShadow","createEditOverlay","_penSize","_penColor","_candraw","handleDocumentPointerdown","handleDocumentPointerup","_getMetadata","saveToStorage","handleDocumentPointermove","point","toFixed","savePoint","originY","originX","_getMetadata2","_canerase","previousPoint","handleDocumentDown","handleDocumentUp","erase","handleDocumentMouseMove","check","diffX","abs","diffY","maxSteps","round","max","subStepSize","min","smallerTest","startPoint","_i","_check","parentElement","input","handleInputBlur","handleInputKeyup","body","focus","closeInput","trim","_type","rects","window","getSelection","getRangeAt","getClientRects","getSelectionRects","saveRect","map","removeAllRanges","boundingRect","convertToSvgRect","_circleRadius","_circleColor","radius","svg_pt","saveCircle","_textSize","_textColor","srcElement","classList","contains","saveText","shiftKey","createScreenReaderOnly","createTextNode","overflow","insertElementWithinElement","insertBefore","textLayerElementFromPoint","temp","cloneNode","tail","outerHTML","insertElementWithinChildren","nodes","textLayer","insertScreenReaderComment","item","renderScreenReaderComments","comments","isArray","COMMENT_TYPES","reorderAnnotationsByType","removeAnnotation","renderScreenReaderHints","removeElementById","elementId","SORT_TYPES","sortBy","sort","num","first","last","includes","insertScreenReaderHint","sortByPoint","b","sortByRectPoint","lineA","lineB","PAGE_TEMPLATE","approximateFraction","floor","xinv","x_","q","roundToDivide","div","disableEdit","enableEdit","disablePen","enablePen","setPen","penSize","penColor","parseFloat","disablePoint","enablePoint","disableRect","enableRect","disableCircle","enableCircle","setCircle","circleColor","addCircle","oldType","disableArrow","enableArrow","setArrow","disableEraser","enableEraser","disableText","enableText","setText","textColor","createPage","children","canvas","mozOpaque","renderPage","renderOptions","pdfDocument","eventBus","pdfjsViewer","EventBus","all","getPage","_ref","_ref2","pdfPage","canvasContext","getContext","alpha","totalRotation","getViewport","ctx","pixelRatio","wrapper","outputScale","sx","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","sy","scaled","sfx","sfy","visibility","scalePage","render","promise","getTextContent","normalizeWhitespace","textLayerBuilder","DefaultTextLayerFactory","createTextLayerBuilder","setTextContent","__storeAdapter","setStoreAdapter","adapter","UI","data","removeAttribute","transformChild","_this$getStoreAdapter"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/pdf-annotate.min.js b/dist/pdf-annotate.min.js index 8dd179b4..c97b6af7 100644 --- a/dist/pdf-annotate.min.js +++ b/dist/pdf-annotate.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PDFAnnotate=e():t.PDFAnnotate=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e,n){"use strict";var r,o="object"==typeof Reflect?Reflect:null,i=o&&"function"==typeof o.apply?o.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};r=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var a=Number.isNaN||function(t){return t!=t};function u(){u.init.call(this)}t.exports=u,t.exports.once=function(t,e){return new Promise((function(n,r){function o(n){t.removeListener(e,i),r(n)}function i(){"function"==typeof t.removeListener&&t.removeListener("error",o),n([].slice.call(arguments))}h(t,e,i,{once:!0}),"error"!==e&&function(t,e,n){"function"==typeof t.on&&h(t,"error",e,n)}(t,o,{once:!0})}))},u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var c=10;function l(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function s(t){return void 0===t._maxListeners?u.defaultMaxListeners:t._maxListeners}function d(t,e,n,r){var o,i,a,u;if(l(n),void 0===(i=t._events)?(i=t._events=Object.create(null),t._eventsCount=0):(void 0!==i.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),i=t._events),a=i[e]),void 0===a)a=i[e]=n,++t._eventsCount;else if("function"==typeof a?a=i[e]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(o=s(t))>0&&a.length>o&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=a.length,u=c,console&&console.warn&&console.warn(u)}return t}function f(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},o=f.bind(r);return o.listener=n,r.wrapFn=o,o}function y(t,e,n){var r=t._events;if(void 0===r)return[];var o=r[e];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(t){for(var e=new Array(t.length),n=0;n0&&(a=e[0]),a instanceof Error)throw a;var u=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw u.context=a,u}var c=o[t];if(void 0===c)return!1;if("function"==typeof c)i(c,this,e);else{var l=c.length,s=v(c,l);for(n=0;n=0;i--)if(n[i]===e||n[i].listener===e){a=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;r--)this.removeListener(t,e[r]);return this},u.prototype.listeners=function(t){return y(this,t,!0)},u.prototype.rawListeners=function(t){return y(this,t,!1)},u.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},u.prototype.listenerCount=m,u.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(t,e,n){"use strict";function r(t){throw new Error(t+" is not implemented")}n.r(e);var o=n(0),i=n.n(o),a=/[A-Z]/g,u=["viewBox"];function c(t,e){Object.keys(e).forEach((function(n){t.setAttribute(function(t){return-1===u.indexOf(t)&&(t=t.replace(a,(function(t){return"-"+t.toLowerCase()}))),t}(n),e[n])}))}var l=/^([a-f0-9]{6}|[a-f0-9]{3})$/i;function s(t){return l.test(t)&&(t="#".concat(t)),t}var d=25;function f(t){var e=document.createElementNS("http://www.w3.org/2000/svg","rect");return c(e,{x:t.x,y:t.y,width:t.width,height:t.height}),e}function p(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return y(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0){e.push("M".concat(t.lines[0][0]," ").concat(t.lines[0][1]));for(var r=1,o=t.lines.length;r=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right}function F(t){var e=t.getBoundingClientRect(),n=e.width,r=e.height,o=0,i=0;if(["line","path"].indexOf(t.tagName.toLowerCase())>-1&&t.getBBox){var a=t.getBBox();o=(e.width-a.width)/2,i=(e.height-a.height)/2,n=a.width,r=a.height}var u=function(t){var e=t;for(;(e=e.parentNode)&&e!==document&&"SVG"!==e.nodeName.toUpperCase(););var n=e.getBoundingClientRect();return{offsetLeft:n.left,offsetTop:n.top}}(t),c=u.offsetLeft,l=u.offsetTop;return{top:e.top-l+i,left:e.left-c+o,bottom:e.bottom-l-i,right:e.right-c-o,width:n,height:r}}function X(t,e){var n={},r=W(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]*r.scale})),n}function Y(t,e,n){var r=[1,0,0,1,0,0];r=g(r=b(r,(n=n||W(e).viewport).scale,n.scale),n.rotation);var o,i,a,u=O(n);return r=h(r,u.x,u.y),o=t,a=(i=r)[0]*i[3]-i[1]*i[2],[(o[0]*i[3]-o[1]*i[2]+i[2]*i[5]-i[4]*i[3])/a,(-o[0]*i[1]+o[1]*i[0]+i[4]*i[1]-i[5]*i[0])/a]}function U(t,e,n){var r=[1,0,0,1,0,0];r=g(r=b(r,(n=n||W(e).viewport).scale,n.scale),n.rotation);var o,i,a=O(n);return r=h(r,a.x,a.y),i=r,[(o=t)[0]*i[0]+o[1]*i[2]+i[4],o[0]*i[1]+o[1]*i[3]+i[5]]}function Q(t,e){var n={},r=W(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]/r.scale})),n}function H(){M.parentNode||document.head.appendChild(M)}function D(){M.parentNode&&M.parentNode.removeChild(M)}function W(t){return{documentId:t.getAttribute("data-pdf-annotate-document"),pageNumber:parseInt(t.getAttribute("data-pdf-annotate-page"),10),viewport:JSON.parse(t.getAttribute("data-pdf-annotate-viewport"))}}M.innerHTML="\nbody {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n",M.setAttribute("data-pdf-annotate-user-select","true");var $,J=new i.a;function V(){J.emit.apply(J,arguments)}function G(){J.on.apply(J,arguments)}function K(){J.removeListener.apply(J,arguments)}function Z(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function tt(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};Z(this,t),Object.keys(n).forEach((function(t){"function"==typeof n[t]&&"function"==typeof e[t]&&(e[t]=n[t])}))}var e,n,o;return e=t,n=[{key:"__getAnnotations",value:function(t,e){r("getAnnotations")}},{key:"getAnnotations",get:function(){return this.__getAnnotations},set:function(t){this.__getAnnotations=function(e,n){return t.apply(void 0,arguments).then((function(t){return t.annotations&&t.annotations.forEach((function(t){t.documentId=e})),t}))}}},{key:"getAnnotation",value:function(t,e){r("getAnnotation")}},{key:"__addAnnotation",value:function(t,e,n){r("addAnnotation")}},{key:"addAnnotation",get:function(){return this.__addAnnotation},set:function(t){this.__addAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return V("annotation:add",e,n,t),t}))}}},{key:"__editAnnotation",value:function(t,e,n){r("editAnnotation")}},{key:"editAnnotation",get:function(){return this.__editAnnotation},set:function(t){this.__editAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return V("annotation:edit",e,n,t),t}))}}},{key:"__deleteAnnotation",value:function(t,e){r("deleteAnnotation")}},{key:"deleteAnnotation",get:function(){return this.__deleteAnnotation},set:function(t){this.__deleteAnnotation=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&V("annotation:delete",e,n),t}))}}},{key:"getComments",value:function(t,e){r("getComments")}},{key:"__addComment",value:function(t,e,n){r("addComment")}},{key:"addComment",get:function(){return this.__addComment},set:function(t){this.__addComment=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return V("comment:add",e,n,t),t}))}}},{key:"__deleteComment",value:function(t,e){r("deleteComment")}},{key:"deleteComment",get:function(){return this.__deleteComment},set:function(t){this.__deleteComment=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&V("comment:delete",e,n),t}))}}}],n&&tt(e.prototype,n),o&&tt(e,o),Object.defineProperty(e,"prototype",{writable:!1}),t}(),nt=/[xy]/g;function rt(t){var e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}function ot(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(nt,rt)}function it(t){return it="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},it(t)}function at(t,e){for(var n=0;n-1){var i=ft(t);i.splice(o,1),pt(t,i)}n(!0)}))},t.getComments=function(t,e){return new Promise((function(n,r){n(ft(t).filter((function(t){return"Comment"===t.class&&t.annotation===e})))}))},t.addComment=function(t,e,n){return new Promise((function(r,o){var i={class:"Comment",uuid:ot(),annotation:e,content:n},a=ft(t);a.push(i),pt(t,a),r(i)}))},t.deleteComment=function(t,e){return new Promise((function(n,r){var o=ft(t).filter((function(t){return t.uuid===e}))[0]||{};if(!o)return r("Could not find annotation");for(var i=-1,a=ft(t),u=0,c=a.length;u-1&&(a.splice(i,1),pt(t,a)),n(!0)}))},t}return e=i,n&&at(e.prototype,n),r&&at(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}(et);function ft(t){return JSON.parse(localStorage.getItem("".concat(t,"/annotations")))||[]}function pt(t,e){localStorage.setItem("".concat(t,"/annotations"),JSON.stringify(e))}function yt(t,e){for(var n=-1,r=ft(t),o=0,i=r.length;ot.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:"user",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return gt(this,i),(t=o.call(this,{getAnnotations:function(t,e){return new Promise((function(n,r){var o=Ct(t).filter((function(t){return t.page===e&&"Annotation"===t.class}));n({documentId:t,pageNumber:e,annotations:o})}))}}))._userId=e,t._globalEdit=n,t.getAnnotation=function(e,n){return Promise.resolve(Lt(e,t._userId)[_t(e,t._userId,n)])},t.addAnnotation=function(e,n,r){return new Promise((function(o,i){r.class="Annotation",r.uuid=ot(),r.page=n,r.userId=t._userId;var a=Lt(e,t._userId);a.push(r),It(e,t._userId,a),o(r)}))},t.editAnnotation=function(e,n,r){return new Promise((function(o,i){!t._globalEdit&&r.userId&&r.userId!==t._userId&&i("Non-matching userId");var a=Lt(e,r.userId);a[_t(e,r.userId,n)]=r,It(e,r.userId,a),o(r)}))},t.deleteAnnotation=function(e,n){return new Promise((function(r,o){var i=Ct(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");var a=_t(e,i.userId,n);if(a>-1){var u=Lt(e,i.userId);u.splice(a,1),It(e,i.userId,u)}r(!0)}))},t.getComments=function(e,n){return new Promise((function(r,o){r(Lt(e,t._userId).filter((function(t){return"Comment"===t.class&&t.annotation===n})))}))},t.addComment=function(e,n,r){return new Promise((function(o,i){var a={class:"Comment",uuid:ot(),annotation:n,content:r,userId:t._userId},u=Lt(e,t._userId);u.push(a),It(e,t._userId,u),o(a)}))},t.deleteComment=function(e,n){return new Promise((function(r,o){var i=Ct(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");for(var a=-1,u=Lt(e,i.userId),c=0,l=u.length;c-1&&(u.splice(a,1),It(e,i.userId,u)),r(!0)}))},t}return e=i,(n=[{key:"userId",get:function(){return this._userId}}])&&bt(e.prototype,n),r&&bt(e,r),Object.defineProperty(e,"prototype",{writable:!1}),i}(et);function Ct(t){for(var e=[],n=new RegExp("".concat(t,"/(.*)/annotations")),r=0;r-1&&e.push.apply(e,vt(JSON.parse(localStorage.getItem(localStorage.key(r)))));return e}function Lt(t,e){return JSON.parse(localStorage.getItem("".concat(t,"/").concat(e,"/annotations")))||[]}function It(t,e,n){localStorage.setItem("".concat(t,"/").concat(e,"/annotations"),JSON.stringify(n))}function _t(t,e,n){for(var r=-1,o=Lt(t,e),i=0,a=o.length;it.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&n+jt.offsetHeight0&&r+jt.offsetWidth-1&&(a="cx",u="cy"),"point"!==r){if(["area","highlight","textbox","circle","fillcircle","emptycircle"].indexOf(r)>-1){var c=Y([Mt,Tt],o),l=Y([jt.offsetLeft,jt.offsetTop],o),s={x:l[0]-c[0],y:l[1]-c[1]};"textbox"===r&&(n=[n[0].firstChild]),Ot(n).forEach((function(e,n){var r=parseInt(e.getAttribute(a),10),o=parseInt(e.getAttribute(u),10);0!==s.y&&(o+=s.y,e.setAttribute(u,o),t.rectangles&&n1&&(n=B(t,e))){var r=W(n),o=r.documentId,i=r.pageNumber;In.getStoreAdapter().addAnnotation(o,i,{type:"drawing",width:Wt,color:$t,lines:Kt}).then((function(t){Jt&&n.removeChild(Jt),j(n,t)}))}}(t.clientX,t.clientY)}function ee(t){B(t.clientX,t.clientY)&&Gt&&function(t,e){var n=B(t,e);if(!n)return;var r=n.getBoundingClientRect(),o=Y([t-r.left,e-r.top],n);if(o[0]=o[0].toFixed(2),o[1]=o[1].toFixed(2),Kt.push(o),Kt.length<=1)return;Jt&&n.removeChild(Jt);Jt=j(n,{type:"drawing",color:$t,width:Wt,lines:Kt})}(t.clientX,t.clientY)}function ne(t){27===t.keyCode&&(Kt=null,Jt.parentNode.removeChild(Jt),document.removeEventListener("pointermove",ee),document.removeEventListener("pointerup",te))}var re,oe,ie,ae,ue,ce,le=!1;function se(t){var e=q(t.clientX,t.clientY);if(null!==e){var n=e.getAttribute("data-pdf-annotate-type");if("circle"===n||"fillcircle"===n||"emptycircle"===n){var r=T(e),o=W(r).documentId,i=e.getAttribute("data-pdf-annotate-id");In.getStoreAdapter().getAnnotation(o,i).then((function(t){if(t){ie=null,ae=[];var e=U([t.cx,t.cy],r),n=r.getBoundingClientRect();ce=e[0]+n.left,ue=e[1]+n.top,document.addEventListener("mousemove",fe),document.addEventListener("mouseup",de)}}))}}}function de(t){var e;if(ae.length>1&&(e=B(t.clientX,t.clientY))){var n=W(e),r=n.documentId,o=n.pageNumber;In.getStoreAdapter().addAnnotation(r,o,{type:"arrow",width:re,color:oe,lines:ae}).then((function(t){ie&&e.removeChild(ie),j(e,t)}))}document.removeEventListener("mousemove",fe),document.removeEventListener("mouseup",de)}function fe(t){!function(t,e){var n=B(t,e);if(!n)return;var r=n.getBoundingClientRect(),o=Y([t-r.left,e-r.top],n);if(ae.length<2)return void ae.push(o);ae[1]=o;ie&&n.removeChild(ie);ie=j(n,{type:"arrow",color:oe,width:re,lines:ae})}(0===ae.length?ce:t.clientX,0===ae.length?ue:t.clientY)}function pe(t){27===t.keyCode&&(ae=null,ie.parentNode.removeChild(ie),document.removeEventListener("mousemove",fe),document.removeEventListener("mouseup",de))}function ye(t){return function(t){if(Array.isArray(t))return me(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return me(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return me(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function me(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n=1||r>=1)for(var o=Math.round(Math.max(n,r)),i=Math.min(n,r)/o,a=n0){var t=parseInt(Ae.style.left,10),e=parseInt(Ae.style.top,10),n=Ae.value.trim(),r=B(t,e);if(!r)return;var o=r.getBoundingClientRect(),i=W(r),a=i.documentId,u=i.pageNumber,c=Object.assign({type:"point"},Q(r,{x:t-o.left,y:e-o.top}));In.getStoreAdapter().addAnnotation(a,u,c).then((function(t){In.getStoreAdapter().addComment(a,t.uuid,n),j(r,t)}))}_e()}function _e(){Ae.removeEventListener("blur",Ce),Ae.removeEventListener("keyup",Le),document.body.removeChild(Ae),Ae=null}function ke(t){return function(t){if(Array.isArray(t))return Oe(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Oe(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Oe(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Oe(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&t[0].width>0&&t[0].height>0)return t}catch(t){}return null}()))Fe(Ne,ke(e).map((function(t){return{top:t.top,left:t.left,width:t.width,height:t.height}})));else if("area"===Ne&&je){var n=je.parentNode.querySelector(kt.annotationSvgQuery()).getBoundingClientRect();Fe(Ne,[{top:parseInt(je.style.top,10)+n.top,left:parseInt(je.style.left,10)+n.left,width:parseInt(je.style.width,10),height:parseInt(je.style.height,10)}]),je.parentNode.removeChild(je),je=null,document.removeEventListener("mousemove",Be),D()}}function ze(t){27===t.keyCode&&(window.getSelection().removeAllRanges(),je&&je.parentNode&&(je.parentNode.removeChild(je),je=null,document.removeEventListener("mousemove",Be)))}function Fe(t,e,n){var r,o=B(e[0].left,e[0].top);if(o){var i=o.getBoundingClientRect();if(n||("highlight"===t?n="FFFF00":"strikeout"===t&&(n="FF0000")),r={type:t,color:n,rectangles:ke(e).map((function(e){var n=0;return"strikeout"===t&&(n=e.height/2),function(t,e,n){var r=[t.x,t.y],o=[t.x+t.width,t.y+t.height];return r=Y(r,e,n),o=Y(o,e,n),{x:Math.min(r[0],o[0]),y:Math.min(r[1],o[1]),width:Math.abs(o[0]-r[0]),height:Math.abs(o[1]-r[1])}}({y:e.top+n-i.top,x:e.left-i.left,width:e.width,height:e.height},o)})).filter((function(t){return t.width>0&&t.height>0&&t.x>-1&&t.y>-1}))},0!==r.rectangles.length){if("area"===t){var a=r.rectangles[0];delete r.rectangles,r.x=a.x,r.y=a.y,r.width=a.width,r.height=a.height}var u=W(o),c=u.documentId,l=u.pageNumber;In.getStoreAdapter().addAnnotation(c,l,r).then((function(t){j(o,t)}))}}}var Xe,Ye=!1,Ue=10,Qe="0000FF";function He(t){var e=B(t.clientX,t.clientY);if(e){var n=e.getBoundingClientRect();!function(t,e,n,r,o){var i=Y([n.x,n.y],t),a={type:e,color:o,cx:i[0],cy:i[1],r:r},u=W(t),c=u.documentId,l=u.pageNumber;In.getStoreAdapter().addAnnotation(c,l,a).then((function(e){j(t,e)}))}(e,Xe,{x:t.clientX-n.left,y:t.clientY-n.top},Ue,Qe)}}var De,We=!1,$e=localStorage.getItem("text/size")||12,Je=localStorage.getItem("text/color")||"#000000";function Ve(t){!De&&B(t.clientX,t.clientY)&&t.srcElement.classList.contains("annotationLayer")&&((De=document.createElement("textarea")).setAttribute("id","pdf-annotate-text-input"),De.setAttribute("placeholder","Enter text... SHIFT + ENTER for new line"),De.style.border="3px solid ".concat(R),De.style.borderRadius="3px",De.style.position="fixed",De.style.top="".concat(t.clientY,"px"),De.style.left="".concat(t.clientX,"px"),De.style.fontSize="".concat($e,"px"),De.style.zIndex="41",De.addEventListener("blur",Ge),De.addEventListener("keyup",Ke),document.body.appendChild(De),De.focus())}function Ge(){Ze()}function Ke(t){27===t.keyCode?tn():13!==t.keyCode||t.shiftKey||Ze()}function Ze(){var t=De.value?De.value.replace(/ +$/,""):"";if(t.length>0){var e=parseInt(De.style.left,10),n=parseInt(De.style.top,10),r=B(e,n);if(!r)return;var o=$e,i=W(r),a=i.documentId,u=i.pageNumber,c=i.viewport,l=1/c.scale,s=r.getBoundingClientRect(),d=Y([e-s.left,n-s.top+o],r,c),f={type:"textbox",size:$e*l,color:Je,content:t,x:d[0],y:d[1],rotation:-c.rotation};In.getStoreAdapter().addAnnotation(a,u,f).then((function(t){j(r,t)}))}tn()}function tn(){De&&(De.removeEventListener("blur",Ge),De.removeEventListener("keyup",Ke),document.body.removeChild(De),De=null)}function en(t,e){var n=document.createElement("div"),r=document.createTextNode(t);return n.appendChild(r),n.setAttribute("id","pdf-annotate-screenreader-".concat(e)),n.style.position="absolute",n.style.left="-10000px",n.style.top="auto",n.style.width="1px",n.style.height="1px",n.style.overflow="hidden",n}function nn(t){return function(t){if(Array.isArray(t))return rn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return rn(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rn(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n"===l[l.length-1])for(;l.length&&(s.unshift(l.pop()),"<"!==s[0]););if(c.innerHTML=l.join(""),u+Q(a,{width:c.getBoundingClientRect().width}).width<=e)break;s.unshift(l.pop())}return i.innerHTML=l.join("")+t.outerHTML+s.join(""),c.parentNode.removeChild(c),!0}function an(t){return function(t){if(Array.isArray(t))return un(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return un(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return un(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function un(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n div"));n=X(o,{y:n}).y+i.top,e=X(o,{x:e}).x+i.left;for(var u=0,c=a.length;u1&&void 0!==arguments[1]?arguments[1]:0;switch(t.type){case"highlight":case"strikeout":var n=t.rectangles,r=n[0],o=n[n.length-1];on(en("Begin ".concat(t.type," annotation ").concat(e),t.uuid),r.x,r.y,t.page,!0),on(en("End ".concat(t.type," annotation ").concat(e),"".concat(t.uuid,"-end")),o.x+o.width,o.y,t.page,!1);break;case"textbox":case"point":var i="textbox"===t.type?" (content: ".concat(t.content,")"):"";cn(en("".concat(t.type," annotation ").concat(e).concat(i),t.uuid),t.x,t.y,t.page);break;case"drawing":case"area":var a=void 0!==t.x?t.x:t.lines[0][0],u=void 0!==t.y?t.y:t.lines[0][1];cn(en("Unlabeled drawing",t.uuid),a,u,t.page);break;case"circle":case"fillcircle":case"emptycircle":var c=void 0!==t.cx?t.cx:t.lines[0][0],l=void 0!==t.cy?t.cy:t.lines[0][1];cn(en("Unlabeled drawing",t.uuid),c,l,t.page)}dn.includes(t.type)&&sn(t.documentId,t.uuid)}(t,e+1)}))}))}function gn(t,e){return t.yt.length)&&(e=t.length);for(var n=0,r=new Array(e);n\n \n \n';function En(t){if(Math.floor(t)===t)return[t,1];var e=1/t;if(e>8)return[1,8];if(Math.floor(e)===e)return[1,e];for(var n=t>1?e:t,r=0,o=1,i=1,a=1;;){var u=r+i,c=o+a;if(c>8)break;n<=u/c?(i=u,a=c):(r=u,o=c)}return n-r/o0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";Wt=Math.round(100*parseFloat(t))/100,$t=e},disablePoint:function(){Se&&(Se=!1,document.removeEventListener("mouseup",Ee))},enablePoint:function(){Se||(Se=!0,document.addEventListener("mouseup",Ee))},disableRect:function(){Me&&(Me=!1,document.removeEventListener("mouseup",qe),document.removeEventListener("mousedown",Te),document.removeEventListener("keyup",ze))},enableRect:function(t){Ne=t,Me||(Me=!0,document.addEventListener("mouseup",qe),document.addEventListener("mousedown",Te),document.addEventListener("keyup",ze))},disableCircle:function(){Ye&&(Ye=!1,document.removeEventListener("mouseup",He))},enableCircle:function(t){Xe=t,Ye||(Ye=!0,document.addEventListener("mouseup",He))},setCircle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";Ue=parseInt(t,10),Qe=e},addCircle:function(t,e){var n=Xe;Xe=t,He(e),Xe=n},disableArrow:function(){le&&(le=!1,document.removeEventListener("mousedown",se),document.removeEventListener("keyup",pe),D())},enableArrow:function(){le||(le=!0,document.addEventListener("mousedown",se),document.addEventListener("keyup",pe),H())},setArrow:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";re=parseInt(t,10),oe=e},disableEraser:function(){document.removeEventListener("pointermove",we),document.removeEventListener("pointerdown",ge),document.removeEventListener("pointerup",be)},enableEraser:function(){document.addEventListener("pointermove",we),document.addEventListener("pointerdown",ge),document.addEventListener("pointerup",be)},disableText:function(){We&&(We=!1,document.removeEventListener("mouseup",Ve))},enableText:function(){We||(We=!0,document.addEventListener("mouseup",Ve))},setText:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";$e=parseInt(t,10),Je=e},createPage:function(t){var e=document.createElement("div");e.innerHTML=Sn;var n=e.children[0],r=n.querySelector("canvas");return n.setAttribute("id","pageContainer".concat(t)),n.setAttribute("data-page-number",t),r.mozOpaque=!0,r.setAttribute("id","page".concat(t)),n},renderPage:function(t,e){var n=e.documentId,r=e.pdfDocument,o=e.scale,i=e.rotate,a=new pdfjsViewer.EventBus;return Promise.all([r.getPage(t),In.getAnnotations(n,t)]).then((function(e){var n=xn(e,2),r=n[0],u=n[1],c=document.getElementById("pageContainer".concat(t)),l=c.querySelector(kt.annotationClassQuery()),s=c.querySelector(".canvasWrapper canvas").getContext("2d",{alpha:!1}),d=(i+r.rotate)%360,f=r.getViewport({scale:o,rotation:d}),p=function(t,e,n){var r=document.getElementById("pageContainer".concat(t)),o=r.querySelector(".canvasWrapper canvas"),i=r.querySelector(kt.annotationClassQuery()),a=r.querySelector(".canvasWrapper"),u=r.querySelector(kt.textClassQuery()),c=(f=n,p=window.devicePixelRatio||1,y=f.webkitBackingStorePixelRatio||f.mozBackingStorePixelRatio||f.msBackingStorePixelRatio||f.oBackingStorePixelRatio||f.backingStorePixelRatio||1,m=p/y,{sx:m,sy:m,scaled:1!==m}),l=c.scaled?[c.sx,0,0,c.sy,0,0]:null,s=En(c.sx),d=En(c.sy);var f,p,y,m;return r.style.visibility="",o.width=Cn(e.width*c.sx,s[0]),o.height=Cn(e.height*c.sy,d[0]),o.style.width=Cn(e.width,s[1])+"px",o.style.height=Cn(e.height,s[1])+"px",i.setAttribute("width",e.width),i.setAttribute("height",e.height),i.style.width="".concat(e.width,"px"),i.style.height="".concat(e.height,"px"),r.style.width="".concat(e.width,"px"),r.style.height="".concat(e.height,"px"),a.style.width="".concat(e.width,"px"),a.style.height="".concat(e.height,"px"),u.style.width="".concat(e.width,"px"),u.style.height="".concat(e.height,"px"),l}(t,f,s);return Promise.all([r.render({canvasContext:s,viewport:f,transform:p}).promise,In.render(l,f,u)]).then((function(){return r.getTextContent({normalizeWhitespace:!0}).then((function(e){return new Promise((function(n,r){var o=c.querySelector(kt.textClassQuery()),i=(new pdfjsViewer.DefaultTextLayerFactory).createTextLayerBuilder(o,t-1,f,!1,a);i.setTextContent(e),i.render(),setTimeout((function(){try{hn(u.annotations),n()}catch(t){r(t)}}))}))}))})).then((function(){return c.setAttribute("data-loaded","true"),[r,u]}))}))}},In={findAnnotationAtPoint:q,findSVGContainer:T,convertToScreenPoint:U,StoreAdapter:et,LocalStoreAdapter:dt,LocalUserStoreAdapter:Et,__storeAdapter:new et,getStoreAdapter:function(){return this.__storeAdapter},setStoreAdapter:function(t){this.__storeAdapter=t},UI:Ln,render:function(t,e,n){return new Promise((function(r,o){return t.setAttribute("data-pdf-annotate-container",!0),t.setAttribute("data-pdf-annotate-viewport",JSON.stringify(e)),t.removeAttribute("data-pdf-annotate-document"),t.removeAttribute("data-pdf-annotate-page"),n?(t.setAttribute("data-pdf-annotate-document",n.documentId),t.setAttribute("data-pdf-annotate-page",n.pageNumber),Array.isArray(n.annotations)&&0!==n.annotations.length?(n.annotations.forEach((function(n){var r=t.querySelector('[data-pdf-annotate-id="'+n.uuid+'"]');r?P(t,r,e):j(t,n,e)})),void r(t)):r(t)):(t.innerHTML="",r(t))}))},getAnnotations:function(t,e){var n;return(n=this.getStoreAdapter()).getAnnotations.apply(n,arguments)},config:kt,uuid:ot};e.default=In}])})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.PDFAnnotate=e():t.PDFAnnotate=e()}(self,(()=>(()=>{"use strict";var t={7:t=>{var e,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};e=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var o=Number.isNaN||function(t){return t!=t};function i(){i.init.call(this)}t.exports=i,t.exports.once=function(t,e){return new Promise((function(n,r){function o(n){t.removeListener(e,i),r(n)}function i(){"function"==typeof t.removeListener&&t.removeListener("error",o),n([].slice.call(arguments))}v(t,e,i,{once:!0}),"error"!==e&&function(t,e,n){"function"==typeof t.on&&v(t,"error",e,n)}(t,o,{once:!0})}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var a=10;function u(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function c(t){return void 0===t._maxListeners?i.defaultMaxListeners:t._maxListeners}function l(t,e,n,r){var o,i,a,l;if(u(n),void 0===(i=t._events)?(i=t._events=Object.create(null),t._eventsCount=0):(void 0!==i.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),i=t._events),a=i[e]),void 0===a)a=i[e]=n,++t._eventsCount;else if("function"==typeof a?a=i[e]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(o=c(t))>0&&a.length>o&&!a.warned){a.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=t,s.type=e,s.count=a.length,l=s,console&&console.warn&&console.warn(l)}return t}function s(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},o=s.bind(r);return o.listener=n,r.wrapFn=o,o}function f(t,e,n){var r=t._events;if(void 0===r)return[];var o=r[e];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(t){for(var e=new Array(t.length),n=0;n0&&(a=e[0]),a instanceof Error)throw a;var u=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw u.context=a,u}var c=i[t];if(void 0===c)return!1;if("function"==typeof c)r(c,this,e);else{var l=c.length,s=y(c,l);for(n=0;n=0;i--)if(n[i]===e||n[i].listener===e){a=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;r--)this.removeListener(t,e[r]);return this},i.prototype.listeners=function(t){return f(this,t,!0)},i.prototype.rawListeners=function(t){return f(this,t,!1)},i.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):p.call(t,e)},i.prototype.listenerCount=p,i.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r](i,i.exports,n),i.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};function o(t){throw new Error(t+" is not implemented")}n.r(r),n.d(r,{default:()=>Mn});var i=n(7),a=n.n(i),u=/[A-Z]/g,c=["viewBox"],l=function(t){return-1===c.indexOf(t)&&(t=t.replace(u,(function(t){return"-"+t.toLowerCase()}))),t};function s(t,e){Object.keys(e).forEach((function(n){t.setAttribute(l(n),e[n])}))}var d=/^([a-f0-9]{6}|[a-f0-9]{3})$/i;function f(t){return d.test(t)&&(t="#".concat(t)),t}var p=25,y="M499.968 214.336q-113.832 0 -212.877 38.781t-157.356 104.625 -58.311 142.29q0 62.496 39.897 119.133t112.437 97.929l48.546 27.9 -15.066 53.568q-13.392 50.778 -39.06 95.976 84.816 -35.154 153.45 -95.418l23.994 -21.204 31.806 3.348q38.502 4.464 72.54 4.464 113.832 0 212.877 -38.781t157.356 -104.625 58.311 -142.29 -58.311 -142.29 -157.356 -104.625 -212.877 -38.781z";function v(t){var e=document.createElementNS("http://www.w3.org/2000/svg","rect");return s(e,{x:t.x,y:t.y,width:t.width,height:t.height}),e}function m(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return h(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n0){e.push("M".concat(t.lines[0][0]," ").concat(t.lines[0][1]));for(var r=1,o=t.lines.length;r=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right}function U(t){var e=t.getBoundingClientRect(),n=e.width,r=e.height,o=0,i=0;if(["line","path"].indexOf(t.tagName.toLowerCase())>-1&&t.getBBox){var a=t.getBBox();o=(e.width-a.width)/2,i=(e.height-a.height)/2,n=a.width,r=a.height}var u=function(t){var e=t;for(;(e=e.parentNode)&&e!==document&&"SVG"!==e.nodeName.toUpperCase(););var n=e.getBoundingClientRect();return{offsetLeft:n.left,offsetTop:n.top}}(t),c=u.offsetLeft,l=u.offsetTop;return{top:e.top-l+i,left:e.left-c+o,bottom:e.bottom-l-i,right:e.right-c-o,width:n,height:r}}function Q(t,e){var n={},r=V(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]*r.scale})),n}function H(t,e,n){var r=[1,0,0,1,0,0];r=x(r=A(r,(n=n||V(e).viewport).scale,n.scale),n.rotation);var o,i,a,u=P(n);return r=w(r,u.x,u.y),o=t,a=(i=r)[0]*i[3]-i[1]*i[2],[(o[0]*i[3]-o[1]*i[2]+i[2]*i[5]-i[4]*i[3])/a,(-o[0]*i[1]+o[1]*i[0]+i[4]*i[1]-i[5]*i[0])/a]}function D(t,e,n){var r=[1,0,0,1,0,0];r=x(r=A(r,(n=n||V(e).viewport).scale,n.scale),n.rotation);var o,i,a=P(n);return r=w(r,a.x,a.y),i=r,[(o=t)[0]*i[0]+o[1]*i[2]+i[4],o[0]*i[1]+o[1]*i[3]+i[5]]}function W(t,e){var n={},r=V(t).viewport;return Object.keys(e).forEach((function(t){n[t]=e[t]/r.scale})),n}function $(){q.parentNode||document.head.appendChild(q)}function J(){q.parentNode&&q.parentNode.removeChild(q)}function V(t){return{documentId:t.getAttribute("data-pdf-annotate-document"),pageNumber:parseInt(t.getAttribute("data-pdf-annotate-page"),10),viewport:JSON.parse(t.getAttribute("data-pdf-annotate-viewport"))}}q.innerHTML="\nbody {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n",q.setAttribute("data-pdf-annotate-user-select","true");var G,K=new(a());function Z(){K.emit.apply(K,arguments)}function tt(){K.on.apply(K,arguments)}function et(){K.removeListener.apply(K,arguments)}function nt(t){return nt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},nt(t)}function rt(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),Object.keys(n).forEach((function(t){"function"==typeof n[t]&&"function"==typeof e[t]&&(e[t]=n[t])}))},e=[{key:"__getAnnotations",value:function(t,e){o("getAnnotations")}},{key:"getAnnotations",get:function(){return this.__getAnnotations},set:function(t){this.__getAnnotations=function(e,n){return t.apply(void 0,arguments).then((function(t){return t.annotations&&t.annotations.forEach((function(t){t.documentId=e})),t}))}}},{key:"getAnnotation",value:function(t,e){o("getAnnotation")}},{key:"__addAnnotation",value:function(t,e,n){o("addAnnotation")}},{key:"addAnnotation",get:function(){return this.__addAnnotation},set:function(t){this.__addAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return Z("annotation:add",e,n,t),t}))}}},{key:"__editAnnotation",value:function(t,e,n){o("editAnnotation")}},{key:"editAnnotation",get:function(){return this.__editAnnotation},set:function(t){this.__editAnnotation=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return Z("annotation:edit",e,n,t),t}))}}},{key:"__deleteAnnotation",value:function(t,e){o("deleteAnnotation")}},{key:"deleteAnnotation",get:function(){return this.__deleteAnnotation},set:function(t){this.__deleteAnnotation=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&Z("annotation:delete",e,n),t}))}}},{key:"getComments",value:function(t,e){o("getComments")}},{key:"__addComment",value:function(t,e,n){o("addComment")}},{key:"addComment",get:function(){return this.__addComment},set:function(t){this.__addComment=function(e,n,r){return t.apply(void 0,arguments).then((function(t){return Z("comment:add",e,n,t),t}))}}},{key:"__deleteComment",value:function(t,e){o("deleteComment")}},{key:"deleteComment",get:function(){return this.__deleteComment},set:function(t){this.__deleteComment=function(e,n){return t.apply(void 0,arguments).then((function(t){return t&&Z("comment:delete",e,n),t}))}}}],e&&rt(t.prototype,e),n&&rt(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,n}(),at=/[xy]/g;function ut(t){var e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}function ct(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(at,ut)}function lt(t){return lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},lt(t)}function st(t,e){for(var n=0;n-1){var i=ht(t);i.splice(o,1),gt(t,i)}n(!0)}))},t.getComments=function(t,e){return new Promise((function(n,r){n(ht(t).filter((function(t){return"Comment"===t.class&&t.annotation===e})))}))},t.addComment=function(t,e,n){return new Promise((function(r,o){var i={class:"Comment",uuid:ct(),annotation:e,content:n},a=ht(t);a.push(i),gt(t,a),r(i)}))},t.deleteComment=function(t,e){return new Promise((function(n,r){var o=ht(t).filter((function(t){return t.uuid===e}))[0]||{};if(!o)return r("Could not find annotation");for(var i=-1,a=ht(t),u=0,c=a.length;u-1&&(a.splice(i,1),gt(t,a)),n(!0)}))},t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&vt(t,e)}(e,t),n=e,r&&st(n.prototype,r),o&&st(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(it);function ht(t){return JSON.parse(localStorage.getItem("".concat(t,"/annotations")))||[]}function gt(t,e){localStorage.setItem("".concat(t,"/annotations"),JSON.stringify(e))}function bt(t,e){for(var n=-1,r=ht(t),o=0,i=r.length;ot.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&void 0!==arguments[0]?arguments[0]:"user",r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(t=Ct(this,e,[{getAnnotations:function(t,e){return new Promise((function(n,r){var o=Nt(t).filter((function(t){return t.page===e&&"Annotation"===t.class}));n({documentId:t,pageNumber:e,annotations:o})}))}}]))._userId=n,t._globalEdit=r,t.getAnnotation=function(e,n){return Promise.resolve(Ot(e,t._userId)[Pt(e,t._userId,n)])},t.addAnnotation=function(e,n,r){return new Promise((function(o,i){r.class="Annotation",r.uuid=ct(),r.page=n,r.userId=t._userId;var a=Ot(e,t._userId);a.push(r),jt(e,t._userId,a),o(r)}))},t.editAnnotation=function(e,n,r){return new Promise((function(o,i){!t._globalEdit&&r.userId&&r.userId!==t._userId&&i("Non-matching userId");var a=Ot(e,r.userId);a[Pt(e,r.userId,n)]=r,jt(e,r.userId,a),o(r)}))},t.deleteAnnotation=function(e,n){return new Promise((function(r,o){var i=Nt(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");var a=Pt(e,i.userId,n);if(a>-1){var u=Ot(e,i.userId);u.splice(a,1),jt(e,i.userId,u)}r(!0)}))},t.getComments=function(e,n){return new Promise((function(r,o){r(Ot(e,t._userId).filter((function(t){return"Comment"===t.class&&t.annotation===n})))}))},t.addComment=function(e,n,r){return new Promise((function(o,i){var a={class:"Comment",uuid:ct(),annotation:n,content:r,userId:t._userId},u=Ot(e,t._userId);u.push(a),jt(e,t._userId,u),o(a)}))},t.deleteComment=function(e,n){return new Promise((function(r,o){var i=Nt(e).filter((function(t){return t.uuid===n}))[0]||{};if(!i)return o("Could not find annotation");if(!t._globalEdit&&i.userId&&i.userId!==t._userId)return o("Non-matching userId");for(var a=-1,u=Ot(e,i.userId),c=0,l=u.length;c-1&&(u.splice(a,1),jt(e,i.userId,u)),r(!0)}))},t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&kt(t,e)}(e,t),n=e,(r=[{key:"userId",get:function(){return this._userId}}])&&St(n.prototype,r),o&&St(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,o}(it);function Nt(t){for(var e=[],n=new RegExp("".concat(t,"/(.*)/annotations")),r=0;r-1&&e.push.apply(e,xt(JSON.parse(localStorage.getItem(localStorage.key(r)))));return e}function Ot(t,e){return JSON.parse(localStorage.getItem("".concat(t,"/").concat(e,"/annotations")))||[]}function jt(t,e,n){localStorage.setItem("".concat(t,"/").concat(e,"/annotations"),JSON.stringify(n))}function Pt(t,e,n){for(var r=-1,o=Ot(t,e),i=0,a=o.length;it.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&n+Bt.offsetHeight0&&r+Bt.offsetWidth-1&&(a="cx",u="cy"),"point"!==r){if(["area","highlight","textbox","circle","fillcircle","emptycircle"].indexOf(r)>-1){var c=H([Ft,Xt],o),l=H([Bt.offsetLeft,Bt.offsetTop],o),s={x:l[0]-c[0],y:l[1]-c[1]};"textbox"===r&&(n=[n[0].firstChild]),Rt(n).forEach((function(e,n){var r=parseInt(e.getAttribute(a),10),o=parseInt(e.getAttribute(u),10);0!==s.y&&(o+=s.y,e.setAttribute(u,o),t.rectangles&&n1&&(n=F(t,e))){var r=V(n),o=r.documentId,i=r.pageNumber;Pn.getStoreAdapter().addAnnotation(o,i,{type:"drawing",width:Zt,color:te,lines:oe}).then((function(t){ee&&n.removeChild(ee),R(n,t)}))}}(t.clientX,t.clientY)}function ue(t){F(t.clientX,t.clientY)&&re&&function(t,e){var n=F(t,e);if(!n)return;var r=n.getBoundingClientRect(),o=H([t-r.left,e-r.top],n);if(o[0]=o[0].toFixed(2),o[1]=o[1].toFixed(2),oe.push(o),oe.length<=1)return;ee&&n.removeChild(ee);ee=R(n,{type:"drawing",color:te,width:Zt,lines:oe})}(t.clientX,t.clientY)}function ce(t){27===t.keyCode&&(oe=null,ee.parentNode.removeChild(ee),document.removeEventListener("pointermove",ue),document.removeEventListener("pointerup",ae))}var le,se,de,fe,pe,ye,ve=!1;function me(t){var e=X(t.clientX,t.clientY);if(null!==e){var n=e.getAttribute("data-pdf-annotate-type");if("circle"===n||"fillcircle"===n||"emptycircle"===n){var r=z(e),o=V(r).documentId,i=e.getAttribute("data-pdf-annotate-id");Pn.getStoreAdapter().getAnnotation(o,i).then((function(t){if(t){de=null,fe=[];var e=D([t.cx,t.cy],r),n=r.getBoundingClientRect();ye=e[0]+n.left,pe=e[1]+n.top,document.addEventListener("mousemove",ge),document.addEventListener("mouseup",he)}}))}}}function he(t){var e;if(fe.length>1&&(e=F(t.clientX,t.clientY))){var n=V(e),r=n.documentId,o=n.pageNumber;Pn.getStoreAdapter().addAnnotation(r,o,{type:"arrow",width:le,color:se,lines:fe}).then((function(t){de&&e.removeChild(de),R(e,t)}))}document.removeEventListener("mousemove",ge),document.removeEventListener("mouseup",he)}function ge(t){!function(t,e){var n=F(t,e);if(!n)return;var r=n.getBoundingClientRect(),o=H([t-r.left,e-r.top],n);if(fe.length<2)return void fe.push(o);fe[1]=o;de&&n.removeChild(de);de=R(n,{type:"arrow",color:se,width:le,lines:fe})}(0===fe.length?ye:t.clientX,0===fe.length?pe:t.clientY)}function be(t){27===t.keyCode&&(fe=null,de.parentNode.removeChild(de),document.removeEventListener("mousemove",ge),document.removeEventListener("mouseup",he))}function we(t){return function(t){if(Array.isArray(t))return xe(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return xe(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xe(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xe(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n=1||r>=1)for(var o=Math.round(Math.max(n,r)),i=Math.min(n,r)/o,a=n0){var t=parseInt(ke.style.left,10),e=parseInt(ke.style.top,10),n=ke.value.trim(),r=F(t,e);if(!r)return;var o=r.getBoundingClientRect(),i=V(r),a=i.documentId,u=i.pageNumber,c=Object.assign({type:"point"},W(r,{x:t-o.left,y:e-o.top}));Pn.getStoreAdapter().addAnnotation(a,u,c).then((function(t){Pn.getStoreAdapter().addComment(a,t.uuid,n),R(r,t)}))}Me()}function Me(){ke.removeEventListener("blur",Oe),ke.removeEventListener("keyup",je),document.body.removeChild(ke),ke=null}function Re(t){return function(t){if(Array.isArray(t))return Te(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Te(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Te(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n0&&t[0].width>0&&t[0].height>0)return t}catch(t){}return null}()))De(Be,Re(e).map((function(t){return{top:t.top,left:t.left,width:t.width,height:t.height}})));else if("area"===Be&&qe){var n=qe.parentNode.querySelector(Mt.annotationSvgQuery()).getBoundingClientRect();De(Be,[{top:parseInt(qe.style.top,10)+n.top,left:parseInt(qe.style.left,10)+n.left,width:parseInt(qe.style.width,10),height:parseInt(qe.style.height,10)}]),qe.parentNode.removeChild(qe),qe=null,document.removeEventListener("mousemove",Ue),J()}}function He(t){27===t.keyCode&&(window.getSelection().removeAllRanges(),qe&&qe.parentNode&&(qe.parentNode.removeChild(qe),qe=null,document.removeEventListener("mousemove",Ue)))}function De(t,e,n){var r,o=F(e[0].left,e[0].top);if(o){var i=o.getBoundingClientRect();if(n||("highlight"===t?n="FFFF00":"strikeout"===t&&(n="FF0000")),r={type:t,color:n,rectangles:Re(e).map((function(e){var n=0;return"strikeout"===t&&(n=e.height/2),function(t,e,n){var r=[t.x,t.y],o=[t.x+t.width,t.y+t.height];return r=H(r,e,n),o=H(o,e,n),{x:Math.min(r[0],o[0]),y:Math.min(r[1],o[1]),width:Math.abs(o[0]-r[0]),height:Math.abs(o[1]-r[1])}}({y:e.top+n-i.top,x:e.left-i.left,width:e.width,height:e.height},o)})).filter((function(t){return t.width>0&&t.height>0&&t.x>-1&&t.y>-1}))},0!==r.rectangles.length){if("area"===t){var a=r.rectangles[0];delete r.rectangles,r.x=a.x,r.y=a.y,r.width=a.width,r.height=a.height}var u=V(o),c=u.documentId,l=u.pageNumber;Pn.getStoreAdapter().addAnnotation(c,l,r).then((function(t){R(o,t)}))}}}var We,$e=!1,Je=10,Ve="0000FF";function Ge(t){var e=F(t.clientX,t.clientY);if(e){var n=e.getBoundingClientRect();!function(t,e,n,r,o){var i=H([n.x,n.y],t),a={type:e,color:o,cx:i[0],cy:i[1],r},u=V(t),c=u.documentId,l=u.pageNumber;Pn.getStoreAdapter().addAnnotation(c,l,a).then((function(e){R(t,e)}))}(e,We,{x:t.clientX-n.left,y:t.clientY-n.top},Je,Ve)}}var Ke,Ze=!1,tn=localStorage.getItem("text/size")||12,en=localStorage.getItem("text/color")||"#000000";function nn(t){!Ke&&F(t.clientX,t.clientY)&&t.srcElement.classList.contains("annotationLayer")&&((Ke=document.createElement("textarea")).setAttribute("id","pdf-annotate-text-input"),Ke.setAttribute("placeholder","Enter text... SHIFT + ENTER for new line"),Ke.style.border="3px solid ".concat(B),Ke.style.borderRadius="3px",Ke.style.position="fixed",Ke.style.top="".concat(t.clientY,"px"),Ke.style.left="".concat(t.clientX,"px"),Ke.style.fontSize="".concat(tn,"px"),Ke.style.zIndex="41",Ke.addEventListener("blur",rn),Ke.addEventListener("keyup",on),document.body.appendChild(Ke),Ke.focus())}function rn(){an()}function on(t){27===t.keyCode?un():13!==t.keyCode||t.shiftKey||an()}function an(){var t=Ke.value?Ke.value.replace(/ +$/,""):"";if(t.length>0){var e=parseInt(Ke.style.left,10),n=parseInt(Ke.style.top,10),r=F(e,n);if(!r)return;var o=tn,i=V(r),a=i.documentId,u=i.pageNumber,c=i.viewport,l=1/c.scale,s=r.getBoundingClientRect(),d=H([e-s.left,n-s.top+o],r,c),f={type:"textbox",size:tn*l,color:en,content:t,x:d[0],y:d[1],rotation:-c.rotation};Pn.getStoreAdapter().addAnnotation(a,u,f).then((function(t){R(r,t)}))}un()}function un(){Ke&&(Ke.removeEventListener("blur",rn),Ke.removeEventListener("keyup",on),document.body.removeChild(Ke),Ke=null)}function cn(t,e){var n=document.createElement("div"),r=document.createTextNode(t);return n.appendChild(r),n.setAttribute("id","pdf-annotate-screenreader-".concat(e)),n.style.position="absolute",n.style.left="-10000px",n.style.top="auto",n.style.width="1px",n.style.height="1px",n.style.overflow="hidden",n}function ln(t){return function(t){if(Array.isArray(t))return sn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return sn(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?sn(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n"===l[l.length-1])for(;l.length&&(s.unshift(l.pop()),"<"!==s[0]););if(c.innerHTML=l.join(""),u+W(a,{width:c.getBoundingClientRect().width}).width<=e)break;s.unshift(l.pop())}return i.innerHTML=l.join("")+t.outerHTML+s.join(""),c.parentNode.removeChild(c),!0}function fn(t){return function(t){if(Array.isArray(t))return pn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return pn(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?pn(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n div"));n=Q(o,{y:n}).y+i.top,e=Q(o,{x:e}).x+i.left;for(var u=0,c=a.length;u1&&void 0!==arguments[1]?arguments[1]:0;switch(t.type){case"highlight":case"strikeout":var n=t.rectangles,r=n[0],o=n[n.length-1];dn(cn("Begin ".concat(t.type," annotation ").concat(e),t.uuid),r.x,r.y,t.page,!0),dn(cn("End ".concat(t.type," annotation ").concat(e),"".concat(t.uuid,"-end")),o.x+o.width,o.y,t.page,!1);break;case"textbox":case"point":var i="textbox"===t.type?" (content: ".concat(t.content,")"):"";yn(cn("".concat(t.type," annotation ").concat(e).concat(i),t.uuid),t.x,t.y,t.page);break;case"drawing":case"area":var a=void 0!==t.x?t.x:t.lines[0][0],u=void 0!==t.y?t.y:t.lines[0][1];yn(cn("Unlabeled drawing",t.uuid),a,u,t.page);break;case"circle":case"fillcircle":case"emptycircle":var c=void 0!==t.cx?t.cx:t.lines[0][0],l=void 0!==t.cy?t.cy:t.lines[0][1];yn(cn("Unlabeled drawing",t.uuid),c,l,t.page)}hn.includes(t.type)&&mn(t.documentId,t.uuid)}(t,e+1)}))}))}function En(t,e){return t.yt.length)&&(e=t.length);for(var n=0,r=Array(e);n\n \n \n';function Nn(t){if(Math.floor(t)===t)return[t,1];var e=1/t;if(e>8)return[1,8];if(Math.floor(e)===e)return[1,e];for(var n=t>1?e:t,r=0,o=1,i=1,a=1;;){var u=r+i,c=o+a;if(c>8)break;n<=u/c?(i=u,a=c):(r=u,o=c)}return n-r/o0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";Zt=Math.round(100*parseFloat(t))/100,te=e},disablePoint:function(){_e&&(_e=!1,document.removeEventListener("mouseup",Ne))},enablePoint:function(){_e||(_e=!0,document.addEventListener("mouseup",Ne))},disableRect:function(){Xe&&(Xe=!1,document.removeEventListener("mouseup",Qe),document.removeEventListener("mousedown",Ye),document.removeEventListener("keyup",He))},enableRect:function(t){Be=t,Xe||(Xe=!0,document.addEventListener("mouseup",Qe),document.addEventListener("mousedown",Ye),document.addEventListener("keyup",He))},disableCircle:function(){$e&&($e=!1,document.removeEventListener("mouseup",Ge))},enableCircle:function(t){We=t,$e||($e=!0,document.addEventListener("mouseup",Ge))},setCircle:function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";Je=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,10),Ve=t},addCircle:function(t,e){var n=We;We=t,Ge(e),We=n},disableArrow:function(){ve&&(ve=!1,document.removeEventListener("mousedown",me),document.removeEventListener("keyup",be),J())},enableArrow:function(){ve||(ve=!0,document.addEventListener("mousedown",me),document.addEventListener("keyup",be),$())},setArrow:function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0000FF";le=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,10),se=t},disableEraser:function(){document.removeEventListener("pointermove",Le),document.removeEventListener("pointerdown",Ee),document.removeEventListener("pointerup",Ce)},enableEraser:function(){document.addEventListener("pointermove",Le),document.addEventListener("pointerdown",Ee),document.addEventListener("pointerup",Ce)},disableText:function(){Ze&&(Ze=!1,document.removeEventListener("mouseup",nn))},enableText:function(){Ze||(Ze=!0,document.addEventListener("mouseup",nn))},setText:function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"000000";tn=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:12,10),en=t},createPage:function(t){var e=document.createElement("div");e.innerHTML=_n;var n=e.children[0],r=n.querySelector("canvas");return n.setAttribute("id","pageContainer".concat(t)),n.setAttribute("data-page-number",t),r.mozOpaque=!0,r.setAttribute("id","page".concat(t)),n},renderPage:function(t,e){var n=e.documentId,r=e.pdfDocument,o=e.scale,i=e.rotate,a=new pdfjsViewer.EventBus;return Promise.all([r.getPage(t),Pn.getAnnotations(n,t)]).then((function(e){var n=In(e,2),r=n[0],u=n[1],c=document.getElementById("pageContainer".concat(t)),l=c.querySelector(Mt.annotationClassQuery()),s=c.querySelector(".canvasWrapper canvas").getContext("2d",{alpha:!1}),d=(i+r.rotate)%360,f=r.getViewport({scale:o,rotation:d}),p=function(t,e,n){var r=document.getElementById("pageContainer".concat(t)),o=r.querySelector(".canvasWrapper canvas"),i=r.querySelector(Mt.annotationClassQuery()),a=r.querySelector(".canvasWrapper"),u=r.querySelector(Mt.textClassQuery()),c=(f=n,p=window.devicePixelRatio||1,y=f.webkitBackingStorePixelRatio||f.mozBackingStorePixelRatio||f.msBackingStorePixelRatio||f.oBackingStorePixelRatio||f.backingStorePixelRatio||1,v=p/y,{sx:v,sy:v,scaled:1!==v}),l=c.scaled?[c.sx,0,0,c.sy,0,0]:null,s=Nn(c.sx),d=Nn(c.sy);var f,p,y,v;return r.style.visibility="",o.width=On(e.width*c.sx,s[0]),o.height=On(e.height*c.sy,d[0]),o.style.width=On(e.width,s[1])+"px",o.style.height=On(e.height,s[1])+"px",i.setAttribute("width",e.width),i.setAttribute("height",e.height),i.style.width="".concat(e.width,"px"),i.style.height="".concat(e.height,"px"),r.style.width="".concat(e.width,"px"),r.style.height="".concat(e.height,"px"),a.style.width="".concat(e.width,"px"),a.style.height="".concat(e.height,"px"),u.style.width="".concat(e.width,"px"),u.style.height="".concat(e.height,"px"),l}(t,f,s);return Promise.all([r.render({canvasContext:s,viewport:f,transform:p}).promise,Pn.render(l,f,u)]).then((function(){return r.getTextContent({normalizeWhitespace:!0}).then((function(e){return new Promise((function(n,r){var o=c.querySelector(Mt.textClassQuery()),i=(new pdfjsViewer.DefaultTextLayerFactory).createTextLayerBuilder(o,t-1,f,!1,a);i.setTextContent(e),i.render(),setTimeout((function(){try{Sn(u.annotations),n()}catch(t){r(t)}}))}))}))})).then((function(){return c.setAttribute("data-loaded","true"),[r,u]}))}))}},Pn={findAnnotationAtPoint:X,findSVGContainer:z,convertToScreenPoint:D,StoreAdapter:it,LocalStoreAdapter:mt,LocalUserStoreAdapter:_t,__storeAdapter:new it,getStoreAdapter:function(){return this.__storeAdapter},setStoreAdapter:function(t){this.__storeAdapter=t},UI:jn,render:function(t,e,n){return new Promise((function(r,o){return t.setAttribute("data-pdf-annotate-container",!0),t.setAttribute("data-pdf-annotate-viewport",JSON.stringify(e)),t.removeAttribute("data-pdf-annotate-document"),t.removeAttribute("data-pdf-annotate-page"),n?(t.setAttribute("data-pdf-annotate-document",n.documentId),t.setAttribute("data-pdf-annotate-page",n.pageNumber),Array.isArray(n.annotations)&&0!==n.annotations.length?(n.annotations.forEach((function(n){var r=t.querySelector('[data-pdf-annotate-id="'+n.uuid+'"]');r?T(t,r,e):R(t,n,e)})),void r(t)):r(t)):(t.innerHTML="",r(t))}))},getAnnotations:function(t,e){var n;return(n=this.getStoreAdapter()).getAnnotations.apply(n,arguments)},config:Mt,uuid:ct},Mn=Pn;return r})())); //# sourceMappingURL=pdf-annotate.min.js.map \ No newline at end of file diff --git a/dist/pdf-annotate.min.js.map b/dist/pdf-annotate.min.js.map index 429e9f8c..35b7daa0 100644 --- a/dist/pdf-annotate.min.js.map +++ b/dist/pdf-annotate.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://PDFAnnotate/webpack/universalModuleDefinition","webpack://PDFAnnotate/webpack/bootstrap","webpack://PDFAnnotate/./node_modules/events/events.js","webpack://PDFAnnotate/./src/utils/abstractFunction.js","webpack://PDFAnnotate/./src/utils/setAttributes.js","webpack://PDFAnnotate/./src/utils/normalizeColor.js","webpack://PDFAnnotate/./src/render/renderPoint.js","webpack://PDFAnnotate/./src/render/renderRect.js","webpack://PDFAnnotate/./src/render/renderText.js","webpack://PDFAnnotate/./src/render/renderCircle.js","webpack://PDFAnnotate/./src/utils/mathUtils.js","webpack://PDFAnnotate/./src/render/renderArrow.js","webpack://PDFAnnotate/./src/render/appendChild.js","webpack://PDFAnnotate/./src/render/renderLine.js","webpack://PDFAnnotate/./src/render/renderPath.js","webpack://PDFAnnotate/./src/UI/utils.js","webpack://PDFAnnotate/./src/UI/event.js","webpack://PDFAnnotate/./src/adapter/StoreAdapter.js","webpack://PDFAnnotate/./src/utils/uuid.js","webpack://PDFAnnotate/./src/adapter/LocalStoreAdapter.js","webpack://PDFAnnotate/./src/adapter/LocalUserStoreAdapter.js","webpack://PDFAnnotate/./src/config.js","webpack://PDFAnnotate/./src/UI/edit.js","webpack://PDFAnnotate/./src/UI/pen.js","webpack://PDFAnnotate/./src/UI/arrow.js","webpack://PDFAnnotate/./src/UI/eraser.js","webpack://PDFAnnotate/./src/UI/point.js","webpack://PDFAnnotate/./src/UI/rect.js","webpack://PDFAnnotate/./src/UI/circle.js","webpack://PDFAnnotate/./src/UI/text.js","webpack://PDFAnnotate/./src/a11y/createScreenReaderOnly.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinElement.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinChildren.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderComment.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderComments.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderHint.js","webpack://PDFAnnotate/./src/a11y/initEventHandlers.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderHints.js","webpack://PDFAnnotate/./src/UI/page.js","webpack://PDFAnnotate/./src/UI/index.js","webpack://PDFAnnotate/./src/PDFJSAnnotate.js","webpack://PDFAnnotate/./src/render/index.js","webpack://PDFAnnotate/./index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","EventEmitter","init","this","once","emitter","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","events","existing","warning","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","arr","ret","Array","unwrapListeners","arrayClone","listenerCount","copy","addEventListener","wrapListener","arg","removeEventListener","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","keys","rawListeners","eventNames","abstractFunction","UPPER_REGEX","BLACKLIST","setAttributes","node","attributes","forEach","setAttribute","indexOf","replace","match","toLowerCase","keyCase","REGEX_HASHLESS_HEX","normalizeColor","color","test","SIZE","createRect","rect","document","createElementNS","x","y","width","height","renderText","a","text","fill","fontSize","size","transform","rotation","style","textElement","textContent","_step","lines","split","getAttribute","_iterator","_createForOfIteratorHelper","done","line","tspan","toString","innerHTML","appendChild","e","f","insertLineBreaks","content","g","renderCircle","circle","cx","cy","createCircle","stroke","translate","rotate","angle","Math","PI","cosValue","cos","sinValue","sin","scale","makePoint","z","makeVector","xcoord","ycoord","zcoord","makeVectorFromPoints","pt1","pt2","addVector","pt","v","multiplyVector","scalar","magnitude","sqrt","pow","negateVector","unitVector","mag","renderArrow","u","arrow","p1","p2","pt0","unitX","unitZ","unitY","thickness","A","B","C","D","G","F","E","points","isFirefox","navigator","userAgent","getTranslation","viewport","trans","nodeName","parseInt","path","querySelector","svg","parentNode","assign","annotation","child","group","JSON","parse","fillOpacity","rectangles","renderRect","strokeWidth","x1","y1","x2","y2","outerSVG","innerSVG","viewBox","renderPoint","join","renderPath","uuid","filter","transformChild","BORDER_COLOR","userSelectStyleSheet","createElement","findSVGContainer","toUpperCase","findSVGAtPoint","elements","querySelectorAll","el","pointIntersectsRect","getBoundingClientRect","findAnnotationAtPoint","candidate","elementFromPoint","top","bottom","left","right","getOffsetAnnotationRect","extraOffsetWidth","extraOffsetHeight","tagName","getBBox","bbox","_getOffset","offsetLeft","offsetTop","getOffset","scaleUp","result","getMetadata","convertToSvgPoint","xform","offset","convertToScreenPoint","scaleDown","disableUserSelect","head","enableUserSelect","removeChild","documentId","pageNumber","clickNode","fireEvent","clientX","clientY","StoreAdapter","_this","definition","_classCallCheck","__getAnnotations","fn","then","annotations","annotationId","__addAnnotation","__editAnnotation","__deleteAnnotation","success","__addComment","comment","commentId","__deleteComment","REGEXP","replacement","random","LocalStoreAdapter","_StoreAdapter","_inherits","_super","_createSuper","getAnnotations","page","getAnnotation","findAnnotation","addAnnotation","updateAnnotations","editAnnotation","deleteAnnotation","splice","getComments","addComment","class","deleteComment","localStorage","getItem","setItem","stringify","LocalUserStoreAdapter","userId","globalEdit","getAllAnnotations","_userId","_globalEdit","all_annotations","re","RegExp","search","_toConsumableArray","annotationLayerName","textLayerName","annotationSvgQuery","annotationClassQuery","textClassQuery","overlay","dragOffsetX","dragOffsetY","dragStartX","dragStartY","_enabled","isDragging","destroyEditOverlay","handleDocumentClick","handleDocumentKeyup","handleDocumentMousedown","handleDocumentMousemove","handleDocumentMouseup","config","PDFJSAnnotate","getStoreAdapter","getElementById","keyTest","keyCode","preventDefault","background","cursor","display","maxY","maxX","offsetHeight","offsetWidth","attribX","attribY","modelStart","modelEnd","modelDelta","firstChild","modelX","modelY","setTimeout","handleAnnotationClick","anchor","id","styleLeft","styleTop","boxSizing","border","borderRadius","zIndex","padding","textAlign","textDecoration","borderColor","boxShadow","createEditOverlay","_penSize","_penColor","_candraw","handleDocumentPointerdown","handleDocumentPointerup","_getMetadata","saveToStorage","handleDocumentPointermove","point","toFixed","savePoint","originY","originX","_getMetadata2","_canerase","previousPoint","handleDocumentDown","handleDocumentUp","erase","handleDocumentMouseMove","check","diffX","abs","diffY","maxSteps","round","max","subStepSize","min","smallerTest","startPoint","_i","_check","parentElement","input","handleInputBlur","handleInputKeyup","body","focus","closeInput","trim","_type","rects","getSelection","getRangeAt","getClientRects","getSelectionRects","saveRect","map","removeAllRanges","boundingRect","convertToSvgRect","_circleRadius","_circleColor","radius","svg_pt","saveCircle","_textSize","_textColor","srcElement","classList","contains","saveText","shiftKey","createScreenReaderOnly","createTextNode","overflow","insertElementWithinElement","insertBefore","textLayerElementFromPoint","temp","cloneNode","tail","outerHTML","insertElementWithinChildren","nodes","textLayer","insertScreenReaderComment","item","renderScreenReaderComments","comments","isArray","COMMENT_TYPES","reorderAnnotationsByType","removeAnnotation","renderScreenReaderHints","removeElementById","insertComment","removeComment","elementId","SORT_TYPES","sortBy","sort","num","first","last","includes","insertScreenReaderHint","sortByPoint","b","sortByRectPoint","lineA","lineB","PAGE_TEMPLATE","approximateFraction","floor","xinv","x_","q","roundToDivide","div","disableEdit","enableEdit","disablePen","enablePen","setPen","penSize","penColor","parseFloat","disablePoint","enablePoint","disableRect","enableRect","disableCircle","enableCircle","setCircle","circleRadius","circleColor","addCircle","oldType","disableArrow","enableArrow","setArrow","disableEraser","enableEraser","disableText","enableText","setText","textSize","textColor","createPage","children","canvas","mozOpaque","renderPage","renderOptions","pdfDocument","eventBus","pdfjsViewer","EventBus","all","getPage","_ref","_ref2","_slicedToArray","pdfPage","canvasContext","getContext","alpha","totalRotation","getViewport","wrapper","outputScale","ctx","devicePixelRatio","backingStoreRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","pixelRatio","sx","sy","scaled","sfx","sfy","visibility","scalePage","render","promise","getTextContent","normalizeWhitespace","textLayerBuilder","DefaultTextLayerFactory","createTextLayerBuilder","setTextContent","__storeAdapter","setStoreAdapter","adapter","UI","data","removeAttribute","_this$getStoreAdapter"],"mappings":"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","file":"pdf-annotate.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PDFAnnotate\"] = factory();\n\telse\n\t\troot[\"PDFAnnotate\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/**\r\n * Throw an Error for an abstract function that hasn't been implemented.\r\n *\r\n * @param {String} name The name of the abstract function\r\n */\r\nexport default function abstractFunction(name) {\r\n throw new Error(name + ' is not implemented');\r\n}\r\n","const UPPER_REGEX = /[A-Z]/g;\r\n\r\n// Don't convert these attributes from camelCase to hyphenated-attributes\r\nconst BLACKLIST = [\r\n 'viewBox'\r\n];\r\n\r\nlet keyCase = (key) => {\r\n if (BLACKLIST.indexOf(key) === -1) {\r\n key = key.replace(UPPER_REGEX, match => '-' + match.toLowerCase());\r\n }\r\n return key;\r\n};\r\n\r\n/**\r\n * Set attributes for a node from a map\r\n *\r\n * @param {Node} node The node to set attributes on\r\n * @param {Object} attributes The map of key/value pairs to use for attributes\r\n */\r\nexport default function setAttributes(node, attributes) {\r\n Object.keys(attributes).forEach((key) => {\r\n node.setAttribute(keyCase(key), attributes[key]);\r\n });\r\n}\r\n","const REGEX_HASHLESS_HEX = /^([a-f0-9]{6}|[a-f0-9]{3})$/i;\r\n\r\n/**\r\n * Normalize a color value\r\n *\r\n * @param {String} color The color to normalize\r\n * @return {String}\r\n */\r\nexport default function normalizeColor(color) {\r\n if (REGEX_HASHLESS_HEX.test(color)) {\r\n color = `#${color}`;\r\n }\r\n return color;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\n\r\nconst SIZE = 25;\r\nconst D = 'M499.968 214.336q-113.832 0 -212.877 38.781t-157.356 104.625 -58.311 142.29q0 62.496 39.897 119.133t112.437 97.929l48.546 27.9 -15.066 53.568q-13.392 50.778 -39.06 95.976 84.816 -35.154 153.45 -95.418l23.994 -21.204 31.806 3.348q38.502 4.464 72.54 4.464 113.832 0 212.877 -38.781t157.356 -104.625 58.311 -142.29 -58.311 -142.29 -157.356 -104.625 -212.877 -38.781z';\r\n\r\n/**\r\n * Create SVGElement from an annotation definition.\r\n * This is used for anntations of type `comment`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGElement} A svg to be rendered\r\n */\r\nexport default function renderPoint(a) {\r\n let outerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n let innerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n\r\n setAttributes(outerSVG, {\r\n width: SIZE,\r\n height: SIZE,\r\n x: a.x,\r\n y: a.y\r\n });\r\n\r\n setAttributes(innerSVG, {\r\n width: SIZE,\r\n height: SIZE,\r\n x: 0,\r\n y: (SIZE * 0.05) * -1,\r\n viewBox: '0 0 1000 1000'\r\n });\r\n\r\n setAttributes(rect, {\r\n width: SIZE,\r\n height: SIZE,\r\n stroke: '#000',\r\n fill: '#ff0'\r\n });\r\n\r\n setAttributes(path, {\r\n d: D,\r\n strokeWidth: 50,\r\n stroke: '#000',\r\n fill: '#fff'\r\n });\r\n\r\n innerSVG.appendChild(path);\r\n outerSVG.appendChild(rect);\r\n outerSVG.appendChild(innerSVG);\r\n\r\n return outerSVG;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create SVGRectElements from an annotation definition.\r\n * This is used for anntations of type `area` and `highlight`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGGElement|SVGRectElement} A group of all rects to be rendered\r\n */\r\nexport default function renderRect(a) {\r\n if (a.type === 'highlight') {\r\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\r\n setAttributes(group, {\r\n fill: normalizeColor(a.color || '#ff0'),\r\n fillOpacity: 0.2\r\n });\r\n\r\n a.rectangles.forEach((r) => {\r\n group.appendChild(createRect(r));\r\n });\r\n\r\n return group;\r\n }\r\n else {\r\n let rect = createRect(a);\r\n setAttributes(rect, {\r\n stroke: normalizeColor(a.color || '#f00'),\r\n fill: 'none'\r\n });\r\n\r\n return rect;\r\n }\r\n}\r\n\r\nfunction createRect(r) {\r\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n\r\n setAttributes(rect, {\r\n x: r.x,\r\n y: r.y,\r\n width: r.width,\r\n height: r.height\r\n });\r\n\r\n return rect;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Wrap each line of given text in a `` element and append these\r\n * lines to the given SVGTextElement\r\n *\r\n * @param {SVGTextElement} textElement A text element to hold the split text\r\n * @param {String} textContent String to render with line breaks\r\n */\r\nfunction insertLineBreaks(textElement, textContent) {\r\n const lines = (textContent || '').split('\\n');\r\n // can't use dy attribute here since we want empty lines to take up space as well,\r\n // so we will update y manually based on font size\r\n const x = textElement.getAttribute('x');\r\n let y = Number(textElement.getAttribute('y'));\r\n const size = Number(textElement.getAttribute('font-size'));\r\n for (const line of lines) {\r\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\r\n tspan.setAttribute('y', y.toString());\r\n tspan.setAttribute('x', x);\r\n tspan.innerHTML = line;\r\n textElement.appendChild(tspan);\r\n\r\n y += size;\r\n }\r\n}\r\n\r\n/**\r\n * Create SVGTextElement from an annotation definition.\r\n * This is used for anntations of type `textbox`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGTextElement} A text to be rendered\r\n */\r\nexport default function renderText(a) {\r\n // Text should be rendered at 0 degrees relative to\r\n // document rotation\r\n let text = document.createElementNS('http://www.w3.org/2000/svg', 'text');\r\n setAttributes(text, {\r\n x: a.x,\r\n y: a.y,\r\n fill: normalizeColor(a.color || '#000'),\r\n fontSize: a.size,\r\n transform: `rotate(${a.rotation})`,\r\n style: 'white-space: pre'\r\n });\r\n\r\n insertLineBreaks(text, a.content);\r\n\r\n let g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\r\n g.appendChild(text);\r\n\r\n return g;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create an SVGCircleElement from an annotation definition.\r\n * This is used for annotations of type `circle`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGGElement|SVGCircleElement} A circle to be rendered\r\n */\r\nexport default function renderCircle(a) {\r\n let circle = createCircle(a);\r\n let color = normalizeColor(a.color || '#f00');\r\n\r\n if (a.type === 'circle') {\r\n setAttributes(circle, {\r\n stroke: color,\r\n fill: 'none',\r\n 'stroke-width': 5\r\n });\r\n }\r\n if (a.type === 'emptycircle') {\r\n setAttributes(circle, {\r\n stroke: color,\r\n fill: 'none',\r\n 'stroke-width': 2\r\n });\r\n }\r\n\r\n if (a.type === 'fillcircle') {\r\n setAttributes(circle, {\r\n stroke: color,\r\n fill: color,\r\n 'stroke-width': 5\r\n });\r\n }\r\n\r\n return circle;\r\n}\r\n\r\nfunction createCircle(a) {\r\n let circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\r\n setAttributes(circle, {\r\n cx: a.cx,\r\n cy: a.cy,\r\n r: a.r\r\n });\r\n\r\n return circle;\r\n}\r\n","// Transform point by matrix\r\n//\r\nexport function applyTransform(p, m) {\r\n return [\r\n p[0] * m[0] + p[1] * m[2] + m[4],\r\n p[0] * m[1] + p[1] * m[3] + m[5]\r\n ];\r\n};\r\n\r\n// Transform point by matrix inverse\r\n//\r\nexport function applyInverseTransform(p, m) {\r\n let d = m[0] * m[3] - m[1] * m[2];\r\n return [\r\n (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d,\r\n (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d\r\n ];\r\n};\r\n\r\n// Concatenates two transformation matrices together and returns the result.\r\nexport function transform(m1, m2) {\r\n return [\r\n m1[0] * m2[0] + m1[2] * m2[1],\r\n m1[1] * m2[0] + m1[3] * m2[1],\r\n m1[0] * m2[2] + m1[2] * m2[3],\r\n m1[1] * m2[2] + m1[3] * m2[3],\r\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\r\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\r\n ];\r\n};\r\n\r\nexport function translate(m, x, y) {\r\n return [\r\n m[0],\r\n m[1],\r\n m[2],\r\n m[3],\r\n m[0] * x + m[2] * y + m[4],\r\n m[1] * x + m[3] * y + m[5]\r\n ];\r\n};\r\n\r\nexport function rotate(m, angle) {\r\n angle = angle * Math.PI / 180;\r\n\r\n let cosValue = Math.cos(angle);\r\n let sinValue = Math.sin(angle);\r\n\r\n return [\r\n m[0] * cosValue + m[2] * sinValue,\r\n m[1] * cosValue + m[3] * sinValue,\r\n m[0] * (-sinValue) + m[2] * cosValue,\r\n m[1] * (-sinValue) + m[3] * cosValue,\r\n m[4],\r\n m[5]\r\n ];\r\n};\r\n\r\nexport function scale(m, x, y) {\r\n return [\r\n m[0] * x,\r\n m[1] * x,\r\n m[2] * y,\r\n m[3] * y,\r\n m[4],\r\n m[5]\r\n ];\r\n};\r\n\r\nexport function makePoint(x, y, z) {\r\n return { x: x, y: y, z: z };\r\n};\r\n\r\nexport function makeVector(xcoord, ycoord, zcoord) {\r\n return { xcoord: xcoord, ycoord: ycoord, zcoord: zcoord };\r\n};\r\n\r\nexport function makeVectorFromPoints(pt1, pt2) {\r\n let xcoord = pt2.x - pt1.x;\r\n let ycoord = pt2.y - pt1.y;\r\n let zcoord = pt2.z - pt1.z;\r\n return makeVector(xcoord, ycoord, zcoord);\r\n};\r\n\r\nexport function addVector(pt, v) {\r\n return makePoint(pt.x + v.xcoord, pt.y + v.ycoord, pt.z + v.zcoord);\r\n};\r\n\r\nexport function multiplyVector(v, scalar) {\r\n return makeVector(v.xcoord * scalar, v.ycoord * scalar, v.zcoord * scalar);\r\n};\r\n\r\nexport function magnitude(v) {\r\n return Math.sqrt(\r\n Math.pow(v.xcoord, 2) + Math.pow(v.ycoord, 2) + Math.pow(v.zcoord, 2)\r\n );\r\n};\r\n\r\nexport function negateVector(v) {\r\n return multiplyVector(v, -1);\r\n};\r\n\r\nexport function unitVector(v) {\r\n let mag = magnitude(v);\r\n let xcoord = v.xcoord / mag;\r\n let ycoord = v.ycoord / mag;\r\n let zcoord = v.zcoord / mag;\r\n return makeVector(xcoord, ycoord, zcoord);\r\n};\r\n\r\nexport function crossProduct(u, v) {\r\n //\r\n // u X v = < u2*v3 - u3*v2,\r\n // u3*v1 - u1*v3,\r\n // u1*v2 - u2*v1 >\r\n let xcoord = u.ycoord * v.zcoord - u.zcoord * v.ycoord;\r\n let ycoord = u.zcoord * v.xcoord - u.xcoord * v.zcoord;\r\n let zcoord = u.xcoord * v.ycoord - u.ycoord * v.xcoord;\r\n return makeVector(xcoord, ycoord, zcoord);\r\n};\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\nimport {\r\n makePoint, makeVector, makeVectorFromPoints,\r\n magnitude, unitVector, crossProduct,\r\n addVector, multiplyVector, negateVector\r\n} from '../utils/mathUtils';\r\n\r\n/**\r\n * Create SVGPathElement from an annotation definition.\r\n * This is used for anntations of type `drawing`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGPathElement} The path to be rendered\r\n */\r\nexport default function renderArrow(a) {\r\n let arrow = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\r\n\r\n if (a.lines.length === 2) {\r\n let p1 = a.lines[0];\r\n let p2 = a.lines[a.lines.length - 1];\r\n\r\n let arrowLength = 40;\r\n let pt0 = makePoint(p1[0], p1[1], 0);\r\n let pt1 = makePoint(p2[0], p2[1], 0);\r\n let x = makeVectorFromPoints(pt0, pt1);\r\n let unitX = unitVector(x);\r\n pt1 = addVector(pt0, multiplyVector(unitX, arrowLength));\r\n x = makeVectorFromPoints(pt0, pt1);\r\n let unitZ = makeVector(0, 0, 1);\r\n let unitY = unitVector(crossProduct(unitX, unitZ));\r\n let thickness = a.width || 10;\r\n\r\n let A = addVector(pt0, multiplyVector(unitY, thickness * 0.5));\r\n let B = addVector(A, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\r\n let C = addVector(B, multiplyVector(unitY, thickness));\r\n let D = pt1;\r\n let G = addVector(pt0, multiplyVector(negateVector(unitY), thickness * 0.5));\r\n let F = addVector(G, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\r\n let E = addVector(F, multiplyVector(negateVector(unitY), thickness));\r\n\r\n let points = '' +\r\n A.x + ',' + A.y + ' ' +\r\n B.x + ',' + B.y + ' ' +\r\n C.x + ',' + C.y + ' ' +\r\n D.x + ',' + D.y + ' ' +\r\n E.x + ',' + E.y + ' ' +\r\n F.x + ',' + F.y + ' ' +\r\n G.x + ',' + G.y;\r\n\r\n setAttributes(arrow, {\r\n points: points,\r\n stroke: normalizeColor(a.color || '#000'),\r\n fill: normalizeColor(a.color || '#000')\r\n });\r\n }\r\n\r\n return arrow;\r\n}\r\n","import renderLine from './renderLine';\r\nimport renderPath from './renderPath';\r\nimport renderPoint from './renderPoint';\r\nimport renderRect from './renderRect';\r\nimport renderText from './renderText';\r\nimport renderCircle from './renderCircle';\r\nimport renderArrow from './renderArrow';\r\n\r\nconst isFirefox = /firefox/i.test(navigator.userAgent);\r\n\r\n/**\r\n * Get the x/y translation to be used for transforming the annotations\r\n * based on the rotation of the viewport.\r\n *\r\n * @param {Object} viewport The viewport data from the page\r\n * @return {Object}\r\n */\r\nexport function getTranslation(viewport) {\r\n let x;\r\n let y;\r\n\r\n // Modulus 360 on the rotation so that we only\r\n // have to worry about four possible values.\r\n switch (viewport.rotation % 360) {\r\n case 0:\r\n x = y = 0;\r\n break;\r\n case 90:\r\n x = 0;\r\n y = (viewport.width / viewport.scale) * -1;\r\n break;\r\n case 180:\r\n x = (viewport.width / viewport.scale) * -1;\r\n y = (viewport.height / viewport.scale) * -1;\r\n break;\r\n case 270:\r\n x = (viewport.height / viewport.scale) * -1;\r\n y = 0;\r\n break;\r\n }\r\n\r\n return { x, y };\r\n}\r\n\r\n/**\r\n * Transform the rotation and scale of a node using SVG's native transform attribute.\r\n *\r\n * @param {Node} node The node to be transformed\r\n * @param {Object} viewport The page's viewport data\r\n * @return {Node}\r\n */\r\nfunction transform(node, viewport) {\r\n let trans = getTranslation(viewport);\r\n\r\n // Let SVG natively transform the element\r\n node.setAttribute('transform', `scale(${viewport.scale}) rotate(${viewport.rotation}) translate(${trans.x}, ${trans.y})`);\r\n\r\n // Manually adjust x/y for nested SVG nodes\r\n if (!isFirefox && node.nodeName.toLowerCase() === 'svg') {\r\n node.setAttribute('x', parseInt(node.getAttribute('x'), 10) * viewport.scale);\r\n node.setAttribute('y', parseInt(node.getAttribute('y'), 10) * viewport.scale);\r\n\r\n let x = parseInt(node.getAttribute('x', 10));\r\n let y = parseInt(node.getAttribute('y', 10));\r\n let width = parseInt(node.getAttribute('width'), 10);\r\n let height = parseInt(node.getAttribute('height'), 10);\r\n let path = node.querySelector('path');\r\n let svg = path.parentNode;\r\n\r\n // Scale width/height\r\n [node, svg, path, node.querySelector('rect')].forEach((n) => {\r\n n.setAttribute('width', parseInt(n.getAttribute('width'), 10) * viewport.scale);\r\n n.setAttribute('height', parseInt(n.getAttribute('height'), 10) * viewport.scale);\r\n });\r\n\r\n // Transform path but keep scale at 100% since it will be handled natively\r\n transform(path, Object.assign({}, viewport, { scale: 1 }));\r\n\r\n switch (viewport.rotation % 360) {\r\n case 90:\r\n node.setAttribute('x', viewport.width - y - width);\r\n node.setAttribute('y', x);\r\n svg.setAttribute('x', 1);\r\n svg.setAttribute('y', 0);\r\n break;\r\n case 180:\r\n node.setAttribute('x', viewport.width - x - width);\r\n node.setAttribute('y', viewport.height - y - height);\r\n svg.setAttribute('y', 2);\r\n break;\r\n case 270:\r\n node.setAttribute('x', y);\r\n node.setAttribute('y', viewport.height - x - height);\r\n svg.setAttribute('x', -1);\r\n svg.setAttribute('y', 0);\r\n break;\r\n }\r\n }\r\n\r\n return node;\r\n}\r\n\r\n/**\r\n * Append an annotation as a child of an SVG.\r\n *\r\n * @param {SVGElement} svg The SVG element to append the annotation to\r\n * @param {Object} annotation The annotation definition to render and append\r\n * @param {Object} viewport The page's viewport data\r\n * @return {SVGElement} A node that was created and appended by this function\r\n */\r\nexport function appendChild(svg, annotation, viewport) {\r\n if (!viewport) {\r\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\r\n }\r\n\r\n let child;\r\n switch (annotation.type) {\r\n case 'area':\r\n case 'highlight':\r\n child = renderRect(annotation);\r\n break;\r\n case 'circle':\r\n case 'fillcircle':\r\n case 'emptycircle':\r\n child = renderCircle(annotation);\r\n break;\r\n case 'strikeout':\r\n child = renderLine(annotation);\r\n break;\r\n case 'point':\r\n child = renderPoint(annotation);\r\n break;\r\n case 'textbox':\r\n child = renderText(annotation);\r\n break;\r\n case 'drawing':\r\n child = renderPath(annotation);\r\n break;\r\n case 'arrow':\r\n child = renderArrow(annotation);\r\n break;\r\n }\r\n\r\n // If no type was provided for an annotation it will result in node being null.\r\n // Skip appending/transforming if node doesn't exist.\r\n if (child) {\r\n // Set attributes\r\n child.setAttribute('data-pdf-annotate-id', annotation.uuid);\r\n child.setAttribute('aria-hidden', true);\r\n\r\n // Dynamically set any other attributes associated with annotation that is not related to drawing it\r\n Object.keys(annotation).filter((key) => {\r\n return ['color', 'x', 'y', 'cx', 'cy', 'color', 'documentId', 'lines', 'page',\r\n 'width', 'class', 'content', 'size', 'rotation', 'r'].indexOf(key) === -1;\r\n }).forEach((key) => {\r\n child.setAttribute(`data-pdf-annotate-${key}`, annotation[key]);\r\n });\r\n\r\n svg.appendChild(transform(child, viewport));\r\n }\r\n\r\n return child;\r\n}\r\n\r\n/**\r\n * Transform a child annotation of an SVG.\r\n *\r\n * @param {SVGElement} svg The SVG element with the child annotation\r\n * @param {Object} child The SVG child to transform\r\n * @param {Object} viewport The page's viewport data\r\n * @return {SVGElement} A node that was transformed by this function\r\n */\r\nexport function transformChild(svg, child, viewport) {\r\n if (!viewport) {\r\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\r\n }\r\n\r\n // If no type was provided for an annotation it will result in node being null.\r\n // Skip transforming if node doesn't exist.\r\n if (child) {\r\n child = transform(child, viewport);\r\n }\r\n\r\n return child;\r\n}\r\n\r\nexport default {\r\n /**\r\n * Get the x/y translation to be used for transforming the annotations\r\n * based on the rotation of the viewport.\r\n */\r\n getTranslation,\r\n\r\n /**\r\n * Append an SVG child for an annotation\r\n */\r\n appendChild,\r\n\r\n /**\r\n * Transform an existing SVG child\r\n */\r\n transformChild\r\n};\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create SVGLineElements from an annotation definition.\r\n * This is used for anntations of type `strikeout`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGGElement} A group of all lines to be rendered\r\n */\r\nexport default function renderLine(a) {\r\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\r\n setAttributes(group, {\r\n stroke: normalizeColor(a.color || '#f00'),\r\n strokeWidth: 1\r\n });\r\n\r\n a.rectangles.forEach((r) => {\r\n let line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\r\n\r\n setAttributes(line, {\r\n x1: r.x,\r\n y1: r.y,\r\n x2: r.x + r.width,\r\n y2: r.y\r\n });\r\n\r\n group.appendChild(line);\r\n });\r\n\r\n return group;\r\n}\r\n","import setAttributes from '../utils/setAttributes';\r\nimport normalizeColor from '../utils/normalizeColor';\r\n\r\n/**\r\n * Create SVGPathElement from an annotation definition.\r\n * This is used for anntations of type `drawing`.\r\n *\r\n * @param {Object} a The annotation definition\r\n * @return {SVGPathElement} The path to be rendered\r\n */\r\nexport default function renderPath(a) {\r\n let d = [];\r\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n\r\n if (a.lines.length > 0) {\r\n d.push(`M${a.lines[0][0]} ${a.lines[0][1]}`);\r\n for (let i = 1, l = a.lines.length; i < l; i++) {\r\n let p1 = a.lines[i];\r\n let p2 = a.lines[i + 1];\r\n if (p2) {\r\n d.push(`L${p1[0]} ${p1[1]}`);\r\n }\r\n }\r\n }\r\n\r\n /*\r\n\r\n if(a.lines.length>2) {\r\n var p1 = a.lines[0];\r\n var p2 = a.lines[a.lines.length-1];\r\n\r\n var p3 = []; //arrow\r\n var p4 = [];\r\n var p0 = []; //arrow intersection\r\n\r\n if (p2) {\r\n var k = -(p2[0]-p1[0])/(p2[1]-p1[1]);\r\n\r\n var deltaX = 3;\r\n p0[0] = p1[0]+0.8*(p2[0]-p1[0]);\r\n p0[1] = p1[1]+0.8*(p2[1]-p1[1]);\r\n\r\n p3[0] = p0[0] + deltaX;\r\n p3[1] = p0[1] + k*deltaX;\r\n\r\n p4[0] = p0[0] - deltaX;\r\n p4[1] = p0[1] - k*deltaX;\r\n\r\n if(Math.abs(p2[1]-p1[1]) < 20) {\r\n\r\n p3[0] = p0[0] ;\r\n p3[1] = p0[1] + deltaX*1;\r\n\r\n p4[0] = p0[0] ;\r\n p4[1] = p0[1] - deltaX*1;\r\n\r\n }\r\n\r\n d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\r\n //d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\r\n d.push(`M${p2[0]} ${p2[1]} ${p3[0]} ${p3[1]}`);\r\n d.push(`M${p3[0]} ${p3[1]} ${p4[0]} ${p4[1]}`);\r\n d.push(`M${p4[0]} ${p4[1]} ${p2[0]} ${p2[1]}`);\r\n }\r\n } */\r\n\r\n setAttributes(path, {\r\n d: `${d.join(' ')}`, // `${d.join(' ')}Z`,\r\n stroke: normalizeColor(a.color || '#000'),\r\n strokeWidth: a.width || 1,\r\n fill: 'none'\r\n });\r\n\r\n return path;\r\n}\r\n","import { getTranslation } from '../render/appendChild';\r\nimport {\r\n applyTransform,\r\n applyInverseTransform,\r\n translate,\r\n rotate,\r\n scale\r\n} from '../utils/mathUtils';\r\n\r\nexport const BORDER_COLOR = '#00BFFF';\r\n\r\nconst userSelectStyleSheet = document.createElement('style');\r\nuserSelectStyleSheet.innerHTML = `\r\nbody {\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n`;\r\n\r\nuserSelectStyleSheet.setAttribute('data-pdf-annotate-user-select', 'true');\r\n\r\n/**\r\n * Find the SVGElement that contains all the annotations for a page\r\n *\r\n * @param {Element} node An annotation within that container\r\n * @return {SVGElement} The container SVG or null if it can't be found\r\n */\r\nexport function findSVGContainer(node) {\r\n let parentNode = node;\r\n\r\n while ((parentNode = parentNode.parentNode) &&\r\n parentNode !== document) {\r\n if (parentNode.nodeName.toUpperCase() === 'SVG' &&\r\n parentNode.getAttribute('data-pdf-annotate-container') === 'true') {\r\n return parentNode;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Find an SVGElement container at a given point\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @return {SVGElement} The container SVG or null if one can't be found\r\n */\r\nexport function findSVGAtPoint(x, y) {\r\n let elements = document.querySelectorAll('svg[data-pdf-annotate-container=\"true\"]');\r\n\r\n for (let i = 0, l = elements.length; i < l; i++) {\r\n let el = elements[i];\r\n let rect = el.getBoundingClientRect();\r\n\r\n if (pointIntersectsRect(x, y, rect)) {\r\n return el;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Find an Element that represents an annotation at a given point.\r\n *\r\n * IMPORTANT: Requires the annotation layer to be the top most element so\r\n * either use z-ordering or make it the leaf container.\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @return {Element} The annotation element or null if one can't be found\r\n */\r\nexport function findAnnotationAtPoint(x, y) {\r\n let el = null;\r\n let candidate = document.elementFromPoint(x, y);\r\n while (!el && candidate && candidate !== document) {\r\n let type = candidate.getAttribute('data-pdf-annotate-type');\r\n if (type) {\r\n el = candidate;\r\n }\r\n candidate = candidate.parentNode;\r\n }\r\n return el;\r\n}\r\n\r\n/**\r\n * Determine if a point intersects a rect\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Object} rect The points of a rect (likely from getBoundingClientRect)\r\n * @return {Boolean} True if a collision occurs, otherwise false\r\n */\r\nexport function pointIntersectsRect(x, y, rect) {\r\n return y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\r\n}\r\n\r\n/**\r\n * Get the rect of an annotation element accounting for offset.\r\n *\r\n * @param {Element} el The element to get the rect of\r\n * @return {Object} The dimensions of the element\r\n */\r\nexport function getOffsetAnnotationRect(el) {\r\n let rect = el.getBoundingClientRect();\r\n let { width, height } = rect;\r\n let extraOffsetWidth = 0;\r\n let extraOffsetHeight = 0;\r\n if (['line', 'path'].indexOf(el.tagName.toLowerCase()) > -1 && el.getBBox) {\r\n let bbox = el.getBBox();\r\n extraOffsetWidth = (rect.width - bbox.width) / 2;\r\n extraOffsetHeight = (rect.height - bbox.height) / 2;\r\n width = bbox.width;\r\n height = bbox.height;\r\n }\r\n let { offsetLeft, offsetTop } = getOffset(el);\r\n return {\r\n top: rect.top - offsetTop + extraOffsetHeight,\r\n left: rect.left - offsetLeft + extraOffsetWidth,\r\n bottom: rect.bottom - offsetTop - extraOffsetHeight,\r\n right: rect.right - offsetLeft - extraOffsetWidth,\r\n width: width,\r\n height: height\r\n };\r\n}\r\n\r\n/**\r\n * Adjust scale from normalized scale (100%) to rendered scale.\r\n *\r\n * @param {SVGElement} svg The SVG to gather metadata from\r\n * @param {Object} rect A map of numeric values to scale\r\n * @return {Object} A copy of `rect` with values scaled up\r\n */\r\nexport function scaleUp(svg, rect) {\r\n let result = {};\r\n let { viewport } = getMetadata(svg);\r\n\r\n Object.keys(rect).forEach((key) => {\r\n result[key] = rect[key] * viewport.scale;\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport function convertToSvgRect(rect, svg, viewport) {\r\n let pt1 = [rect.x, rect.y];\r\n let pt2 = [rect.x + rect.width, rect.y + rect.height];\r\n\r\n pt1 = convertToSvgPoint(pt1, svg, viewport);\r\n pt2 = convertToSvgPoint(pt2, svg, viewport);\r\n\r\n return {\r\n x: Math.min(pt1[0], pt2[0]),\r\n y: Math.min(pt1[1], pt2[1]),\r\n width: Math.abs(pt2[0] - pt1[0]),\r\n height: Math.abs(pt2[1] - pt1[1])\r\n };\r\n}\r\n\r\nexport function convertToSvgPoint(pt, svg, viewport) {\r\n viewport = viewport || getMetadata(svg).viewport;\r\n\r\n let xform = [ 1, 0, 0, 1, 0, 0 ];\r\n xform = scale(xform, viewport.scale, viewport.scale);\r\n xform = rotate(xform, viewport.rotation);\r\n\r\n let offset = getTranslation(viewport);\r\n xform = translate(xform, offset.x, offset.y);\r\n\r\n return applyInverseTransform(pt, xform);\r\n}\r\n\r\nexport function convertToScreenPoint(pt, svg, viewport) {\r\n viewport = viewport || getMetadata(svg).viewport;\r\n\r\n let xform = [ 1, 0, 0, 1, 0, 0 ];\r\n xform = scale(xform, viewport.scale, viewport.scale);\r\n xform = rotate(xform, viewport.rotation);\r\n\r\n let offset = getTranslation(viewport);\r\n xform = translate(xform, offset.x, offset.y);\r\n\r\n return applyTransform(pt, xform);\r\n}\r\n\r\n/**\r\n * Adjust scale from rendered scale to a normalized scale (100%).\r\n *\r\n * @param {SVGElement} svg The SVG to gather metadata from\r\n * @param {Object} rect A map of numeric values to scale\r\n * @return {Object} A copy of `rect` with values scaled down\r\n */\r\nexport function scaleDown(svg, rect) {\r\n let result = {};\r\n let { viewport } = getMetadata(svg);\r\n\r\n Object.keys(rect).forEach((key) => {\r\n result[key] = rect[key] / viewport.scale;\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Get the scroll position of an element, accounting for parent elements\r\n *\r\n * @param {Element} el The element to get the scroll position for\r\n * @return {Object} The scrollTop and scrollLeft position\r\n */\r\nexport function getScroll(el) {\r\n let scrollTop = 0;\r\n let scrollLeft = 0;\r\n let parentNode = el;\r\n\r\n while ((parentNode = parentNode.parentNode) &&\r\n parentNode !== document) {\r\n scrollTop += parentNode.scrollTop;\r\n scrollLeft += parentNode.scrollLeft;\r\n }\r\n\r\n return { scrollTop, scrollLeft };\r\n}\r\n\r\n/**\r\n * Get the offset position of an element, accounting for parent elements\r\n *\r\n * @param {Element} el The element to get the offset position for\r\n * @return {Object} The offsetTop and offsetLeft position\r\n */\r\nexport function getOffset(el) {\r\n let parentNode = el;\r\n\r\n while ((parentNode = parentNode.parentNode) &&\r\n parentNode !== document) {\r\n if (parentNode.nodeName.toUpperCase() === 'SVG') {\r\n break;\r\n }\r\n }\r\n\r\n let rect = parentNode.getBoundingClientRect();\r\n\r\n return { offsetLeft: rect.left, offsetTop: rect.top };\r\n}\r\n\r\n/**\r\n * Disable user ability to select text on page\r\n */\r\nexport function disableUserSelect() {\r\n if (!userSelectStyleSheet.parentNode) {\r\n document.head.appendChild(userSelectStyleSheet);\r\n }\r\n}\r\n\r\n/**\r\n * Enable user ability to select text on page\r\n */\r\nexport function enableUserSelect() {\r\n if (userSelectStyleSheet.parentNode) {\r\n userSelectStyleSheet.parentNode.removeChild(userSelectStyleSheet);\r\n }\r\n}\r\n\r\n/**\r\n * Get the metadata for a SVG container\r\n *\r\n * @param {SVGElement} svg The SVG container to get metadata for\r\n */\r\nexport function getMetadata(svg) {\r\n return {\r\n documentId: svg.getAttribute('data-pdf-annotate-document'),\r\n pageNumber: parseInt(svg.getAttribute('data-pdf-annotate-page'), 10),\r\n viewport: JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'))\r\n };\r\n}\r\n","import EventEmitter from 'events';\r\nimport {\r\n findAnnotationAtPoint,\r\n findSVGAtPoint\r\n} from './utils';\r\n\r\nconst emitter = new EventEmitter();\r\n\r\nlet clickNode;\r\n\r\n/**\r\n * Handle document.click event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\ndocument.addEventListener('click', function handleDocumentClick(e) {\r\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n\r\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\r\n\r\n // Emit annotation:blur if clickNode is no longer clicked\r\n if (clickNode && clickNode !== target) {\r\n emitter.emit('annotation:blur', clickNode);\r\n }\r\n\r\n // Emit annotation:click if target was clicked\r\n if (target) {\r\n emitter.emit('annotation:click', target);\r\n }\r\n\r\n clickNode = target;\r\n});\r\n\r\n// let mouseOverNode;\r\n// document.addEventListener('mousemove', function handleDocumentMousemove(e) {\r\n// let target = findAnnotationAtPoint(e.clientX, e.clientY);\r\n//\r\n// // Emit annotation:mouseout if target was mouseout'd\r\n// if (mouseOverNode && !target) {\r\n// emitter.emit('annotation:mouseout', mouseOverNode);\r\n// }\r\n//\r\n// // Emit annotation:mouseover if target was mouseover'd\r\n// if (target && mouseOverNode !== target) {\r\n// emitter.emit('annotation:mouseover', target);\r\n// }\r\n//\r\n// mouseOverNode = target;\r\n// });\r\n\r\nexport function fireEvent() { emitter.emit(...arguments); };\r\nexport function addEventListener() { emitter.on(...arguments); };\r\nexport function removeEventListener() { emitter.removeListener(...arguments); };\r\n","// Disable JSDoc as it cannot really deal with the odd way that the functions are defined\r\n/* eslint valid-jsdoc: 0 */\r\n\r\nimport abstractFunction from '../utils/abstractFunction';\r\nimport { fireEvent } from '../UI/event';\r\n\r\n// Adapter should never be invoked publicly\r\nexport default class StoreAdapter {\r\n /**\r\n * Create a new StoreAdapter instance\r\n *\r\n * @param {Object} [definition] The definition to use for overriding abstract methods\r\n */\r\n constructor(definition = {}) {\r\n // Copy each function from definition if it is a function we know about\r\n Object.keys(definition).forEach((key) => {\r\n if (typeof definition[key] === 'function' &&\r\n typeof this[key] === 'function') {\r\n this[key] = definition[key];\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get all the annotations for a given document and page number.\r\n *\r\n * @param {String} documentId The ID for the document the annotations belong to\r\n * @param {Number} pageNumber The number of the page the annotations belong to\r\n * @return {Promise} Promise that returns with list of annotations for document and page\r\n */\r\n __getAnnotations(documentId, pageNumber) { abstractFunction('getAnnotations'); }\r\n get getAnnotations() { return this.__getAnnotations; }\r\n set getAnnotations(fn) {\r\n this.__getAnnotations = function getAnnotations(documentId, pageNumber) {\r\n return fn(...arguments).then((annotations) => {\r\n // TODO may be best to have this happen on the server\r\n if (annotations.annotations) {\r\n annotations.annotations.forEach((a) => {\r\n a.documentId = documentId;\r\n });\r\n }\r\n return annotations;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Get the definition for a specific annotation.\r\n *\r\n * @param {String} documentId The ID for the document the annotation belongs to\r\n * @param {String} annotationId The ID for the annotation\r\n * @return {Promise} Promise that returns the requested annotation\r\n */\r\n getAnnotation(documentId, annotationId) { abstractFunction('getAnnotation'); }\r\n\r\n /**\r\n * Add an annotation\r\n *\r\n * @param {String} documentId The ID for the document to add the annotation to\r\n * @param {String} pageNumber The page number to add the annotation to\r\n * @param {Object} annotation The definition for the new annotation\r\n * @return {Promise} Promise that returns with the added annotation\r\n */\r\n __addAnnotation(documentId, pageNumber, annotation) { abstractFunction('addAnnotation'); }\r\n get addAnnotation() { return this.__addAnnotation; }\r\n set addAnnotation(fn) {\r\n this.__addAnnotation = function addAnnotation(documentId, pageNumber, annotation) {\r\n return fn(...arguments).then((annotation) => {\r\n fireEvent('annotation:add', documentId, pageNumber, annotation);\r\n return annotation;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Edit an annotation\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} pageNumber the page number of the annotation\r\n * @param {Object} annotation The definition of the modified annotation\r\n * @return {Promise} Promise that returns with the edited annotation\r\n */\r\n __editAnnotation(documentId, pageNumber, annotation) { abstractFunction('editAnnotation'); }\r\n get editAnnotation() { return this.__editAnnotation; }\r\n set editAnnotation(fn) {\r\n this.__editAnnotation = function editAnnotation(documentId, annotationId, annotation) {\r\n return fn(...arguments).then((annotation) => {\r\n fireEvent('annotation:edit', documentId, annotationId, annotation);\r\n return annotation;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Delete an annotation\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} annotationId The ID for the annotation\r\n * @return {Promise} Promise that returns with boolean if annotation was deleted\r\n */\r\n __deleteAnnotation(documentId, annotationId) { abstractFunction('deleteAnnotation'); }\r\n get deleteAnnotation() { return this.__deleteAnnotation; }\r\n set deleteAnnotation(fn) {\r\n this.__deleteAnnotation = function deleteAnnotation(documentId, annotationId) {\r\n return fn(...arguments).then((success) => {\r\n if (success) {\r\n fireEvent('annotation:delete', documentId, annotationId);\r\n }\r\n return success;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Get all the comments for an annotation\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} annotationId The ID for the annotation\r\n * @return {Promise} Promise that returns with comments for annotation\r\n */\r\n getComments(documentId, annotationId) { abstractFunction('getComments'); }\r\n\r\n /**\r\n * Add a new comment\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} annotationId The ID for the annotation\r\n * @param {Object} content The definition of the comment\r\n * @return {Promise} Promise that returns with the added comment\r\n */\r\n __addComment(documentId, annotationId, content) { abstractFunction('addComment'); }\r\n get addComment() { return this.__addComment; }\r\n set addComment(fn) {\r\n this.__addComment = function addComment(documentId, annotationId, content) {\r\n return fn(...arguments).then((comment) => {\r\n fireEvent('comment:add', documentId, annotationId, comment);\r\n return comment;\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Delete a comment\r\n *\r\n * @param {String} documentId The ID for the document\r\n * @param {String} commentId The ID for the comment\r\n * @return {Promise} Promise that returns with boolean if comment was deleted\r\n */\r\n __deleteComment(documentId, commentId) { abstractFunction('deleteComment'); }\r\n get deleteComment() { return this.__deleteComment; }\r\n set deleteComment(fn) {\r\n this.__deleteComment = function deleteComment(documentId, commentId) {\r\n return fn(...arguments).then((success) => {\r\n if (success) {\r\n fireEvent('comment:delete', documentId, commentId);\r\n }\r\n return success;\r\n });\r\n };\r\n }\r\n}\r\n","const REGEXP = /[xy]/g;\r\nconst PATTERN = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\r\n\r\nfunction replacement(c) {\r\n let r = Math.random() * 16 | 0;\r\n let v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n}\r\n\r\n/**\r\n * Generate a univierally unique identifier\r\n *\r\n * @return {String} A UUID\r\n */\r\nexport default function uuid() {\r\n return PATTERN.replace(REGEXP, replacement);\r\n}\r\n","import uuid from '../utils/uuid';\r\nimport StoreAdapter from './StoreAdapter';\r\n\r\n// StoreAdapter for working with localStorage\r\n// This is ideal for testing, examples, and prototyping\r\nexport default class LocalStoreAdapter extends StoreAdapter {\r\n constructor() {\r\n super({\r\n getAnnotations(documentId, pageNumber) {\r\n return new Promise((resolve, reject) => {\r\n let annotations = getAnnotations(documentId).filter((i) => {\r\n return i.page === pageNumber && i.class === 'Annotation';\r\n });\r\n\r\n resolve({\r\n documentId,\r\n pageNumber,\r\n annotations\r\n });\r\n });\r\n }\r\n });\r\n\r\n this.getAnnotation = (documentId, annotationId) => {\r\n return Promise.resolve(getAnnotations(documentId)[findAnnotation(documentId, annotationId)]);\r\n };\r\n\r\n this.addAnnotation = (documentId, pageNumber, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n annotation.class = 'Annotation';\r\n annotation.uuid = uuid();\r\n annotation.page = pageNumber;\r\n\r\n let annotations = getAnnotations(documentId);\r\n annotations.push(annotation);\r\n updateAnnotations(documentId, annotations);\r\n\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.editAnnotation = (documentId, annotationId, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n let annotations = getAnnotations(documentId);\r\n annotations[findAnnotation(documentId, annotationId)] = annotation;\r\n updateAnnotations(documentId, annotations);\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.deleteAnnotation = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n let annotation = getAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\r\n if (!annotation) {\r\n return reject('Could not find annotation');\r\n }\r\n let index = findAnnotation(documentId, annotationId);\r\n if (index > -1) {\r\n let annotations = getAnnotations(documentId);\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n\r\n this.getComments = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n resolve(getAnnotations(documentId).filter((i) => {\r\n return i.class === 'Comment' && i.annotation === annotationId;\r\n }));\r\n });\r\n };\r\n\r\n this.addComment = (documentId, annotationId, content) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = {\r\n class: 'Comment',\r\n uuid: uuid(),\r\n annotation: annotationId,\r\n content: content\r\n };\r\n\r\n let annotations = getAnnotations(documentId);\r\n annotations.push(comment);\r\n updateAnnotations(documentId, annotations);\r\n\r\n resolve(comment);\r\n });\r\n };\r\n\r\n this.deleteComment = (documentId, commentId) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = getAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\r\n if (!comment) {\r\n return reject('Could not find annotation');\r\n }\r\n let index = -1;\r\n let annotations = getAnnotations(documentId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === commentId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index > -1) {\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n }\r\n}\r\n\r\nfunction getAnnotations(documentId) {\r\n return JSON.parse(localStorage.getItem(`${documentId}/annotations`)) || [];\r\n}\r\n\r\nfunction updateAnnotations(documentId, annotations) {\r\n localStorage.setItem(`${documentId}/annotations`, JSON.stringify(annotations));\r\n}\r\n/**\r\n *\r\n * @param {String} documentId Document id of the annotation\r\n * @param {String} annotationId The id of the annotation\r\n *\r\n * This function finds all the annotation made by one user.\r\n *\r\n * @return {int} The index of the annotation in localstorage\r\n */\r\nfunction findAnnotation(documentId, annotationId) {\r\n let index = -1;\r\n let annotations = getAnnotations(documentId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === annotationId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n return index;\r\n}\r\n","import uuid from '../utils/uuid';\r\nimport StoreAdapter from './StoreAdapter';\r\n\r\n// StoreAdapter for working with localStorage and associated user id\r\n// This is ideal for testing, examples, and prototyping\r\nexport default class LocalUserStoreAdapter extends StoreAdapter {\r\n constructor(userId = 'user', globalEdit = false) {\r\n super({\r\n getAnnotations(documentId, pageNumber) {\r\n return new Promise((resolve, reject) => {\r\n let annotations = getAllAnnotations(documentId).filter((i) => {\r\n return i.page === pageNumber && i.class === 'Annotation';\r\n });\r\n\r\n resolve({\r\n documentId,\r\n pageNumber,\r\n annotations\r\n });\r\n });\r\n }\r\n });\r\n\r\n this._userId = userId;\r\n this._globalEdit = globalEdit;\r\n\r\n this.getAnnotation = (documentId, annotationId) => {\r\n return Promise.resolve(getAnnotations(documentId, this._userId)[findAnnotation(documentId, this._userId, annotationId)]);\r\n };\r\n\r\n this.addAnnotation = (documentId, pageNumber, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n annotation.class = 'Annotation';\r\n annotation.uuid = uuid();\r\n annotation.page = pageNumber;\r\n annotation.userId = this._userId;\r\n\r\n let annotations = getAnnotations(documentId, this._userId);\r\n annotations.push(annotation);\r\n updateAnnotations(documentId, this._userId, annotations);\r\n\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.editAnnotation = (documentId, annotationId, annotation) => {\r\n return new Promise((resolve, reject) => {\r\n if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\r\n reject('Non-matching userId');\r\n }\r\n let annotations = getAnnotations(documentId, annotation.userId);\r\n annotations[findAnnotation(documentId, annotation.userId, annotationId)] = annotation;\r\n updateAnnotations(documentId, annotation.userId, annotations);\r\n resolve(annotation);\r\n });\r\n };\r\n\r\n this.deleteAnnotation = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n let annotation = getAllAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\r\n if (!annotation) {\r\n return reject('Could not find annotation');\r\n }\r\n else if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\r\n return reject('Non-matching userId');\r\n }\r\n let index = findAnnotation(documentId, annotation.userId, annotationId);\r\n if (index > -1) {\r\n let annotations = getAnnotations(documentId, annotation.userId);\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, annotation.userId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n\r\n this.getComments = (documentId, annotationId) => {\r\n return new Promise((resolve, reject) => {\r\n resolve(getAnnotations(documentId, this._userId).filter((i) => {\r\n return i.class === 'Comment' && i.annotation === annotationId;\r\n }));\r\n });\r\n };\r\n\r\n this.addComment = (documentId, annotationId, content) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = {\r\n class: 'Comment',\r\n uuid: uuid(),\r\n annotation: annotationId,\r\n content: content,\r\n userId: this._userId\r\n };\r\n\r\n let annotations = getAnnotations(documentId, this._userId);\r\n annotations.push(comment);\r\n updateAnnotations(documentId, this._userId, annotations);\r\n\r\n resolve(comment);\r\n });\r\n };\r\n\r\n this.deleteComment = (documentId, commentId) => {\r\n return new Promise((resolve, reject) => {\r\n let comment = getAllAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\r\n if (!comment) {\r\n return reject('Could not find annotation');\r\n }\r\n else if (!this._globalEdit && comment.userId && comment.userId !== this._userId) {\r\n return reject('Non-matching userId');\r\n }\r\n let index = -1;\r\n let annotations = getAnnotations(documentId, comment.userId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === commentId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index > -1) {\r\n annotations.splice(index, 1);\r\n updateAnnotations(documentId, comment.userId, annotations);\r\n }\r\n\r\n resolve(true);\r\n });\r\n };\r\n }\r\n\r\n get userId() {\r\n return this._userId;\r\n }\r\n}\r\n\r\nfunction getAllAnnotations(documentId) {\r\n let all_annotations = [];\r\n let re = new RegExp(`${documentId}/(.*)/annotations`);\r\n for (let i = 0; i < localStorage.length; i++) {\r\n if (localStorage.key(i).search(re) > -1) {\r\n all_annotations.push(...JSON.parse(localStorage.getItem(localStorage.key(i))));\r\n }\r\n }\r\n return all_annotations;\r\n}\r\n\r\nfunction getAnnotations(documentId, userId) {\r\n return JSON.parse(localStorage.getItem(`${documentId}/${userId}/annotations`)) || [];\r\n}\r\n\r\nfunction updateAnnotations(documentId, userId, annotations) {\r\n localStorage.setItem(`${documentId}/${userId}/annotations`, JSON.stringify(annotations));\r\n}\r\n/**\r\n *\r\n * @param {String} documentId Document id of the annotation\r\n * @param {String} userId User id of the annotation\r\n * @param {String} annotationId The id of the annotation\r\n *\r\n * This function finds all the annotation made by one user.\r\n *\r\n * @return {int} The index of the annotation in localstorage\r\n */\r\nfunction findAnnotation(documentId, userId, annotationId) {\r\n let index = -1;\r\n let annotations = getAnnotations(documentId, userId);\r\n for (let i = 0, l = annotations.length; i < l; i++) {\r\n if (annotations[i].uuid === annotationId) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n return index;\r\n}\r\n","export default {\r\n annotationLayerName: 'annotationLayer',\r\n textLayerName: 'textLayer',\r\n annotationSvgQuery: function() {\r\n return 'svg.' + this.annotationLayerName;\r\n },\r\n annotationClassQuery: function() {\r\n return '.' + this.annotationLayerName;\r\n },\r\n textClassQuery: function() {\r\n return '.' + this.textLayerName;\r\n }\r\n};\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport config from '../config';\r\nimport {\r\n addEventListener,\r\n removeEventListener\r\n} from './event';\r\nimport {\r\n BORDER_COLOR,\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGContainer,\r\n findSVGAtPoint,\r\n getOffsetAnnotationRect,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet isDragging = false;\r\nlet overlay;\r\nlet dragOffsetX, dragOffsetY, dragStartX, dragStartY;\r\nconst OVERLAY_BORDER_SIZE = 3;\r\n\r\n/**\r\n * Create an overlay for editing an annotation.\r\n *\r\n * @param {Element} target The annotation element to apply overlay for\r\n */\r\nfunction createEditOverlay(target) {\r\n destroyEditOverlay();\r\n\r\n overlay = document.createElement('div');\r\n let anchor = document.createElement('a');\r\n let parentNode = findSVGContainer(target).parentNode;\r\n let id = target.getAttribute('data-pdf-annotate-id');\r\n let rect = getOffsetAnnotationRect(target);\r\n let styleLeft = rect.left - OVERLAY_BORDER_SIZE;\r\n let styleTop = rect.top - OVERLAY_BORDER_SIZE;\r\n\r\n overlay.setAttribute('id', 'pdf-annotate-edit-overlay');\r\n overlay.setAttribute('data-target-id', id);\r\n overlay.style.boxSizing = 'content-box';\r\n overlay.style.position = 'absolute';\r\n overlay.style.top = `${styleTop}px`;\r\n overlay.style.left = `${styleLeft}px`;\r\n overlay.style.width = `${rect.width}px`;\r\n overlay.style.height = `${rect.height}px`;\r\n overlay.style.border = `${OVERLAY_BORDER_SIZE}px solid ${BORDER_COLOR}`;\r\n overlay.style.borderRadius = `${OVERLAY_BORDER_SIZE}px`;\r\n overlay.style.zIndex = 20100;\r\n\r\n anchor.innerHTML = '×';\r\n anchor.setAttribute('href', 'javascript://');\r\n anchor.style.background = '#fff';\r\n anchor.style.borderRadius = '20px';\r\n anchor.style.border = '1px solid #bbb';\r\n anchor.style.color = '#bbb';\r\n anchor.style.fontSize = '16px';\r\n anchor.style.padding = '2px';\r\n anchor.style.textAlign = 'center';\r\n anchor.style.textDecoration = 'none';\r\n anchor.style.position = 'absolute';\r\n anchor.style.top = '-13px';\r\n anchor.style.right = '-13px';\r\n anchor.style.width = '25px';\r\n anchor.style.height = '25px';\r\n\r\n overlay.appendChild(anchor);\r\n parentNode.appendChild(overlay);\r\n document.addEventListener('click', handleDocumentClick);\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n document.addEventListener('mousedown', handleDocumentMousedown);\r\n anchor.addEventListener('click', deleteAnnotation);\r\n anchor.addEventListener('mouseover', () => {\r\n anchor.style.color = '#35A4DC';\r\n anchor.style.borderColor = '#999';\r\n anchor.style.boxShadow = '0 1px 1px #ccc';\r\n });\r\n anchor.addEventListener('mouseout', () => {\r\n anchor.style.color = '#bbb';\r\n anchor.style.borderColor = '#bbb';\r\n anchor.style.boxShadow = '';\r\n });\r\n overlay.addEventListener('mouseover', () => {\r\n if (!isDragging) { anchor.style.display = ''; }\r\n });\r\n overlay.addEventListener('mouseout', () => {\r\n anchor.style.display = 'none';\r\n });\r\n}\r\n\r\n/**\r\n * Destroy the edit overlay if it exists.\r\n */\r\nfunction destroyEditOverlay() {\r\n if (overlay) {\r\n overlay.parentNode.removeChild(overlay);\r\n overlay = null;\r\n }\r\n\r\n document.removeEventListener('click', handleDocumentClick);\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n document.removeEventListener('mousedown', handleDocumentMousedown);\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n enableUserSelect();\r\n}\r\n\r\n/**\r\n * Delete currently selected annotation\r\n */\r\nfunction deleteAnnotation() {\r\n if (!overlay) {\r\n return;\r\n }\r\n\r\n let annotationId = overlay.getAttribute('data-target-id');\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let { documentId } = getMetadata(svg);\r\n\r\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\r\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n\r\n [...nodes].forEach((n) => {\r\n n.parentNode.removeChild(n);\r\n });\r\n });\r\n\r\n destroyEditOverlay();\r\n}\r\n\r\n/**\r\n * Handle document.click event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentClick(e) {\r\n if (!findSVGAtPoint(e.clientX, e.clientY)) { return; }\r\n\r\n // Remove current overlay\r\n let overlay = document.getElementById('pdf-annotate-edit-overlay');\r\n if (overlay) {\r\n if (isDragging || e.target === overlay) {\r\n return;\r\n }\r\n\r\n destroyEditOverlay();\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {KeyboardEvent} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // keyCode is deprecated, so prefer the newer \"key\" method if possible\r\n let keyTest;\r\n if (e.key) {\r\n keyTest = e.key.toLowerCase() === 'delete' || e.key.toLowerCase() === 'backspace';\r\n }\r\n else {\r\n keyTest = e.keyCode === 8 || e.keyCode === 46;\r\n }\r\n if (overlay && keyTest &&\r\n e.target.nodeName.toLowerCase() !== 'textarea' &&\r\n e.target.nodeName.toLowerCase() !== 'input') {\r\n e.preventDefault();\r\n deleteAnnotation();\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mousedown event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentMousedown(e) {\r\n if (e.target !== overlay) {\r\n return;\r\n }\r\n\r\n // Highlight and strikeout annotations are bound to text within the document.\r\n // It doesn't make sense to allow repositioning these types of annotations.\r\n let annotationId = overlay.getAttribute('data-target-id');\r\n let target = document.querySelector(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n let type = target.getAttribute('data-pdf-annotate-type');\r\n\r\n if (type === 'highlight' || type === 'strikeout') { return; }\r\n\r\n isDragging = true;\r\n dragOffsetX = e.clientX;\r\n dragOffsetY = e.clientY;\r\n dragStartX = overlay.offsetLeft;\r\n dragStartY = overlay.offsetTop;\r\n\r\n overlay.style.background = 'rgba(255, 255, 255, 0.7)';\r\n overlay.style.cursor = 'move';\r\n overlay.querySelector('a').style.display = 'none';\r\n\r\n document.addEventListener('mousemove', handleDocumentMousemove);\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentMousemove(e) {\r\n let parentNode = overlay.parentNode;\r\n let rect = parentNode.getBoundingClientRect();\r\n let y = (dragStartY + (e.clientY - dragOffsetY));\r\n let x = (dragStartX + (e.clientX - dragOffsetX));\r\n let minY = 0;\r\n let maxY = rect.height;\r\n let minX = 0;\r\n let maxX = rect.width;\r\n\r\n if (y > minY && y + overlay.offsetHeight < maxY) {\r\n overlay.style.top = `${y}px`;\r\n }\r\n\r\n if (x > minX && x + overlay.offsetWidth < maxX) {\r\n overlay.style.left = `${x}px`;\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event that needs to be handled\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let annotationId = overlay.getAttribute('data-target-id');\r\n let target = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n let type = target[0].getAttribute('data-pdf-annotate-type');\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let { documentId } = getMetadata(svg);\r\n\r\n overlay.querySelector('a').style.display = '';\r\n\r\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\r\n let attribX = 'x';\r\n let attribY = 'y';\r\n if (['circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\r\n attribX = 'cx';\r\n attribY = 'cy';\r\n }\r\n\r\n if (type === 'point') {\r\n // Broken\r\n /*\r\n [...target].forEach((t, i) => {\r\n let moveTo = {\r\n x: overlay.offsetLeft + 3,\r\n y: overlay.offsetTop + 3\r\n };\r\n t.setAttribute(attribX, moveTo.x);\r\n t.setAttribute(attribY, moveTo.y);\r\n annotation[attribX] = moveTo.x;\r\n annotation[attribY] = moveTo.y;\r\n });\r\n */\r\n return;\r\n }\r\n else if (['area', 'highlight', 'textbox', 'circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\r\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\r\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\r\n let modelDelta = {\r\n x: modelEnd[0] - modelStart[0],\r\n y: modelEnd[1] - modelStart[1]\r\n };\r\n\r\n if (type === 'textbox') {\r\n target = [target[0].firstChild];\r\n }\r\n\r\n [...target].forEach((t, i) => {\r\n let modelX = parseInt(t.getAttribute(attribX), 10);\r\n let modelY = parseInt(t.getAttribute(attribY), 10);\r\n if (modelDelta.y !== 0) {\r\n modelY = modelY + modelDelta.y;\r\n\r\n t.setAttribute(attribY, modelY);\r\n if (annotation.rectangles && i < annotation.rectangles.length) {\r\n annotation.rectangles[i].y = modelY;\r\n }\r\n else if (annotation[attribY]) {\r\n annotation[attribY] = modelY;\r\n }\r\n }\r\n if (modelDelta.x !== 0) {\r\n modelX = modelX + modelDelta.x;\r\n\r\n t.setAttribute(attribX, modelX);\r\n if (annotation.rectangles && i < annotation.rectangles.length) {\r\n annotation.rectangles[i].x = modelX;\r\n }\r\n else if (annotation[attribX]) {\r\n annotation[attribX] = modelX;\r\n }\r\n }\r\n });\r\n }\r\n else if (type === 'strikeout') {\r\n return;\r\n // let { deltaX, deltaY } = getDelta('x1', 'y1');\r\n // [...target].forEach(target, (t, i) => {\r\n // if (deltaY !== 0) {\r\n // t.setAttribute('y1', parseInt(t.getAttribute('y1'), 10) + deltaY);\r\n // t.setAttribute('y2', parseInt(t.getAttribute('y2'), 10) + deltaY);\r\n // annotation.rectangles[i].y = parseInt(t.getAttribute('y1'), 10);\r\n // }\r\n // if (deltaX !== 0) {\r\n // t.setAttribute('x1', parseInt(t.getAttribute('x1'), 10) + deltaX);\r\n // t.setAttribute('x2', parseInt(t.getAttribute('x2'), 10) + deltaX);\r\n // annotation.rectangles[i].x = parseInt(t.getAttribute('x1'), 10);\r\n // }\r\n // });\r\n }\r\n else if (type === 'drawing' || type === 'arrow') {\r\n // Do nothing as currently broken\r\n /*\r\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\r\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\r\n let modelDelta = {\r\n x: modelEnd[0] - modelStart[0],\r\n y: modelEnd[1] - modelStart[1]\r\n };\r\n\r\n annotation.lines.forEach((line, i) => {\r\n let [x, y] = annotation.lines[i];\r\n annotation.lines[i][0] = x + modelDelta.x;\r\n annotation.lines[i][1] = y + modelDelta.y;\r\n });\r\n\r\n target[0].parentNode.removeChild(target[0]);\r\n appendChild(svg, annotation);\r\n */\r\n return;\r\n }\r\n\r\n PDFJSAnnotate.getStoreAdapter().editAnnotation(documentId, annotationId, annotation);\r\n });\r\n\r\n setTimeout(() => {\r\n isDragging = false;\r\n }, 0);\r\n\r\n overlay.style.background = '';\r\n overlay.style.cursor = '';\r\n\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n enableUserSelect();\r\n}\r\n\r\n/**\r\n * Handle annotation.click event\r\n *\r\n * @param {Element} e The annotation element that was clicked\r\n */\r\nfunction handleAnnotationClick(target) {\r\n createEditOverlay(target);\r\n}\r\n\r\n/**\r\n * Enable edit mode behavior.\r\n */\r\nexport function enableEdit() {\r\n if (_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = true;\r\n addEventListener('annotation:click', handleAnnotationClick);\r\n};\r\n\r\n/**\r\n * Disable edit mode behavior.\r\n */\r\nexport function disableEdit() {\r\n destroyEditOverlay();\r\n\r\n if (!_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = false;\r\n removeEventListener('annotation:click', handleAnnotationClick);\r\n};\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _candraw = false;\r\nlet _penSize;\r\nlet _penColor;\r\nlet path;\r\nlet lines = [];\r\n\r\n/**\r\n * Handle document.touchdown or document.pointerdown event\r\n * @param {PointerEvent} e The DOM event to be handled\r\n */\r\nfunction handleDocumentPointerdown(e) {\r\n path = null;\r\n lines = [];\r\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n _candraw = true;\r\n e.preventDefault();\r\n}\r\n\r\n/**\r\n * Handle document.pointerup event\r\n *\r\n * @param {PointerEvent} e The DOM event to be handled\r\n */\r\nfunction handleDocumentPointerup(e) {\r\n saveToStorage(e.clientX, e.clientY);\r\n}\r\n\r\nfunction saveToStorage(x, y) {\r\n if (!_candraw) {\r\n return;\r\n }\r\n _candraw = false;\r\n let svg;\r\n if (lines.length > 1 && (svg = findSVGAtPoint(x, y))) {\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\r\n type: 'drawing',\r\n width: _penSize,\r\n color: _penColor,\r\n lines\r\n }).then((annotation) => {\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {PointerEvent} e The DOM event to be handled\r\n */\r\nfunction handleDocumentPointermove(e) {\r\n if (!findSVGAtPoint(e.clientX, e.clientY) || !_candraw) {\r\n return;\r\n }\r\n savePoint(e.clientX, e.clientY);\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {KeyboardEvent} e The DOM event to be handled\r\n * } e The DOM event to be handled\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // Cancel rect if Esc is pressed\r\n if (e.keyCode === 27) {\r\n lines = null;\r\n path.parentNode.removeChild(path);\r\n document.removeEventListener('pointermove', handleDocumentPointermove);\r\n document.removeEventListener('pointerup', handleDocumentPointerup);\r\n }\r\n}\r\n\r\n/**\r\n * Save a point to the line being drawn.\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n */\r\nfunction savePoint(x, y) {\r\n let svg = findSVGAtPoint(x, y);\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n let point = convertToSvgPoint([\r\n x - rect.left,\r\n y - rect.top\r\n ], svg);\r\n point[0] = point[0].toFixed(2);\r\n point[1] = point[1].toFixed(2);\r\n lines.push(point);\r\n\r\n if (lines.length <= 1) {\r\n return;\r\n }\r\n\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n path = appendChild(svg, {\r\n type: 'drawing',\r\n color: _penColor,\r\n width: _penSize,\r\n lines\r\n });\r\n}\r\n\r\n/**\r\n * Set the attributes of the pen.\r\n *\r\n * @param {Number} penSize The size of the lines drawn by the pen, rounded to 2 decimal places\r\n * @param {String} penColor The color of the lines drawn by the pen\r\n */\r\nexport function setPen(penSize = 1, penColor = '000000') {\r\n _penSize = Math.round(parseFloat(penSize) * 1e2) / 1e2;\r\n _penColor = penColor;\r\n}\r\n\r\n/**\r\n * Return pen attributes of the pen\r\n *\r\n * @return {Object} Object with size and color\r\n */\r\nexport function getPen() {\r\n return {\r\n size: _penSize,\r\n color: _penColor\r\n };\r\n}\r\n\r\n/**\r\n * Enable the pen behavior\r\n */\r\nexport function enablePen() {\r\n if (_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = true;\r\n // Chrome and Firefox has different behaviors with how pen works, so we need different events.\r\n document.addEventListener('pointerdown', handleDocumentPointerdown);\r\n document.addEventListener('pointermove', handleDocumentPointermove);\r\n document.addEventListener('pointerup', handleDocumentPointerup);\r\n\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Disable the pen behavior\r\n */\r\nexport function disablePen() {\r\n if (!_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = false;\r\n document.removeEventListener('pointerdown', handleDocumentPointerdown);\r\n document.removeEventListener('pointermove', handleDocumentPointermove);\r\n document.removeEventListener('pointerup', handleDocumentPointerup);\r\n\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n enableUserSelect();\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGAtPoint,\r\n findSVGContainer,\r\n getMetadata,\r\n convertToSvgPoint,\r\n convertToScreenPoint,\r\n findAnnotationAtPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _penSize;\r\nlet _penColor;\r\nlet path;\r\nlet lines;\r\nlet originY;\r\nlet originX;\r\n\r\n/**\r\n * Handle document.mousedown event\r\n */\r\nfunction handleDocumentMousedown(e) {\r\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\r\n if (target === null) {\r\n return;\r\n }\r\n\r\n let type = target.getAttribute('data-pdf-annotate-type');\r\n if (type !== 'circle' && type !== 'fillcircle' && type !== 'emptycircle') {\r\n return;\r\n }\r\n\r\n let svg = findSVGContainer(target);\r\n let { documentId } = getMetadata(svg);\r\n let annotationId = target.getAttribute('data-pdf-annotate-id');\r\n\r\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\r\n if (annotation) {\r\n path = null;\r\n lines = [];\r\n\r\n let point = convertToScreenPoint([\r\n annotation.cx,\r\n annotation.cy\r\n ], svg);\r\n\r\n let rect = svg.getBoundingClientRect();\r\n\r\n originX = point[0] + rect.left;\r\n originY = point[1] + rect.top;\r\n\r\n document.addEventListener('mousemove', handleDocumentMousemove);\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let svg;\r\n if (lines.length > 1 && (svg = findSVGAtPoint(e.clientX, e.clientY))) {\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\r\n type: 'arrow',\r\n width: _penSize,\r\n color: _penColor,\r\n lines\r\n }).then((annotation) => {\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\nfunction handleDocumentMousemove(e) {\r\n let x = lines.length === 0 ? originX : e.clientX;\r\n let y = lines.length === 0 ? originY : e.clientY;\r\n\r\n savePoint(x, y);\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {Event} e The DOM event to be handled\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // Cancel rect if Esc is pressed\r\n if (e.keyCode === 27) {\r\n lines = null;\r\n path.parentNode.removeChild(path);\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n }\r\n}\r\n\r\n/**\r\n * Save a point to the line being drawn.\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n */\r\nfunction savePoint(x, y) {\r\n let svg = findSVGAtPoint(x, y);\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n let point = convertToSvgPoint([\r\n x - rect.left,\r\n y - rect.top\r\n ], svg);\r\n\r\n if (lines.length < 2) {\r\n lines.push(point);\r\n return;\r\n }\r\n else {\r\n lines[1] = point; // update end point\r\n }\r\n\r\n if (path) {\r\n svg.removeChild(path);\r\n }\r\n\r\n path = appendChild(svg, {\r\n type: 'arrow',\r\n color: _penColor,\r\n width: _penSize,\r\n lines\r\n });\r\n}\r\n\r\n/**\r\n * Set the attributes of the pen.\r\n *\r\n * @param {Number} penSize The size of the lines drawn by the pen\r\n * @param {String} penColor The color of the lines drawn by the pen\r\n */\r\nexport function setArrow(penSize = 10, penColor = '0000FF') {\r\n _penSize = parseInt(penSize, 10);\r\n _penColor = penColor;\r\n}\r\n\r\n/**\r\n * Enable the pen behavior\r\n */\r\nexport function enableArrow() {\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mousedown', handleDocumentMousedown);\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Disable the pen behavior\r\n */\r\nexport function disableArrow() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mousedown', handleDocumentMousedown);\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n enableUserSelect();\r\n}\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport {\r\n findAnnotationAtPoint,\r\n getMetadata\r\n} from './utils';\r\n\r\nlet _canerase = false;\r\nlet previousPoint = null;\r\n\r\n/**\r\n *\r\n * @param {PointerEvent} e DOM event to handle\r\n */\r\nfunction handleDocumentDown(e) {\r\n _canerase = true;\r\n previousPoint = [e.clientX, e.clientY];\r\n}\r\n\r\n/**\r\n *\r\n * @param {PointerEvent} e DOM event to handle\r\n */\r\nfunction handleDocumentUp(e) {\r\n _canerase = false;\r\n erase(findAnnotationAtPoint(e.clientX, e.clientY));\r\n}\r\n\r\n/**\r\n *\r\n * @param {PointerEvent} e DOM event to handle\r\n */\r\nfunction handleDocumentMouseMove(e) {\r\n if (!_canerase) {\r\n return;\r\n }\r\n\r\n // This algorithm attempts to get the various points between the last\r\n // PointerEvent and this one\r\n let check = [];\r\n let diffX = Math.abs(previousPoint[0] - e.clientX);\r\n let diffY = Math.abs(previousPoint[1] - e.clientY);\r\n if (diffX >= 1 || diffY >= 1) {\r\n let maxSteps = Math.round(Math.max(diffX, diffY));\r\n let subStepSize = Math.min(diffX, diffY) / maxSteps;\r\n let smallerTest = diffX < diffY;\r\n let startPoint = [\r\n Math.min(previousPoint[0], e.clientX),\r\n Math.min(previousPoint[1], e.clientY)\r\n ];\r\n for (let i = 0; i < maxSteps; i++) {\r\n if (smallerTest) {\r\n check.push([Math.round(startPoint[0] + (subStepSize * i)), Math.round(startPoint[1] + i)]);\r\n }\r\n else {\r\n check.push([Math.round(startPoint[0] + i), Math.round(startPoint[1] + (subStepSize * i))]);\r\n }\r\n }\r\n }\r\n for (let point of check) {\r\n erase(findAnnotationAtPoint(point[0], point[1]));\r\n }\r\n previousPoint = [e.clientX, e.clientY];\r\n}\r\n\r\nfunction erase(target) {\r\n if (!_canerase) {\r\n return;\r\n }\r\n\r\n if (target) {\r\n let { documentId } = getMetadata(target.parentElement);\r\n let annotationId = target.getAttribute('data-pdf-annotate-id');\r\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\r\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\r\n [...nodes].forEach((n) => {\r\n n.parentNode.removeChild(n);\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport function enableEraser() {\r\n document.addEventListener('pointermove', handleDocumentMouseMove);\r\n document.addEventListener('pointerdown', handleDocumentDown);\r\n document.addEventListener('pointerup', handleDocumentUp);\r\n}\r\n\r\nexport function disableEraser() {\r\n document.removeEventListener('pointermove', handleDocumentMouseMove);\r\n document.removeEventListener('pointerdown', handleDocumentDown);\r\n document.removeEventListener('pointerup', handleDocumentUp);\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n BORDER_COLOR,\r\n findSVGAtPoint,\r\n getMetadata,\r\n scaleDown\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet input;\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} The DOM event to be handled\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n\r\n input = document.createElement('input');\r\n input.setAttribute('id', 'pdf-annotate-point-input');\r\n input.setAttribute('placeholder', 'Enter comment');\r\n input.style.border = `3px solid ${BORDER_COLOR}`;\r\n input.style.borderRadius = '3px';\r\n input.style.position = 'absolute';\r\n input.style.top = `${e.clientY}px`;\r\n input.style.left = `${e.clientX}px`;\r\n\r\n input.addEventListener('blur', handleInputBlur);\r\n input.addEventListener('keyup', handleInputKeyup);\r\n\r\n document.body.appendChild(input);\r\n input.focus();\r\n}\r\n\r\n/**\r\n * Handle input.blur event\r\n */\r\nfunction handleInputBlur() {\r\n savePoint();\r\n}\r\n\r\n/**\r\n * Handle input.keyup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleInputKeyup(e) {\r\n if (e.keyCode === 27) {\r\n closeInput();\r\n }\r\n else if (e.keyCode === 13) {\r\n savePoint();\r\n }\r\n}\r\n\r\n/**\r\n * Save a new point annotation from input\r\n */\r\nfunction savePoint() {\r\n if (input.value.trim().length > 0) {\r\n let clientX = parseInt(input.style.left, 10);\r\n let clientY = parseInt(input.style.top, 10);\r\n let content = input.value.trim();\r\n let svg = findSVGAtPoint(clientX, clientY);\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n let annotation = Object.assign({\r\n type: 'point'\r\n }, scaleDown(svg, {\r\n x: clientX - rect.left,\r\n y: clientY - rect.top\r\n }));\r\n\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n PDFJSAnnotate.getStoreAdapter().addComment(\r\n documentId,\r\n annotation.uuid,\r\n content\r\n );\r\n\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n\r\n closeInput();\r\n}\r\n\r\n/**\r\n * Close the input element\r\n */\r\nfunction closeInput() {\r\n input.removeEventListener('blur', handleInputBlur);\r\n input.removeEventListener('keyup', handleInputKeyup);\r\n document.body.removeChild(input);\r\n input = null;\r\n}\r\n\r\n/**\r\n * Enable point annotation behavior\r\n */\r\nexport function enablePoint() {\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Disable point annotation behavior\r\n */\r\nexport function disablePoint() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport config from '../config';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n BORDER_COLOR,\r\n disableUserSelect,\r\n enableUserSelect,\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgRect\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _type;\r\nlet overlay;\r\nlet originY;\r\nlet originX;\r\n\r\n/**\r\n * Get the current window selection as rects\r\n *\r\n * @return {Array} An Array of rects\r\n */\r\nfunction getSelectionRects() {\r\n try {\r\n let selection = window.getSelection();\r\n let range = selection.getRangeAt(0);\r\n let rects = range.getClientRects();\r\n\r\n if (rects.length > 0 &&\r\n rects[0].width > 0 &&\r\n rects[0].height > 0) {\r\n return rects;\r\n }\r\n }\r\n catch (e) {}\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Handle document.mousedown event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMousedown(e) {\r\n let svg;\r\n if (_type !== 'area' || !(svg = findSVGAtPoint(e.clientX, e.clientY))) {\r\n return;\r\n }\r\n\r\n let rect = svg.getBoundingClientRect();\r\n originY = e.clientY;\r\n originX = e.clientX;\r\n\r\n overlay = document.createElement('div');\r\n overlay.style.position = 'absolute';\r\n overlay.style.top = `${originY - rect.top}px`;\r\n overlay.style.left = `${originX - rect.left}px`;\r\n overlay.style.border = `3px solid ${BORDER_COLOR}`;\r\n overlay.style.borderRadius = '3px';\r\n svg.parentNode.appendChild(overlay);\r\n\r\n document.addEventListener('mousemove', handleDocumentMousemove);\r\n disableUserSelect();\r\n}\r\n\r\n/**\r\n * Handle document.mousemove event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMousemove(e) {\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let rect = svg.getBoundingClientRect();\r\n\r\n if (originX + (e.clientX - originX) < rect.right) {\r\n overlay.style.width = `${e.clientX - originX}px`;\r\n }\r\n\r\n if (originY + (e.clientY - originY) < rect.bottom) {\r\n overlay.style.height = `${e.clientY - originY}px`;\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let rects;\r\n if (_type !== 'area' && (rects = getSelectionRects())) {\r\n saveRect(_type, [...rects].map((r) => {\r\n return {\r\n top: r.top,\r\n left: r.left,\r\n width: r.width,\r\n height: r.height\r\n };\r\n }));\r\n }\r\n else if (_type === 'area' && overlay) {\r\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\r\n let rect = svg.getBoundingClientRect();\r\n saveRect(_type, [{\r\n top: parseInt(overlay.style.top, 10) + rect.top,\r\n left: parseInt(overlay.style.left, 10) + rect.left,\r\n width: parseInt(overlay.style.width, 10),\r\n height: parseInt(overlay.style.height, 10)\r\n }]);\r\n\r\n overlay.parentNode.removeChild(overlay);\r\n overlay = null;\r\n\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n enableUserSelect();\r\n }\r\n}\r\n\r\n/**\r\n * Handle document.keyup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentKeyup(e) {\r\n // Cancel rect if Esc is pressed\r\n if (e.keyCode === 27) {\r\n let selection = window.getSelection();\r\n selection.removeAllRanges();\r\n if (overlay && overlay.parentNode) {\r\n overlay.parentNode.removeChild(overlay);\r\n overlay = null;\r\n document.removeEventListener('mousemove', handleDocumentMousemove);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Save a rect annotation\r\n *\r\n * @param {String} type The type of rect (area, highlight, strikeout)\r\n * @param {Array} rects The rects to use for annotation\r\n * @param {String} color The color of the rects\r\n */\r\nfunction saveRect(type, rects, color) {\r\n let svg = findSVGAtPoint(rects[0].left, rects[0].top);\r\n let annotation;\r\n\r\n if (!svg) {\r\n return;\r\n }\r\n\r\n let boundingRect = svg.getBoundingClientRect();\r\n\r\n if (!color) {\r\n if (type === 'highlight') {\r\n color = 'FFFF00';\r\n }\r\n else if (type === 'strikeout') {\r\n color = 'FF0000';\r\n }\r\n }\r\n\r\n // Initialize the annotation\r\n annotation = {\r\n type,\r\n color,\r\n rectangles: [...rects].map((r) => {\r\n let offset = 0;\r\n\r\n if (type === 'strikeout') {\r\n offset = r.height / 2;\r\n }\r\n\r\n return convertToSvgRect({\r\n y: (r.top + offset) - boundingRect.top,\r\n x: r.left - boundingRect.left,\r\n width: r.width,\r\n height: r.height\r\n }, svg);\r\n }).filter((r) => r.width > 0 && r.height > 0 && r.x > -1 && r.y > -1)\r\n };\r\n\r\n // Short circuit if no rectangles exist\r\n if (annotation.rectangles.length === 0) {\r\n return;\r\n }\r\n\r\n // Special treatment for area as it only supports a single rect\r\n if (type === 'area') {\r\n let rect = annotation.rectangles[0];\r\n delete annotation.rectangles;\r\n annotation.x = rect.x;\r\n annotation.y = rect.y;\r\n annotation.width = rect.width;\r\n annotation.height = rect.height;\r\n }\r\n\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n\r\n // Add the annotation\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n appendChild(svg, annotation);\r\n });\r\n}\r\n\r\n/**\r\n * Enable rect behavior\r\n */\r\nexport function enableRect(type) {\r\n _type = type;\r\n\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n document.addEventListener('mousedown', handleDocumentMousedown);\r\n document.addEventListener('keyup', handleDocumentKeyup);\r\n}\r\n\r\n/**\r\n * Disable rect behavior\r\n */\r\nexport function disableRect() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n document.removeEventListener('mousedown', handleDocumentMousedown);\r\n document.removeEventListener('keyup', handleDocumentKeyup);\r\n}\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet _type;\r\nlet _circleRadius = 10;\r\nlet _circleColor = '0000FF';\r\n\r\n/**\r\n * Set the attributes of the pen.\r\n *\r\n * @param {Number} circleRadius The radius of the circle\r\n * @param {String} circleColor The color of the circle\r\n */\r\nexport function setCircle(circleRadius = 10, circleColor = '0000FF') {\r\n _circleRadius = parseInt(circleRadius, 10);\r\n _circleColor = circleColor;\r\n}\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n let svg = findSVGAtPoint(e.clientX, e.clientY);\r\n if (!svg) {\r\n return;\r\n }\r\n let rect = svg.getBoundingClientRect();\r\n saveCircle(svg, _type, {\r\n x: e.clientX - rect.left,\r\n y: e.clientY - rect.top\r\n }, _circleRadius, _circleColor);\r\n}\r\n\r\n/**\r\n * Save a circle annotation\r\n *\r\n * @param {SVGElement} svg\r\n * @param {String} type The type of circle (circle, emptycircle, fillcircle)\r\n * @param {Object} pt The point to use for annotation\r\n * @param {float} radius\r\n * @param {String} color The color of the rects\r\n */\r\nfunction saveCircle(svg, type, pt, radius, color) {\r\n // Initialize the annotation\r\n let svg_pt = convertToSvgPoint([ pt.x, pt.y ], svg);\r\n let annotation = {\r\n type,\r\n color,\r\n cx: svg_pt[0],\r\n cy: svg_pt[1],\r\n r: radius\r\n };\r\n\r\n let { documentId, pageNumber } = getMetadata(svg);\r\n\r\n // Add the annotation\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n appendChild(svg, annotation);\r\n });\r\n}\r\n\r\n/**\r\n * Enable circle behavior\r\n */\r\nexport function enableCircle(type) {\r\n _type = type;\r\n\r\n if (_enabled) { return; }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Disable circle behavior\r\n */\r\nexport function disableCircle() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\nexport function addCircle(type, e) {\r\n let oldType = _type;\r\n _type = type;\r\n handleDocumentMouseup(e);\r\n _type = oldType;\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport { appendChild } from '../render/appendChild';\r\nimport {\r\n BORDER_COLOR,\r\n findSVGAtPoint,\r\n getMetadata,\r\n convertToSvgPoint\r\n} from './utils';\r\n\r\nlet _enabled = false;\r\nlet input;\r\nlet _textSize = localStorage.getItem(`text/size`) || 12;\r\nlet _textColor = localStorage.getItem(`text/color`) || '#000000';\r\n\r\n/**\r\n * Handle document.mouseup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleDocumentMouseup(e) {\r\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\r\n return;\r\n }\r\n if (!e.srcElement.classList.contains('annotationLayer')) {\r\n return;\r\n }\r\n input = document.createElement('textarea');\r\n input.setAttribute('id', 'pdf-annotate-text-input');\r\n input.setAttribute('placeholder', 'Enter text... SHIFT + ENTER for new line');\r\n input.style.border = `3px solid ${BORDER_COLOR}`;\r\n input.style.borderRadius = '3px';\r\n input.style.position = 'fixed';\r\n input.style.top = `${e.clientY}px`;\r\n input.style.left = `${e.clientX}px`;\r\n input.style.fontSize = `${_textSize}px`;\r\n input.style.zIndex = '41';\r\n input.addEventListener('blur', handleInputBlur);\r\n input.addEventListener('keyup', handleInputKeyup);\r\n\r\n document.body.appendChild(input);\r\n input.focus();\r\n}\r\n\r\n/**\r\n * Handle input.blur event\r\n */\r\nfunction handleInputBlur() {\r\n saveText();\r\n}\r\n\r\n/**\r\n * Handle input.keyup event\r\n *\r\n * @param {Event} e The DOM event to handle\r\n */\r\nfunction handleInputKeyup(e) {\r\n if (e.keyCode === 27) {\r\n closeInput();\r\n }\r\n else if (e.keyCode === 13 && !e.shiftKey) {\r\n saveText();\r\n }\r\n}\r\n\r\n/**\r\n * Save a text annotation from input\r\n */\r\nfunction saveText() {\r\n let value = (input.value) ? input.value.replace(/ +$/, '') : '';\r\n if (value.length > 0) {\r\n let clientX = parseInt(input.style.left, 10);\r\n let clientY = parseInt(input.style.top, 10);\r\n let svg = findSVGAtPoint(clientX, clientY);\r\n if (!svg) {\r\n return;\r\n }\r\n let height = _textSize;\r\n let { documentId, pageNumber, viewport } = getMetadata(svg);\r\n let scale = 1 / viewport.scale;\r\n let rect = svg.getBoundingClientRect();\r\n let pt = convertToSvgPoint([\r\n clientX - rect.left,\r\n clientY - rect.top + height], svg, viewport);\r\n let annotation = {\r\n type: 'textbox',\r\n size: _textSize * scale,\r\n color: _textColor,\r\n content: value,\r\n x: pt[0],\r\n y: pt[1],\r\n rotation: -viewport.rotation\r\n };\r\n\r\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\r\n .then((annotation) => {\r\n appendChild(svg, annotation);\r\n });\r\n }\r\n\r\n closeInput();\r\n}\r\n\r\n/**\r\n * Close the input\r\n */\r\nfunction closeInput() {\r\n if (input) {\r\n input.removeEventListener('blur', handleInputBlur);\r\n input.removeEventListener('keyup', handleInputKeyup);\r\n document.body.removeChild(input);\r\n input = null;\r\n }\r\n}\r\n\r\n/**\r\n * Set the text attributes\r\n *\r\n * @param {Number} textSize The size of the text\r\n * @param {String} textColor The color of the text\r\n */\r\nexport function setText(textSize = 12, textColor = '000000') {\r\n _textSize = parseInt(textSize, 10);\r\n _textColor = textColor;\r\n}\r\n\r\n/**\r\n * Enable text behavior\r\n */\r\nexport function enableText() {\r\n if (_enabled) {\r\n return;\r\n }\r\n\r\n _enabled = true;\r\n document.addEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n/**\r\n * Disable text behavior\r\n */\r\nexport function disableText() {\r\n if (!_enabled) { return; }\r\n\r\n _enabled = false;\r\n document.removeEventListener('mouseup', handleDocumentMouseup);\r\n}\r\n\r\n","/**\r\n * Create a node that is only visible to screen readers\r\n *\r\n * @param {String} content The text content that should be read by screen reader\r\n * @param {String} [annotationId] The ID of the annotation assocaited\r\n * @return {Element} An Element that is only visible to screen readers\r\n */\r\nexport default function createScreenReaderOnly(content, annotationId) {\r\n let node = document.createElement('div');\r\n let text = document.createTextNode(content);\r\n node.appendChild(text);\r\n node.setAttribute('id', `pdf-annotate-screenreader-${annotationId}`);\r\n node.style.position = 'absolute';\r\n node.style.left = '-10000px';\r\n node.style.top = 'auto';\r\n node.style.width = '1px';\r\n node.style.height = '1px';\r\n node.style.overflow = 'hidden';\r\n return node;\r\n}\r\n","import config from '../config';\r\nimport {\r\n pointIntersectsRect,\r\n scaleUp,\r\n scaleDown\r\n} from '../UI/utils';\r\n\r\n/**\r\n * Insert an element at a point within the document.\r\n * This algorithm will only insert within an element amidst it's text content.\r\n *\r\n * @param {Element} el The element to be inserted\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Number} pageNumber The page number to limit elements to\r\n * @param {Boolean} insertBefore Whether the element is to be inserted before or after x\r\n * @return {Boolean} True if element was able to be inserted, otherwise false\r\n */\r\nexport default function insertElementWithinElement(el, x, y, pageNumber, insertBefore) {\r\n const OFFSET_ADJUST = 2;\r\n\r\n // If inserting before adjust `x` by looking for element a few px to the right\r\n // Otherwise adjust a few px to the left\r\n // This is to allow a little tolerance by searching within the box, instead\r\n // of getting a false negative by testing right on the border.\r\n x = Math.max(x + (OFFSET_ADJUST * (insertBefore ? 1 : -1)), 0);\r\n\r\n let node = textLayerElementFromPoint(x, y + OFFSET_ADJUST, pageNumber);\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n // Now that node has been found inverse the adjustment for `x`.\r\n // This is done to accomodate tolerance by cutting off on the outside of the\r\n // text boundary, instead of missing a character by cutting off within.\r\n x = x + (OFFSET_ADJUST * (insertBefore ? -1 : 1));\r\n\r\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\r\n let left = scaleDown(svg, {left: node.getBoundingClientRect().left}).left - svg.getBoundingClientRect().left;\r\n let temp = node.cloneNode(true);\r\n let head = temp.innerHTML.split('');\r\n let tail = [];\r\n\r\n // Insert temp off screen\r\n temp.style.position = 'absolute';\r\n temp.style.top = '-10000px';\r\n temp.style.left = '-10000px';\r\n document.body.appendChild(temp);\r\n\r\n while (head.length) {\r\n // Don't insert within HTML tags\r\n if (head[head.length - 1] === '>') {\r\n while (head.length) {\r\n tail.unshift(head.pop());\r\n if (tail[0] === '<') {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Check if width of temp based on current head value satisfies x\r\n temp.innerHTML = head.join('');\r\n let width = scaleDown(svg, {width: temp.getBoundingClientRect().width}).width;\r\n if (left + width <= x) {\r\n break;\r\n }\r\n tail.unshift(head.pop());\r\n }\r\n\r\n // Update original node with new markup, including element to be inserted\r\n node.innerHTML = head.join('') + el.outerHTML + tail.join('');\r\n temp.parentNode.removeChild(temp);\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Get a text layer element at a given point on a page\r\n *\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Number} pageNumber The page to limit elements to\r\n * @return {Element} First text layer element found at the point\r\n */\r\nfunction textLayerElementFromPoint(x, y, pageNumber) {\r\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\r\n let rect = svg.getBoundingClientRect();\r\n y = scaleUp(svg, {y}).y + rect.top;\r\n x = scaleUp(svg, {x}).x + rect.left;\r\n return [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' [data-canvas-width]')].filter((el) => {\r\n return pointIntersectsRect(x, y, el.getBoundingClientRect());\r\n })[0];\r\n}\r\n","import config from '../config';\r\nimport insertElementWithinElement from './insertElementWithinElement';\r\nimport { pointIntersectsRect, scaleUp } from '../UI/utils';\r\n\r\n/**\r\n * Insert an element at a point within the document.\r\n * This algorithm will try to insert between elements if possible.\r\n * It will however use `insertElementWithinElement` if it is more accurate.\r\n *\r\n * @param {Element} el The element to be inserted\r\n * @param {Number} x The x coordinate of the point\r\n * @param {Number} y The y coordinate of the point\r\n * @param {Number} pageNumber The page number to limit elements to\r\n * @return {Boolean} True if element was able to be inserted, otherwise false\r\n */\r\nexport default function insertElementWithinChildren(el, x, y, pageNumber) {\r\n // Try and use most accurate method of inserting within an element\r\n if (insertElementWithinElement(el, x, y, pageNumber, true)) {\r\n return true;\r\n }\r\n\r\n // Fall back to inserting between elements\r\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\r\n let rect = svg.getBoundingClientRect();\r\n let nodes = [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' > div')];\r\n\r\n y = scaleUp(svg, {y}).y + rect.top;\r\n x = scaleUp(svg, {x}).x + rect.left;\r\n\r\n // Find the best node to insert before\r\n for (let i = 0, l = nodes.length; i < l; i++) {\r\n let n = nodes[i];\r\n let r = n.getBoundingClientRect();\r\n if (y <= r.top) {\r\n n.parentNode.insertBefore(el, n);\r\n return true;\r\n }\r\n }\r\n\r\n // If all else fails try to append to the bottom\r\n let textLayer = svg.parentNode.querySelector(config.textClassQuery());\r\n if (textLayer) {\r\n let textRect = textLayer.getBoundingClientRect();\r\n if (pointIntersectsRect(x, y, textRect)) {\r\n textLayer.appendChild(el);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n","/**\r\n * Insert a comment into the DOM to be available by screen reader\r\n *\r\n * @param {Object} comment The comment to be inserted\r\n */\r\nexport default function insertScreenReaderComment(comment) {\r\n if (!comment) {\r\n return;\r\n }\r\n\r\n let list = document.querySelector(`#pdf-annotate-screenreader-${comment.annotation} ol`);\r\n if (list) {\r\n let item = document.createElement('li');\r\n item.setAttribute('id', `pdf-annotate-screenreader-comment-${comment.uuid}`);\r\n item.appendChild(document.createTextNode(`${comment.content}`));\r\n list.appendChild(item);\r\n }\r\n}\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport insertScreenReaderComment from './insertScreenReaderComment';\r\n\r\n/**\r\n * Insert the comments into the DOM to be available by screen reader\r\n *\r\n * Example output:\r\n *
\r\n *
Begin highlight 1
\r\n *
    \r\n *
  1. Foo
  2. \r\n *
  3. Bar
  4. \r\n *
  5. Baz
  6. \r\n *
  7. Qux
  8. \r\n *
\r\n *
\r\n *
Some highlighted text goes here...
\r\n *
End highlight 1
\r\n *\r\n * NOTE: `screenReaderOnly` is not a real class, just used for brevity\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} annotationId The ID of the annotation\r\n * @param {Array} [comments] Optionally preloaded comments to be rendered\r\n * @return {Promise} Promise that once has comments, render them for screen reader\r\n */\r\nexport default function renderScreenReaderComments(documentId, annotationId, comments) {\r\n let promise;\r\n\r\n if (Array.isArray(comments)) {\r\n promise = Promise.resolve(comments);\r\n }\r\n else {\r\n promise = PDFJSAnnotate.getStoreAdapter().getComments(documentId, annotationId);\r\n }\r\n\r\n return promise.then((comments) => {\r\n // Node needs to be found by querying DOM as it may have been inserted as innerHTML\r\n // leaving `screenReaderNode` as an invalid reference (see `insertElementWithinElement`).\r\n let node = document.getElementById(`pdf-annotate-screenreader-${annotationId}`);\r\n if (node) {\r\n let list = document.createElement('ol');\r\n list.setAttribute('id', `pdf-annotate-screenreader-comment-list-${annotationId}`);\r\n list.setAttribute('aria-label', 'Comments');\r\n node.appendChild(list);\r\n comments.forEach(insertScreenReaderComment);\r\n }\r\n });\r\n}\r\n","import createScreenReaderOnly from './createScreenReaderOnly';\r\nimport insertElementWithinChildren from './insertElementWithinChildren';\r\nimport insertElementWithinElement from './insertElementWithinElement';\r\nimport renderScreenReaderComments from './renderScreenReaderComments';\r\n\r\n// Annotation types that support comments\r\nconst COMMENT_TYPES = ['highlight', 'point', 'area', 'circle', 'emptycircle', 'fillcircle'];\r\n\r\n/**\r\n * Insert a hint into the DOM for screen readers for a specific annotation.\r\n *\r\n * @param {Object} annotation The annotation to insert a hint for\r\n * @param {Number} num The number of the annotation out of all annotations of the same type\r\n */\r\nexport default function insertScreenReaderHint(annotation, num = 0) {\r\n switch (annotation.type) {\r\n case 'highlight':\r\n case 'strikeout':\r\n let rects = annotation.rectangles;\r\n let first = rects[0];\r\n let last = rects[rects.length - 1];\r\n\r\n insertElementWithinElement(\r\n createScreenReaderOnly(`Begin ${annotation.type} annotation ${num}`, annotation.uuid),\r\n first.x, first.y, annotation.page, true\r\n );\r\n\r\n insertElementWithinElement(\r\n createScreenReaderOnly(`End ${annotation.type} annotation ${num}`, `${annotation.uuid}-end`),\r\n last.x + last.width, last.y, annotation.page, false\r\n );\r\n break;\r\n\r\n case 'textbox':\r\n case 'point':\r\n let text = annotation.type === 'textbox' ? ` (content: ${annotation.content})` : '';\r\n\r\n insertElementWithinChildren(\r\n createScreenReaderOnly(`${annotation.type} annotation ${num}${text}`, annotation.uuid),\r\n annotation.x, annotation.y, annotation.page\r\n );\r\n break;\r\n\r\n case 'drawing':\r\n case 'area':\r\n let x = typeof annotation.x !== 'undefined' ? annotation.x : annotation.lines[0][0];\r\n let y = typeof annotation.y !== 'undefined' ? annotation.y : annotation.lines[0][1];\r\n\r\n insertElementWithinChildren(\r\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\r\n x, y, annotation.page\r\n );\r\n break;\r\n\r\n case 'circle':\r\n case 'fillcircle':\r\n case 'emptycircle':\r\n let x2 = typeof annotation.cx !== 'undefined' ? annotation.cx : annotation.lines[0][0];\r\n let y2 = typeof annotation.cy !== 'undefined' ? annotation.cy : annotation.lines[0][1];\r\n\r\n insertElementWithinChildren(\r\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\r\n x2, y2, annotation.page\r\n );\r\n break;\r\n }\r\n\r\n // Include comments in screen reader hint\r\n if (COMMENT_TYPES.includes(annotation.type)) {\r\n renderScreenReaderComments(annotation.documentId, annotation.uuid);\r\n }\r\n}\r\n","import renderScreenReaderHints from './renderScreenReaderHints';\r\nimport insertScreenReaderComment from './insertScreenReaderComment';\r\nimport renderScreenReaderComments from './renderScreenReaderComments';\r\nimport { addEventListener } from '../UI/event';\r\nimport PDFJSAnnotate from '../PDFJSAnnotate';\r\n\r\n/**\r\n * Initialize the event handlers for keeping screen reader hints synced with data\r\n */\r\nexport default function initEventHandlers() {\r\n addEventListener('annotation:add', (documentId, pageNumber, annotation) => {\r\n reorderAnnotationsByType(documentId, pageNumber, annotation.type);\r\n });\r\n addEventListener('annotation:edit', (documentId, annotationId, annotation) => {\r\n reorderAnnotationsByType(documentId, annotation.page, annotation.type);\r\n });\r\n addEventListener('annotation:delete', removeAnnotation);\r\n addEventListener('comment:add', insertComment);\r\n addEventListener('comment:delete', removeComment);\r\n}\r\n\r\n/**\r\n * Reorder the annotation numbers by annotation type\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {Number} pageNumber The page number of the annotations\r\n * @param {Strig} type The annotation type\r\n */\r\nfunction reorderAnnotationsByType(documentId, pageNumber, type) {\r\n PDFJSAnnotate.getStoreAdapter().getAnnotations(documentId, pageNumber)\r\n .then((annotations) => {\r\n return annotations.annotations.filter((a) => {\r\n return a.type === type;\r\n });\r\n })\r\n .then((annotations) => {\r\n annotations.forEach((a) => {\r\n removeAnnotation(documentId, a.uuid);\r\n });\r\n\r\n return annotations;\r\n })\r\n .then(renderScreenReaderHints);\r\n}\r\n\r\n/**\r\n * Remove the screen reader hint for an annotation\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} annotationId The Id of the annotation\r\n */\r\nfunction removeAnnotation(documentId, annotationId) {\r\n removeElementById(`pdf-annotate-screenreader-${annotationId}`);\r\n removeElementById(`pdf-annotate-screenreader-${annotationId}-end`);\r\n}\r\n\r\n/**\r\n * Insert a screen reader hint for a comment\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} annotationId The ID of tha assocated annotation\r\n * @param {Object} comment The comment to insert a hint for\r\n */\r\nfunction insertComment(documentId, annotationId, comment) {\r\n let list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\r\n let promise;\r\n\r\n if (!list) {\r\n promise = renderScreenReaderComments(documentId, annotationId, []).then(() => {\r\n list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\r\n return true;\r\n });\r\n }\r\n else {\r\n promise = Promise.resolve(true);\r\n }\r\n\r\n promise.then(() => {\r\n insertScreenReaderComment(comment);\r\n });\r\n}\r\n\r\n/**\r\n * Remove a screen reader hint for a comment\r\n *\r\n * @param {String} documentId The ID of the document\r\n * @param {String} commentId The ID of the comment\r\n */\r\nfunction removeComment(documentId, commentId) {\r\n removeElementById(`pdf-annotate-screenreader-comment-${commentId}`);\r\n}\r\n\r\n/**\r\n * Remove an element from the DOM by it's ID if it exists\r\n *\r\n * @param {String} elementId The ID of the element to be removed\r\n */\r\nfunction removeElementById(elementId) {\r\n let el = document.getElementById(elementId);\r\n if (el) {\r\n el.parentNode.removeChild(el);\r\n }\r\n}\r\n","import insertScreenReaderHint from './insertScreenReaderHint';\r\nimport initEventHandlers from './initEventHandlers';\r\n\r\n// TODO This is not the right place for this to live\r\ninitEventHandlers();\r\n\r\n/**\r\n * Insert hints into the DOM for screen readers.\r\n *\r\n * @param {Array} annotations The annotations that hints are inserted for\r\n */\r\nexport default function renderScreenReaderHints(annotations) {\r\n annotations = Array.isArray(annotations) ? annotations : [];\r\n\r\n // Insert hints for each type\r\n Object.keys(SORT_TYPES).forEach((type) => {\r\n let sortBy = SORT_TYPES[type];\r\n annotations\r\n .filter((a) => a.type === type)\r\n .sort(sortBy)\r\n .forEach((a, i) => insertScreenReaderHint(a, i + 1));\r\n });\r\n}\r\n\r\n// Sort annotations first by y, then by x.\r\n// This allows hints to be injected in the order they appear,\r\n// which makes numbering them easier.\r\nfunction sortByPoint(a, b) {\r\n if (a.y < b.y) {\r\n return a.x - b.x;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\n\r\n// Sort annotation by it's first rectangle\r\nfunction sortByRectPoint(a, b) {\r\n return sortByPoint(a.rectangles[0], b.rectangles[0]);\r\n}\r\n\r\n// Sort annotation by it's first line\r\nfunction sortByLinePoint(a, b) {\r\n let lineA = a.lines[0];\r\n let lineB = b.lines[0];\r\n return sortByPoint(\r\n {x: lineA[0], y: lineA[1]},\r\n {x: lineB[0], y: lineB[1]}\r\n );\r\n}\r\n\r\n// Arrange supported types and associated sort methods\r\nconst SORT_TYPES = {\r\n 'highlight': sortByRectPoint,\r\n 'strikeout': sortByRectPoint,\r\n 'drawing': sortByLinePoint,\r\n 'textbox': sortByPoint,\r\n 'point': sortByPoint,\r\n 'area': sortByPoint\r\n};\r\n\r\n","import PDFJSAnnotate from '../PDFJSAnnotate';\r\nimport config from '../config';\r\nimport renderScreenReaderHints from '../a11y/renderScreenReaderHints';\r\n\r\n// Template for creating a new page\r\nconst PAGE_TEMPLATE = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n`;\r\n\r\n/**\r\n * Create a new page to be appended to the DOM.\r\n *\r\n * @param {Number} pageNumber The page number that is being created\r\n * @return {HTMLElement}\r\n */\r\nexport function createPage(pageNumber) {\r\n let temp = document.createElement('div');\r\n temp.innerHTML = PAGE_TEMPLATE;\r\n\r\n let page = temp.children[0];\r\n let canvas = page.querySelector('canvas');\r\n\r\n page.setAttribute('id', `pageContainer${pageNumber}`);\r\n page.setAttribute('data-page-number', pageNumber);\r\n\r\n canvas.mozOpaque = true;\r\n canvas.setAttribute('id', `page${pageNumber}`);\r\n\r\n return page;\r\n}\r\n\r\n/**\r\n * Render a page that has already been created.\r\n *\r\n * @param {Number} pageNumber The page number to be rendered\r\n * @param {Object} renderOptions The options for rendering\r\n * @return {Promise} Settled once rendering has completed\r\n * A settled Promise will be either:\r\n * - fulfilled: [pdfPage, annotations]\r\n * - rejected: Error\r\n */\r\nexport function renderPage(pageNumber, renderOptions) {\r\n let {\r\n documentId,\r\n pdfDocument,\r\n scale,\r\n rotate\r\n } = renderOptions;\r\n\r\n const eventBus = new pdfjsViewer.EventBus();\r\n\r\n // Load the page and annotations\r\n return Promise.all([\r\n pdfDocument.getPage(pageNumber),\r\n PDFJSAnnotate.getAnnotations(documentId, pageNumber)\r\n ]).then(([pdfPage, annotations]) => {\r\n let page = document.getElementById(`pageContainer${pageNumber}`);\r\n let svg = page.querySelector(config.annotationClassQuery());\r\n let canvas = page.querySelector('.canvasWrapper canvas');\r\n let canvasContext = canvas.getContext('2d', {alpha: false});\r\n let totalRotation = (rotate + pdfPage.rotate) % 360;\r\n let viewport = pdfPage.getViewport({scale: scale, rotation: totalRotation});\r\n let transform = scalePage(pageNumber, viewport, canvasContext);\r\n\r\n // Render the page\r\n return Promise.all([\r\n pdfPage.render({ canvasContext, viewport, transform }).promise,\r\n PDFJSAnnotate.render(svg, viewport, annotations)\r\n ]).then(() => {\r\n // Text content is needed for a11y, but is also necessary for creating\r\n // highlight and strikeout annotations which require selecting text.\r\n return pdfPage.getTextContent({normalizeWhitespace: true}).then((textContent) => {\r\n return new Promise((resolve, reject) => {\r\n // Render text layer for a11y of text content\r\n let textLayer = page.querySelector(config.textClassQuery());\r\n let textLayerFactory = new pdfjsViewer.DefaultTextLayerFactory();\r\n let textLayerBuilder = textLayerFactory.createTextLayerBuilder(\r\n textLayer,\r\n pageNumber - 1,\r\n viewport,\r\n false,\r\n eventBus\r\n );\r\n textLayerBuilder.setTextContent(textContent);\r\n textLayerBuilder.render();\r\n\r\n // Enable a11y for annotations\r\n // Timeout is needed to wait for `textLayerBuilder.render`\r\n setTimeout(() => {\r\n try {\r\n renderScreenReaderHints(annotations.annotations);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n });\r\n }).then(() => {\r\n // Indicate that the page was loaded\r\n page.setAttribute('data-loaded', 'true');\r\n\r\n return [pdfPage, annotations];\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Scale the elements of a page.\r\n *\r\n * @param {Number} pageNumber The page number to be scaled\r\n * @param {Object} viewport The viewport of the PDF page (see pdfPage.getViewport(scale, rotate))\r\n * @param {Object} context The canvas context that the PDF page is rendered to\r\n * @return {Array} The transform data for rendering the PDF page\r\n */\r\nfunction scalePage(pageNumber, viewport, context) {\r\n let page = document.getElementById(`pageContainer${pageNumber}`);\r\n let canvas = page.querySelector('.canvasWrapper canvas');\r\n let svg = page.querySelector(config.annotationClassQuery());\r\n let wrapper = page.querySelector('.canvasWrapper');\r\n let textLayer = page.querySelector(config.textClassQuery());\r\n let outputScale = getOutputScale(context);\r\n let transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\r\n let sfx = approximateFraction(outputScale.sx);\r\n let sfy = approximateFraction(outputScale.sy);\r\n\r\n // Adjust width/height for scale\r\n page.style.visibility = '';\r\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\r\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\r\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px';\r\n canvas.style.height = roundToDivide(viewport.height, sfx[1]) + 'px';\r\n svg.setAttribute('width', viewport.width);\r\n svg.setAttribute('height', viewport.height);\r\n svg.style.width = `${viewport.width}px`;\r\n svg.style.height = `${viewport.height}px`;\r\n page.style.width = `${viewport.width}px`;\r\n page.style.height = `${viewport.height}px`;\r\n wrapper.style.width = `${viewport.width}px`;\r\n wrapper.style.height = `${viewport.height}px`;\r\n textLayer.style.width = `${viewport.width}px`;\r\n textLayer.style.height = `${viewport.height}px`;\r\n\r\n return transform;\r\n}\r\n\r\n/**\r\n * Approximates a float number as a fraction using Farey sequence (max order of 8).\r\n *\r\n * @param {Number} x Positive float number\r\n * @return {Array} Estimated fraction: the first array item is a numerator,\r\n * the second one is a denominator.\r\n */\r\nfunction approximateFraction(x) {\r\n // Fast path for int numbers or their inversions.\r\n if (Math.floor(x) === x) {\r\n return [x, 1];\r\n }\r\n\r\n const xinv = 1 / x;\r\n const limit = 8;\r\n if (xinv > limit) {\r\n return [1, limit];\r\n }\r\n else if (Math.floor(xinv) === xinv) {\r\n return [1, xinv];\r\n }\r\n\r\n const x_ = x > 1 ? xinv : x;\r\n\r\n // a/b and c/d are neighbours in Farey sequence.\r\n let a = 0; let b = 1; let c = 1; let d = 1;\r\n\r\n // Limit search to order 8.\r\n while (true) {\r\n // Generating next term in sequence (order of q).\r\n let p = a + c; let q = b + d;\r\n if (q > limit) {\r\n break;\r\n }\r\n if (x_ <= p / q) {\r\n c = p; d = q;\r\n }\r\n else {\r\n a = p; b = q;\r\n }\r\n }\r\n\r\n // Select closest of neighbours to x.\r\n if (x_ - a / b < c / d - x_) {\r\n return x_ === x ? [a, b] : [b, a];\r\n }\r\n else {\r\n return x_ === x ? [c, d] : [d, c];\r\n }\r\n}\r\n\r\nfunction getOutputScale(ctx) {\r\n let devicePixelRatio = window.devicePixelRatio || 1;\r\n let backingStoreRatio = ctx.webkitBackingStorePixelRatio ||\r\n ctx.mozBackingStorePixelRatio ||\r\n ctx.msBackingStorePixelRatio ||\r\n ctx.oBackingStorePixelRatio ||\r\n ctx.backingStorePixelRatio || 1;\r\n let pixelRatio = devicePixelRatio / backingStoreRatio;\r\n return {\r\n sx: pixelRatio,\r\n sy: pixelRatio,\r\n scaled: pixelRatio !== 1\r\n };\r\n}\r\n\r\nfunction roundToDivide(x, div) {\r\n let r = x % div;\r\n return r === 0 ? x : Math.round(x - r + div);\r\n}\r\n","import { addEventListener, removeEventListener, fireEvent } from './event';\r\nimport { disableEdit, enableEdit } from './edit';\r\nimport { disablePen, enablePen, setPen } from './pen';\r\nimport { disableArrow, enableArrow, setArrow } from './arrow';\r\nimport { disableEraser, enableEraser } from './eraser';\r\nimport { disablePoint, enablePoint } from './point';\r\nimport { disableRect, enableRect } from './rect';\r\nimport { disableCircle, enableCircle, setCircle, addCircle } from './circle';\r\nimport { disableText, enableText, setText } from './text';\r\nimport { createPage, renderPage } from './page';\r\n\r\nexport default {\r\n addEventListener,\r\n removeEventListener,\r\n fireEvent,\r\n\r\n disableEdit,\r\n enableEdit,\r\n\r\n disablePen,\r\n enablePen,\r\n setPen,\r\n\r\n disablePoint,\r\n enablePoint,\r\n\r\n disableRect,\r\n enableRect,\r\n\r\n disableCircle,\r\n enableCircle,\r\n setCircle,\r\n addCircle,\r\n\r\n disableArrow,\r\n enableArrow,\r\n setArrow,\r\n\r\n disableEraser,\r\n enableEraser,\r\n\r\n disableText,\r\n enableText,\r\n setText,\r\n\r\n createPage,\r\n renderPage\r\n};\r\n","import StoreAdapter from './adapter/StoreAdapter';\r\nimport LocalStoreAdapter from './adapter/LocalStoreAdapter';\r\nimport LocalUserStoreAdapter from './adapter/LocalUserStoreAdapter';\r\nimport render from './render';\r\nimport UI from './UI';\r\nimport config from './config';\r\nimport uuid from './utils/uuid';\r\nimport {\r\n findAnnotationAtPoint,\r\n findSVGContainer,\r\n convertToScreenPoint\r\n} from './UI/utils';\r\n\r\nexport default {\r\n findAnnotationAtPoint,\r\n findSVGContainer,\r\n convertToScreenPoint,\r\n\r\n /**\r\n * Abstract class that needs to be defined so PDFJSAnnotate\r\n * knows how to communicate with your server.\r\n */\r\n StoreAdapter,\r\n\r\n /**\r\n * Implementation of StoreAdapter that stores annotation data to localStorage.\r\n */\r\n LocalStoreAdapter,\r\n\r\n /**\r\n * Implementation of StoreAdapter that stores annotation data to localStorage particular\r\n * to a specific user\r\n */\r\n LocalUserStoreAdapter,\r\n\r\n /**\r\n * Abstract instance of StoreAdapter\r\n */\r\n __storeAdapter: new StoreAdapter(),\r\n\r\n /**\r\n * Getter for the underlying StoreAdapter property\r\n *\r\n * @return {StoreAdapter}\r\n */\r\n getStoreAdapter() {\r\n return this.__storeAdapter;\r\n },\r\n\r\n /**\r\n * Setter for the underlying StoreAdapter property\r\n *\r\n * @param {StoreAdapter} adapter The StoreAdapter implementation to be used.\r\n */\r\n setStoreAdapter(adapter) {\r\n // TODO this throws an error when bundled\r\n // if (!(adapter instanceof StoreAdapter)) {\r\n // throw new Error('adapter must be an instance of StoreAdapter');\r\n // }\r\n\r\n this.__storeAdapter = adapter;\r\n },\r\n\r\n /**\r\n * UI is a helper for instrumenting UI interactions for creating,\r\n * editing, and deleting annotations in the browser.\r\n */\r\n UI,\r\n\r\n /**\r\n * Render the annotations for a page in the PDF Document\r\n *\r\n * @param {SVGElement} svg The SVG element that annotations should be rendered to\r\n * @param {PageViewport} viewport The PDFPage.getViewport data\r\n * @param {Object} data The StoreAdapter.getAnnotations data\r\n * @return {Promise}\r\n */\r\n render,\r\n\r\n /**\r\n * Convenience method for getting annotation data\r\n *\r\n * @alias StoreAdapter.getAnnotations\r\n * @param {String} documentId The ID of the document\r\n * @param {String} pageNumber The page number\r\n * @return {Promise}\r\n */\r\n getAnnotations(documentId, pageNumber) {\r\n return this.getStoreAdapter().getAnnotations(...arguments);\r\n },\r\n\r\n config,\r\n\r\n uuid\r\n};\r\n","import { appendChild, transformChild } from './appendChild';\r\n\r\n/**\r\n * Render the response from PDFJSAnnotate.getStoreAdapter().getAnnotations to SVG\r\n *\r\n * @param {SVGElement} svg The SVG element to render the annotations to\r\n * @param {Object} viewport The page viewport data\r\n * @param {Object} data The response from PDFJSAnnotate.getStoreAdapter().getAnnotations\r\n * @return {Promise} Settled once rendering has completed\r\n * A settled Promise will be either:\r\n * - fulfilled: SVGElement\r\n * - rejected: Error\r\n */\r\nexport default function render(svg, viewport, data) {\r\n return new Promise((resolve, reject) => {\r\n // Reset the content of the SVG\r\n svg.setAttribute('data-pdf-annotate-container', true);\r\n svg.setAttribute('data-pdf-annotate-viewport', JSON.stringify(viewport));\r\n svg.removeAttribute('data-pdf-annotate-document');\r\n svg.removeAttribute('data-pdf-annotate-page');\r\n\r\n // If there's no data nothing can be done\r\n if (!data) {\r\n svg.innerHTML = '';\r\n return resolve(svg);\r\n }\r\n\r\n svg.setAttribute('data-pdf-annotate-document', data.documentId);\r\n svg.setAttribute('data-pdf-annotate-page', data.pageNumber);\r\n\r\n // Make sure annotations is an array\r\n if (!Array.isArray(data.annotations) || data.annotations.length === 0) {\r\n return resolve(svg);\r\n }\r\n\r\n // Append or transform annotation to svg\r\n data.annotations.forEach((a) => {\r\n let node = svg.querySelector('[data-pdf-annotate-id=\"' + a.uuid + '\"]');\r\n if (node) {\r\n transformChild(svg, node, viewport);\r\n }\r\n else {\r\n appendChild(svg, a, viewport);\r\n }\r\n });\r\n\r\n resolve(svg);\r\n });\r\n}\r\n","import PDFJSAnnotate from './src/PDFJSAnnotate';\r\n\r\nexport default PDFJSAnnotate;\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"pdf-annotate.min.js","mappings":"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","sources":["webpack://PDFAnnotate/webpack/universalModuleDefinition","webpack://PDFAnnotate/./node_modules/events/events.js","webpack://PDFAnnotate/webpack/bootstrap","webpack://PDFAnnotate/webpack/runtime/compat get default export","webpack://PDFAnnotate/webpack/runtime/define property getters","webpack://PDFAnnotate/webpack/runtime/hasOwnProperty shorthand","webpack://PDFAnnotate/webpack/runtime/make namespace object","webpack://PDFAnnotate/./src/utils/abstractFunction.js","webpack://PDFAnnotate/./src/utils/setAttributes.js","webpack://PDFAnnotate/./src/utils/normalizeColor.js","webpack://PDFAnnotate/./src/render/renderPoint.js","webpack://PDFAnnotate/./src/render/renderRect.js","webpack://PDFAnnotate/./src/render/renderText.js","webpack://PDFAnnotate/./src/render/renderCircle.js","webpack://PDFAnnotate/./src/utils/mathUtils.js","webpack://PDFAnnotate/./src/render/renderArrow.js","webpack://PDFAnnotate/./src/render/appendChild.js","webpack://PDFAnnotate/./src/render/renderLine.js","webpack://PDFAnnotate/./src/render/renderPath.js","webpack://PDFAnnotate/./src/UI/utils.js","webpack://PDFAnnotate/./src/UI/event.js","webpack://PDFAnnotate/./src/adapter/StoreAdapter.js","webpack://PDFAnnotate/./src/utils/uuid.js","webpack://PDFAnnotate/./src/adapter/LocalStoreAdapter.js","webpack://PDFAnnotate/./src/adapter/LocalUserStoreAdapter.js","webpack://PDFAnnotate/./src/config.js","webpack://PDFAnnotate/./src/UI/edit.js","webpack://PDFAnnotate/./src/UI/pen.js","webpack://PDFAnnotate/./src/UI/arrow.js","webpack://PDFAnnotate/./src/UI/eraser.js","webpack://PDFAnnotate/./src/UI/point.js","webpack://PDFAnnotate/./src/UI/rect.js","webpack://PDFAnnotate/./src/UI/circle.js","webpack://PDFAnnotate/./src/UI/text.js","webpack://PDFAnnotate/./src/a11y/createScreenReaderOnly.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinElement.js","webpack://PDFAnnotate/./src/a11y/insertElementWithinChildren.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderComment.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderComments.js","webpack://PDFAnnotate/./src/a11y/insertScreenReaderHint.js","webpack://PDFAnnotate/./src/a11y/initEventHandlers.js","webpack://PDFAnnotate/./src/a11y/renderScreenReaderHints.js","webpack://PDFAnnotate/./src/UI/page.js","webpack://PDFAnnotate/./src/UI/index.js","webpack://PDFAnnotate/./src/PDFJSAnnotate.js","webpack://PDFAnnotate/./src/render/index.js","webpack://PDFAnnotate/./index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PDFAnnotate\"] = factory();\n\telse\n\t\troot[\"PDFAnnotate\"] = factory();\n})(self, () => {\nreturn ","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Throw an Error for an abstract function that hasn't been implemented.\n *\n * @param {String} name The name of the abstract function\n */\nexport default function abstractFunction(name) {\n throw new Error(name + ' is not implemented');\n}\n","const UPPER_REGEX = /[A-Z]/g;\n\n// Don't convert these attributes from camelCase to hyphenated-attributes\nconst BLACKLIST = [\n 'viewBox'\n];\n\nlet keyCase = (key) => {\n if (BLACKLIST.indexOf(key) === -1) {\n key = key.replace(UPPER_REGEX, match => '-' + match.toLowerCase());\n }\n return key;\n};\n\n/**\n * Set attributes for a node from a map\n *\n * @param {Node} node The node to set attributes on\n * @param {Object} attributes The map of key/value pairs to use for attributes\n */\nexport default function setAttributes(node, attributes) {\n Object.keys(attributes).forEach((key) => {\n node.setAttribute(keyCase(key), attributes[key]);\n });\n}\n","const REGEX_HASHLESS_HEX = /^([a-f0-9]{6}|[a-f0-9]{3})$/i;\n\n/**\n * Normalize a color value\n *\n * @param {String} color The color to normalize\n * @return {String}\n */\nexport default function normalizeColor(color) {\n if (REGEX_HASHLESS_HEX.test(color)) {\n color = `#${color}`;\n }\n return color;\n}\n","import setAttributes from '../utils/setAttributes';\n\nconst SIZE = 25;\nconst D = 'M499.968 214.336q-113.832 0 -212.877 38.781t-157.356 104.625 -58.311 142.29q0 62.496 39.897 119.133t112.437 97.929l48.546 27.9 -15.066 53.568q-13.392 50.778 -39.06 95.976 84.816 -35.154 153.45 -95.418l23.994 -21.204 31.806 3.348q38.502 4.464 72.54 4.464 113.832 0 212.877 -38.781t157.356 -104.625 58.311 -142.29 -58.311 -142.29 -157.356 -104.625 -212.877 -38.781z';\n\n/**\n * Create SVGElement from an annotation definition.\n * This is used for anntations of type `comment`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGElement} A svg to be rendered\n */\nexport default function renderPoint(a) {\n let outerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n let innerSVG = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\n setAttributes(outerSVG, {\n width: SIZE,\n height: SIZE,\n x: a.x,\n y: a.y\n });\n\n setAttributes(innerSVG, {\n width: SIZE,\n height: SIZE,\n x: 0,\n y: (SIZE * 0.05) * -1,\n viewBox: '0 0 1000 1000'\n });\n\n setAttributes(rect, {\n width: SIZE,\n height: SIZE,\n stroke: '#000',\n fill: '#ff0'\n });\n\n setAttributes(path, {\n d: D,\n strokeWidth: 50,\n stroke: '#000',\n fill: '#fff'\n });\n\n innerSVG.appendChild(path);\n outerSVG.appendChild(rect);\n outerSVG.appendChild(innerSVG);\n\n return outerSVG;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGRectElements from an annotation definition.\n * This is used for anntations of type `area` and `highlight`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGGElement|SVGRectElement} A group of all rects to be rendered\n */\nexport default function renderRect(a) {\n if (a.type === 'highlight') {\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n setAttributes(group, {\n fill: normalizeColor(a.color || '#ff0'),\n fillOpacity: 0.2\n });\n\n a.rectangles.forEach((r) => {\n group.appendChild(createRect(r));\n });\n\n return group;\n }\n else {\n let rect = createRect(a);\n setAttributes(rect, {\n stroke: normalizeColor(a.color || '#f00'),\n fill: 'none'\n });\n\n return rect;\n }\n}\n\nfunction createRect(r) {\n let rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\n setAttributes(rect, {\n x: r.x,\n y: r.y,\n width: r.width,\n height: r.height\n });\n\n return rect;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Wrap each line of given text in a `` element and append these\n * lines to the given SVGTextElement\n *\n * @param {SVGTextElement} textElement A text element to hold the split text\n * @param {String} textContent String to render with line breaks\n */\nfunction insertLineBreaks(textElement, textContent) {\n const lines = (textContent || '').split('\\n');\n // can't use dy attribute here since we want empty lines to take up space as well,\n // so we will update y manually based on font size\n const x = textElement.getAttribute('x');\n let y = Number(textElement.getAttribute('y'));\n const size = Number(textElement.getAttribute('font-size'));\n for (const line of lines) {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('y', y.toString());\n tspan.setAttribute('x', x);\n tspan.innerHTML = line;\n textElement.appendChild(tspan);\n\n y += size;\n }\n}\n\n/**\n * Create SVGTextElement from an annotation definition.\n * This is used for anntations of type `textbox`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGTextElement} A text to be rendered\n */\nexport default function renderText(a) {\n // Text should be rendered at 0 degrees relative to\n // document rotation\n let text = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n setAttributes(text, {\n x: a.x,\n y: a.y,\n fill: normalizeColor(a.color || '#000'),\n fontSize: a.size,\n transform: `rotate(${a.rotation})`,\n style: 'white-space: pre'\n });\n\n insertLineBreaks(text, a.content);\n\n let g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n g.appendChild(text);\n\n return g;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create an SVGCircleElement from an annotation definition.\n * This is used for annotations of type `circle`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGGElement|SVGCircleElement} A circle to be rendered\n */\nexport default function renderCircle(a) {\n let circle = createCircle(a);\n let color = normalizeColor(a.color || '#f00');\n\n if (a.type === 'circle') {\n setAttributes(circle, {\n stroke: color,\n fill: 'none',\n 'stroke-width': 5\n });\n }\n if (a.type === 'emptycircle') {\n setAttributes(circle, {\n stroke: color,\n fill: 'none',\n 'stroke-width': 2\n });\n }\n\n if (a.type === 'fillcircle') {\n setAttributes(circle, {\n stroke: color,\n fill: color,\n 'stroke-width': 5\n });\n }\n\n return circle;\n}\n\nfunction createCircle(a) {\n let circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n setAttributes(circle, {\n cx: a.cx,\n cy: a.cy,\n r: a.r\n });\n\n return circle;\n}\n","// Transform point by matrix\n//\nexport function applyTransform(p, m) {\n return [\n p[0] * m[0] + p[1] * m[2] + m[4],\n p[0] * m[1] + p[1] * m[3] + m[5]\n ];\n};\n\n// Transform point by matrix inverse\n//\nexport function applyInverseTransform(p, m) {\n let d = m[0] * m[3] - m[1] * m[2];\n return [\n (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d,\n (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d\n ];\n};\n\n// Concatenates two transformation matrices together and returns the result.\nexport function transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n};\n\nexport function translate(m, x, y) {\n return [\n m[0],\n m[1],\n m[2],\n m[3],\n m[0] * x + m[2] * y + m[4],\n m[1] * x + m[3] * y + m[5]\n ];\n};\n\nexport function rotate(m, angle) {\n angle = angle * Math.PI / 180;\n\n let cosValue = Math.cos(angle);\n let sinValue = Math.sin(angle);\n\n return [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * (-sinValue) + m[2] * cosValue,\n m[1] * (-sinValue) + m[3] * cosValue,\n m[4],\n m[5]\n ];\n};\n\nexport function scale(m, x, y) {\n return [\n m[0] * x,\n m[1] * x,\n m[2] * y,\n m[3] * y,\n m[4],\n m[5]\n ];\n};\n\nexport function makePoint(x, y, z) {\n return { x: x, y: y, z: z };\n};\n\nexport function makeVector(xcoord, ycoord, zcoord) {\n return { xcoord: xcoord, ycoord: ycoord, zcoord: zcoord };\n};\n\nexport function makeVectorFromPoints(pt1, pt2) {\n let xcoord = pt2.x - pt1.x;\n let ycoord = pt2.y - pt1.y;\n let zcoord = pt2.z - pt1.z;\n return makeVector(xcoord, ycoord, zcoord);\n};\n\nexport function addVector(pt, v) {\n return makePoint(pt.x + v.xcoord, pt.y + v.ycoord, pt.z + v.zcoord);\n};\n\nexport function multiplyVector(v, scalar) {\n return makeVector(v.xcoord * scalar, v.ycoord * scalar, v.zcoord * scalar);\n};\n\nexport function magnitude(v) {\n return Math.sqrt(\n Math.pow(v.xcoord, 2) + Math.pow(v.ycoord, 2) + Math.pow(v.zcoord, 2)\n );\n};\n\nexport function negateVector(v) {\n return multiplyVector(v, -1);\n};\n\nexport function unitVector(v) {\n let mag = magnitude(v);\n let xcoord = v.xcoord / mag;\n let ycoord = v.ycoord / mag;\n let zcoord = v.zcoord / mag;\n return makeVector(xcoord, ycoord, zcoord);\n};\n\nexport function crossProduct(u, v) {\n //\n // u X v = < u2*v3 - u3*v2,\n // u3*v1 - u1*v3,\n // u1*v2 - u2*v1 >\n let xcoord = u.ycoord * v.zcoord - u.zcoord * v.ycoord;\n let ycoord = u.zcoord * v.xcoord - u.xcoord * v.zcoord;\n let zcoord = u.xcoord * v.ycoord - u.ycoord * v.xcoord;\n return makeVector(xcoord, ycoord, zcoord);\n};\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\nimport {\n makePoint, makeVector, makeVectorFromPoints,\n magnitude, unitVector, crossProduct,\n addVector, multiplyVector, negateVector\n} from '../utils/mathUtils';\n\n/**\n * Create SVGPathElement from an annotation definition.\n * This is used for anntations of type `drawing`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGPathElement} The path to be rendered\n */\nexport default function renderArrow(a) {\n let arrow = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n\n if (a.lines.length === 2) {\n let p1 = a.lines[0];\n let p2 = a.lines[a.lines.length - 1];\n\n let arrowLength = 40;\n let pt0 = makePoint(p1[0], p1[1], 0);\n let pt1 = makePoint(p2[0], p2[1], 0);\n let x = makeVectorFromPoints(pt0, pt1);\n let unitX = unitVector(x);\n pt1 = addVector(pt0, multiplyVector(unitX, arrowLength));\n x = makeVectorFromPoints(pt0, pt1);\n let unitZ = makeVector(0, 0, 1);\n let unitY = unitVector(crossProduct(unitX, unitZ));\n let thickness = a.width || 10;\n\n let A = addVector(pt0, multiplyVector(unitY, thickness * 0.5));\n let B = addVector(A, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\n let C = addVector(B, multiplyVector(unitY, thickness));\n let D = pt1;\n let G = addVector(pt0, multiplyVector(negateVector(unitY), thickness * 0.5));\n let F = addVector(G, multiplyVector(unitX, magnitude(x) - thickness * 2.0));\n let E = addVector(F, multiplyVector(negateVector(unitY), thickness));\n\n let points = '' +\n A.x + ',' + A.y + ' ' +\n B.x + ',' + B.y + ' ' +\n C.x + ',' + C.y + ' ' +\n D.x + ',' + D.y + ' ' +\n E.x + ',' + E.y + ' ' +\n F.x + ',' + F.y + ' ' +\n G.x + ',' + G.y;\n\n setAttributes(arrow, {\n points: points,\n stroke: normalizeColor(a.color || '#000'),\n fill: normalizeColor(a.color || '#000')\n });\n }\n\n return arrow;\n}\n","import renderLine from './renderLine';\nimport renderPath from './renderPath';\nimport renderPoint from './renderPoint';\nimport renderRect from './renderRect';\nimport renderText from './renderText';\nimport renderCircle from './renderCircle';\nimport renderArrow from './renderArrow';\n\nconst isFirefox = /firefox/i.test(navigator.userAgent);\n\n/**\n * Get the x/y translation to be used for transforming the annotations\n * based on the rotation of the viewport.\n *\n * @param {Object} viewport The viewport data from the page\n * @return {Object}\n */\nexport function getTranslation(viewport) {\n let x;\n let y;\n\n // Modulus 360 on the rotation so that we only\n // have to worry about four possible values.\n switch (viewport.rotation % 360) {\n case 0:\n x = y = 0;\n break;\n case 90:\n x = 0;\n y = (viewport.width / viewport.scale) * -1;\n break;\n case 180:\n x = (viewport.width / viewport.scale) * -1;\n y = (viewport.height / viewport.scale) * -1;\n break;\n case 270:\n x = (viewport.height / viewport.scale) * -1;\n y = 0;\n break;\n }\n\n return { x, y };\n}\n\n/**\n * Transform the rotation and scale of a node using SVG's native transform attribute.\n *\n * @param {Node} node The node to be transformed\n * @param {Object} viewport The page's viewport data\n * @return {Node}\n */\nfunction transform(node, viewport) {\n let trans = getTranslation(viewport);\n\n // Let SVG natively transform the element\n node.setAttribute('transform', `scale(${viewport.scale}) rotate(${viewport.rotation}) translate(${trans.x}, ${trans.y})`);\n\n // Manually adjust x/y for nested SVG nodes\n if (!isFirefox && node.nodeName.toLowerCase() === 'svg') {\n node.setAttribute('x', parseInt(node.getAttribute('x'), 10) * viewport.scale);\n node.setAttribute('y', parseInt(node.getAttribute('y'), 10) * viewport.scale);\n\n let x = parseInt(node.getAttribute('x', 10));\n let y = parseInt(node.getAttribute('y', 10));\n let width = parseInt(node.getAttribute('width'), 10);\n let height = parseInt(node.getAttribute('height'), 10);\n let path = node.querySelector('path');\n let svg = path.parentNode;\n\n // Scale width/height\n [node, svg, path, node.querySelector('rect')].forEach((n) => {\n n.setAttribute('width', parseInt(n.getAttribute('width'), 10) * viewport.scale);\n n.setAttribute('height', parseInt(n.getAttribute('height'), 10) * viewport.scale);\n });\n\n // Transform path but keep scale at 100% since it will be handled natively\n transform(path, Object.assign({}, viewport, { scale: 1 }));\n\n switch (viewport.rotation % 360) {\n case 90:\n node.setAttribute('x', viewport.width - y - width);\n node.setAttribute('y', x);\n svg.setAttribute('x', 1);\n svg.setAttribute('y', 0);\n break;\n case 180:\n node.setAttribute('x', viewport.width - x - width);\n node.setAttribute('y', viewport.height - y - height);\n svg.setAttribute('y', 2);\n break;\n case 270:\n node.setAttribute('x', y);\n node.setAttribute('y', viewport.height - x - height);\n svg.setAttribute('x', -1);\n svg.setAttribute('y', 0);\n break;\n }\n }\n\n return node;\n}\n\n/**\n * Append an annotation as a child of an SVG.\n *\n * @param {SVGElement} svg The SVG element to append the annotation to\n * @param {Object} annotation The annotation definition to render and append\n * @param {Object} viewport The page's viewport data\n * @return {SVGElement} A node that was created and appended by this function\n */\nexport function appendChild(svg, annotation, viewport) {\n if (!viewport) {\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\n }\n\n let child;\n switch (annotation.type) {\n case 'area':\n case 'highlight':\n child = renderRect(annotation);\n break;\n case 'circle':\n case 'fillcircle':\n case 'emptycircle':\n child = renderCircle(annotation);\n break;\n case 'strikeout':\n child = renderLine(annotation);\n break;\n case 'point':\n child = renderPoint(annotation);\n break;\n case 'textbox':\n child = renderText(annotation);\n break;\n case 'drawing':\n child = renderPath(annotation);\n break;\n case 'arrow':\n child = renderArrow(annotation);\n break;\n }\n\n // If no type was provided for an annotation it will result in node being null.\n // Skip appending/transforming if node doesn't exist.\n if (child) {\n // Set attributes\n child.setAttribute('data-pdf-annotate-id', annotation.uuid);\n child.setAttribute('aria-hidden', true);\n\n // Dynamically set any other attributes associated with annotation that is not related to drawing it\n Object.keys(annotation).filter((key) => {\n return ['color', 'x', 'y', 'cx', 'cy', 'color', 'documentId', 'lines', 'page',\n 'width', 'class', 'content', 'size', 'rotation', 'r'].indexOf(key) === -1;\n }).forEach((key) => {\n child.setAttribute(`data-pdf-annotate-${key}`, annotation[key]);\n });\n\n svg.appendChild(transform(child, viewport));\n }\n\n return child;\n}\n\n/**\n * Transform a child annotation of an SVG.\n *\n * @param {SVGElement} svg The SVG element with the child annotation\n * @param {Object} child The SVG child to transform\n * @param {Object} viewport The page's viewport data\n * @return {SVGElement} A node that was transformed by this function\n */\nexport function transformChild(svg, child, viewport) {\n if (!viewport) {\n viewport = JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'));\n }\n\n // If no type was provided for an annotation it will result in node being null.\n // Skip transforming if node doesn't exist.\n if (child) {\n child = transform(child, viewport);\n }\n\n return child;\n}\n\nexport default {\n /**\n * Get the x/y translation to be used for transforming the annotations\n * based on the rotation of the viewport.\n */\n getTranslation,\n\n /**\n * Append an SVG child for an annotation\n */\n appendChild,\n\n /**\n * Transform an existing SVG child\n */\n transformChild\n};\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGLineElements from an annotation definition.\n * This is used for anntations of type `strikeout`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGGElement} A group of all lines to be rendered\n */\nexport default function renderLine(a) {\n let group = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n setAttributes(group, {\n stroke: normalizeColor(a.color || '#f00'),\n strokeWidth: 1\n });\n\n a.rectangles.forEach((r) => {\n let line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n\n setAttributes(line, {\n x1: r.x,\n y1: r.y,\n x2: r.x + r.width,\n y2: r.y\n });\n\n group.appendChild(line);\n });\n\n return group;\n}\n","import setAttributes from '../utils/setAttributes';\nimport normalizeColor from '../utils/normalizeColor';\n\n/**\n * Create SVGPathElement from an annotation definition.\n * This is used for anntations of type `drawing`.\n *\n * @param {Object} a The annotation definition\n * @return {SVGPathElement} The path to be rendered\n */\nexport default function renderPath(a) {\n let d = [];\n let path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\n if (a.lines.length > 0) {\n d.push(`M${a.lines[0][0]} ${a.lines[0][1]}`);\n for (let i = 1, l = a.lines.length; i < l; i++) {\n let p1 = a.lines[i];\n let p2 = a.lines[i + 1];\n if (p2) {\n d.push(`L${p1[0]} ${p1[1]}`);\n }\n }\n }\n\n /*\n\n if(a.lines.length>2) {\n var p1 = a.lines[0];\n var p2 = a.lines[a.lines.length-1];\n\n var p3 = []; //arrow\n var p4 = [];\n var p0 = []; //arrow intersection\n\n if (p2) {\n var k = -(p2[0]-p1[0])/(p2[1]-p1[1]);\n\n var deltaX = 3;\n p0[0] = p1[0]+0.8*(p2[0]-p1[0]);\n p0[1] = p1[1]+0.8*(p2[1]-p1[1]);\n\n p3[0] = p0[0] + deltaX;\n p3[1] = p0[1] + k*deltaX;\n\n p4[0] = p0[0] - deltaX;\n p4[1] = p0[1] - k*deltaX;\n\n if(Math.abs(p2[1]-p1[1]) < 20) {\n\n p3[0] = p0[0] ;\n p3[1] = p0[1] + deltaX*1;\n\n p4[0] = p0[0] ;\n p4[1] = p0[1] - deltaX*1;\n\n }\n\n d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\n //d.push(`M${p1[0]} ${p1[1]} ${p2[0]} ${p2[1]}`);\n d.push(`M${p2[0]} ${p2[1]} ${p3[0]} ${p3[1]}`);\n d.push(`M${p3[0]} ${p3[1]} ${p4[0]} ${p4[1]}`);\n d.push(`M${p4[0]} ${p4[1]} ${p2[0]} ${p2[1]}`);\n }\n } */\n\n setAttributes(path, {\n d: `${d.join(' ')}`, // `${d.join(' ')}Z`,\n stroke: normalizeColor(a.color || '#000'),\n strokeWidth: a.width || 1,\n fill: 'none'\n });\n\n return path;\n}\n","import { getTranslation } from '../render/appendChild';\nimport {\n applyTransform,\n applyInverseTransform,\n translate,\n rotate,\n scale\n} from '../utils/mathUtils';\n\nexport const BORDER_COLOR = '#00BFFF';\n\nconst userSelectStyleSheet = document.createElement('style');\nuserSelectStyleSheet.innerHTML = `\nbody {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n`;\n\nuserSelectStyleSheet.setAttribute('data-pdf-annotate-user-select', 'true');\n\n/**\n * Find the SVGElement that contains all the annotations for a page\n *\n * @param {Element} node An annotation within that container\n * @return {SVGElement} The container SVG or null if it can't be found\n */\nexport function findSVGContainer(node) {\n let parentNode = node;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n if (parentNode.nodeName.toUpperCase() === 'SVG' &&\n parentNode.getAttribute('data-pdf-annotate-container') === 'true') {\n return parentNode;\n }\n }\n\n return null;\n}\n\n/**\n * Find an SVGElement container at a given point\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @return {SVGElement} The container SVG or null if one can't be found\n */\nexport function findSVGAtPoint(x, y) {\n let elements = document.querySelectorAll('svg[data-pdf-annotate-container=\"true\"]');\n\n for (let i = 0, l = elements.length; i < l; i++) {\n let el = elements[i];\n let rect = el.getBoundingClientRect();\n\n if (pointIntersectsRect(x, y, rect)) {\n return el;\n }\n }\n\n return null;\n}\n\n/**\n * Find an Element that represents an annotation at a given point.\n *\n * IMPORTANT: Requires the annotation layer to be the top most element so\n * either use z-ordering or make it the leaf container.\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @return {Element} The annotation element or null if one can't be found\n */\nexport function findAnnotationAtPoint(x, y) {\n let el = null;\n let candidate = document.elementFromPoint(x, y);\n while (!el && candidate && candidate !== document) {\n let type = candidate.getAttribute('data-pdf-annotate-type');\n if (type) {\n el = candidate;\n }\n candidate = candidate.parentNode;\n }\n return el;\n}\n\n/**\n * Determine if a point intersects a rect\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Object} rect The points of a rect (likely from getBoundingClientRect)\n * @return {Boolean} True if a collision occurs, otherwise false\n */\nexport function pointIntersectsRect(x, y, rect) {\n return y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\n}\n\n/**\n * Get the rect of an annotation element accounting for offset.\n *\n * @param {Element} el The element to get the rect of\n * @return {Object} The dimensions of the element\n */\nexport function getOffsetAnnotationRect(el) {\n let rect = el.getBoundingClientRect();\n let { width, height } = rect;\n let extraOffsetWidth = 0;\n let extraOffsetHeight = 0;\n if (['line', 'path'].indexOf(el.tagName.toLowerCase()) > -1 && el.getBBox) {\n let bbox = el.getBBox();\n extraOffsetWidth = (rect.width - bbox.width) / 2;\n extraOffsetHeight = (rect.height - bbox.height) / 2;\n width = bbox.width;\n height = bbox.height;\n }\n let { offsetLeft, offsetTop } = getOffset(el);\n return {\n top: rect.top - offsetTop + extraOffsetHeight,\n left: rect.left - offsetLeft + extraOffsetWidth,\n bottom: rect.bottom - offsetTop - extraOffsetHeight,\n right: rect.right - offsetLeft - extraOffsetWidth,\n width: width,\n height: height\n };\n}\n\n/**\n * Adjust scale from normalized scale (100%) to rendered scale.\n *\n * @param {SVGElement} svg The SVG to gather metadata from\n * @param {Object} rect A map of numeric values to scale\n * @return {Object} A copy of `rect` with values scaled up\n */\nexport function scaleUp(svg, rect) {\n let result = {};\n let { viewport } = getMetadata(svg);\n\n Object.keys(rect).forEach((key) => {\n result[key] = rect[key] * viewport.scale;\n });\n\n return result;\n}\n\nexport function convertToSvgRect(rect, svg, viewport) {\n let pt1 = [rect.x, rect.y];\n let pt2 = [rect.x + rect.width, rect.y + rect.height];\n\n pt1 = convertToSvgPoint(pt1, svg, viewport);\n pt2 = convertToSvgPoint(pt2, svg, viewport);\n\n return {\n x: Math.min(pt1[0], pt2[0]),\n y: Math.min(pt1[1], pt2[1]),\n width: Math.abs(pt2[0] - pt1[0]),\n height: Math.abs(pt2[1] - pt1[1])\n };\n}\n\nexport function convertToSvgPoint(pt, svg, viewport) {\n viewport = viewport || getMetadata(svg).viewport;\n\n let xform = [ 1, 0, 0, 1, 0, 0 ];\n xform = scale(xform, viewport.scale, viewport.scale);\n xform = rotate(xform, viewport.rotation);\n\n let offset = getTranslation(viewport);\n xform = translate(xform, offset.x, offset.y);\n\n return applyInverseTransform(pt, xform);\n}\n\nexport function convertToScreenPoint(pt, svg, viewport) {\n viewport = viewport || getMetadata(svg).viewport;\n\n let xform = [ 1, 0, 0, 1, 0, 0 ];\n xform = scale(xform, viewport.scale, viewport.scale);\n xform = rotate(xform, viewport.rotation);\n\n let offset = getTranslation(viewport);\n xform = translate(xform, offset.x, offset.y);\n\n return applyTransform(pt, xform);\n}\n\n/**\n * Adjust scale from rendered scale to a normalized scale (100%).\n *\n * @param {SVGElement} svg The SVG to gather metadata from\n * @param {Object} rect A map of numeric values to scale\n * @return {Object} A copy of `rect` with values scaled down\n */\nexport function scaleDown(svg, rect) {\n let result = {};\n let { viewport } = getMetadata(svg);\n\n Object.keys(rect).forEach((key) => {\n result[key] = rect[key] / viewport.scale;\n });\n\n return result;\n}\n\n/**\n * Get the scroll position of an element, accounting for parent elements\n *\n * @param {Element} el The element to get the scroll position for\n * @return {Object} The scrollTop and scrollLeft position\n */\nexport function getScroll(el) {\n let scrollTop = 0;\n let scrollLeft = 0;\n let parentNode = el;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n scrollTop += parentNode.scrollTop;\n scrollLeft += parentNode.scrollLeft;\n }\n\n return { scrollTop, scrollLeft };\n}\n\n/**\n * Get the offset position of an element, accounting for parent elements\n *\n * @param {Element} el The element to get the offset position for\n * @return {Object} The offsetTop and offsetLeft position\n */\nexport function getOffset(el) {\n let parentNode = el;\n\n while ((parentNode = parentNode.parentNode) &&\n parentNode !== document) {\n if (parentNode.nodeName.toUpperCase() === 'SVG') {\n break;\n }\n }\n\n let rect = parentNode.getBoundingClientRect();\n\n return { offsetLeft: rect.left, offsetTop: rect.top };\n}\n\n/**\n * Disable user ability to select text on page\n */\nexport function disableUserSelect() {\n if (!userSelectStyleSheet.parentNode) {\n document.head.appendChild(userSelectStyleSheet);\n }\n}\n\n/**\n * Enable user ability to select text on page\n */\nexport function enableUserSelect() {\n if (userSelectStyleSheet.parentNode) {\n userSelectStyleSheet.parentNode.removeChild(userSelectStyleSheet);\n }\n}\n\n/**\n * Get the metadata for a SVG container\n *\n * @param {SVGElement} svg The SVG container to get metadata for\n */\nexport function getMetadata(svg) {\n return {\n documentId: svg.getAttribute('data-pdf-annotate-document'),\n pageNumber: parseInt(svg.getAttribute('data-pdf-annotate-page'), 10),\n viewport: JSON.parse(svg.getAttribute('data-pdf-annotate-viewport'))\n };\n}\n","import EventEmitter from 'events';\nimport {\n findAnnotationAtPoint,\n findSVGAtPoint\n} from './utils';\n\nconst emitter = new EventEmitter();\n\nlet clickNode;\n\n/**\n * Handle document.click event\n *\n * @param {Event} e The DOM event to be handled\n */\ndocument.addEventListener('click', function handleDocumentClick(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\n\n // Emit annotation:blur if clickNode is no longer clicked\n if (clickNode && clickNode !== target) {\n emitter.emit('annotation:blur', clickNode);\n }\n\n // Emit annotation:click if target was clicked\n if (target) {\n emitter.emit('annotation:click', target);\n }\n\n clickNode = target;\n});\n\n// let mouseOverNode;\n// document.addEventListener('mousemove', function handleDocumentMousemove(e) {\n// let target = findAnnotationAtPoint(e.clientX, e.clientY);\n//\n// // Emit annotation:mouseout if target was mouseout'd\n// if (mouseOverNode && !target) {\n// emitter.emit('annotation:mouseout', mouseOverNode);\n// }\n//\n// // Emit annotation:mouseover if target was mouseover'd\n// if (target && mouseOverNode !== target) {\n// emitter.emit('annotation:mouseover', target);\n// }\n//\n// mouseOverNode = target;\n// });\n\nexport function fireEvent() { emitter.emit(...arguments); };\nexport function addEventListener() { emitter.on(...arguments); };\nexport function removeEventListener() { emitter.removeListener(...arguments); };\n","// Disable JSDoc as it cannot really deal with the odd way that the functions are defined\n/* eslint valid-jsdoc: 0 */\n\nimport abstractFunction from '../utils/abstractFunction';\nimport { fireEvent } from '../UI/event';\n\n// Adapter should never be invoked publicly\nexport default class StoreAdapter {\n /**\n * Create a new StoreAdapter instance\n *\n * @param {Object} [definition] The definition to use for overriding abstract methods\n */\n constructor(definition = {}) {\n // Copy each function from definition if it is a function we know about\n Object.keys(definition).forEach((key) => {\n if (typeof definition[key] === 'function' &&\n typeof this[key] === 'function') {\n this[key] = definition[key];\n }\n });\n }\n\n /**\n * Get all the annotations for a given document and page number.\n *\n * @param {String} documentId The ID for the document the annotations belong to\n * @param {Number} pageNumber The number of the page the annotations belong to\n * @return {Promise} Promise that returns with list of annotations for document and page\n */\n __getAnnotations(documentId, pageNumber) { abstractFunction('getAnnotations'); }\n get getAnnotations() { return this.__getAnnotations; }\n set getAnnotations(fn) {\n this.__getAnnotations = function getAnnotations(documentId, pageNumber) {\n return fn(...arguments).then((annotations) => {\n // TODO may be best to have this happen on the server\n if (annotations.annotations) {\n annotations.annotations.forEach((a) => {\n a.documentId = documentId;\n });\n }\n return annotations;\n });\n };\n }\n\n /**\n * Get the definition for a specific annotation.\n *\n * @param {String} documentId The ID for the document the annotation belongs to\n * @param {String} annotationId The ID for the annotation\n * @return {Promise} Promise that returns the requested annotation\n */\n getAnnotation(documentId, annotationId) { abstractFunction('getAnnotation'); }\n\n /**\n * Add an annotation\n *\n * @param {String} documentId The ID for the document to add the annotation to\n * @param {String} pageNumber The page number to add the annotation to\n * @param {Object} annotation The definition for the new annotation\n * @return {Promise} Promise that returns with the added annotation\n */\n __addAnnotation(documentId, pageNumber, annotation) { abstractFunction('addAnnotation'); }\n get addAnnotation() { return this.__addAnnotation; }\n set addAnnotation(fn) {\n this.__addAnnotation = function addAnnotation(documentId, pageNumber, annotation) {\n return fn(...arguments).then((annotation) => {\n fireEvent('annotation:add', documentId, pageNumber, annotation);\n return annotation;\n });\n };\n }\n\n /**\n * Edit an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} pageNumber the page number of the annotation\n * @param {Object} annotation The definition of the modified annotation\n * @return {Promise} Promise that returns with the edited annotation\n */\n __editAnnotation(documentId, pageNumber, annotation) { abstractFunction('editAnnotation'); }\n get editAnnotation() { return this.__editAnnotation; }\n set editAnnotation(fn) {\n this.__editAnnotation = function editAnnotation(documentId, annotationId, annotation) {\n return fn(...arguments).then((annotation) => {\n fireEvent('annotation:edit', documentId, annotationId, annotation);\n return annotation;\n });\n };\n }\n\n /**\n * Delete an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @return {Promise} Promise that returns with boolean if annotation was deleted\n */\n __deleteAnnotation(documentId, annotationId) { abstractFunction('deleteAnnotation'); }\n get deleteAnnotation() { return this.__deleteAnnotation; }\n set deleteAnnotation(fn) {\n this.__deleteAnnotation = function deleteAnnotation(documentId, annotationId) {\n return fn(...arguments).then((success) => {\n if (success) {\n fireEvent('annotation:delete', documentId, annotationId);\n }\n return success;\n });\n };\n }\n\n /**\n * Get all the comments for an annotation\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @return {Promise} Promise that returns with comments for annotation\n */\n getComments(documentId, annotationId) { abstractFunction('getComments'); }\n\n /**\n * Add a new comment\n *\n * @param {String} documentId The ID for the document\n * @param {String} annotationId The ID for the annotation\n * @param {Object} content The definition of the comment\n * @return {Promise} Promise that returns with the added comment\n */\n __addComment(documentId, annotationId, content) { abstractFunction('addComment'); }\n get addComment() { return this.__addComment; }\n set addComment(fn) {\n this.__addComment = function addComment(documentId, annotationId, content) {\n return fn(...arguments).then((comment) => {\n fireEvent('comment:add', documentId, annotationId, comment);\n return comment;\n });\n };\n }\n\n /**\n * Delete a comment\n *\n * @param {String} documentId The ID for the document\n * @param {String} commentId The ID for the comment\n * @return {Promise} Promise that returns with boolean if comment was deleted\n */\n __deleteComment(documentId, commentId) { abstractFunction('deleteComment'); }\n get deleteComment() { return this.__deleteComment; }\n set deleteComment(fn) {\n this.__deleteComment = function deleteComment(documentId, commentId) {\n return fn(...arguments).then((success) => {\n if (success) {\n fireEvent('comment:delete', documentId, commentId);\n }\n return success;\n });\n };\n }\n}\n","const REGEXP = /[xy]/g;\nconst PATTERN = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';\n\nfunction replacement(c) {\n let r = Math.random() * 16 | 0;\n let v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n}\n\n/**\n * Generate a univierally unique identifier\n *\n * @return {String} A UUID\n */\nexport default function uuid() {\n return PATTERN.replace(REGEXP, replacement);\n}\n","import uuid from '../utils/uuid';\nimport StoreAdapter from './StoreAdapter';\n\n// StoreAdapter for working with localStorage\n// This is ideal for testing, examples, and prototyping\nexport default class LocalStoreAdapter extends StoreAdapter {\n constructor() {\n super({\n getAnnotations(documentId, pageNumber) {\n return new Promise((resolve, reject) => {\n let annotations = getAnnotations(documentId).filter((i) => {\n return i.page === pageNumber && i.class === 'Annotation';\n });\n\n resolve({\n documentId,\n pageNumber,\n annotations\n });\n });\n }\n });\n\n this.getAnnotation = (documentId, annotationId) => {\n return Promise.resolve(getAnnotations(documentId)[findAnnotation(documentId, annotationId)]);\n };\n\n this.addAnnotation = (documentId, pageNumber, annotation) => {\n return new Promise((resolve, reject) => {\n annotation.class = 'Annotation';\n annotation.uuid = uuid();\n annotation.page = pageNumber;\n\n let annotations = getAnnotations(documentId);\n annotations.push(annotation);\n updateAnnotations(documentId, annotations);\n\n resolve(annotation);\n });\n };\n\n this.editAnnotation = (documentId, annotationId, annotation) => {\n return new Promise((resolve, reject) => {\n let annotations = getAnnotations(documentId);\n annotations[findAnnotation(documentId, annotationId)] = annotation;\n updateAnnotations(documentId, annotations);\n resolve(annotation);\n });\n };\n\n this.deleteAnnotation = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n let annotation = getAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\n if (!annotation) {\n return reject('Could not find annotation');\n }\n let index = findAnnotation(documentId, annotationId);\n if (index > -1) {\n let annotations = getAnnotations(documentId);\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotations);\n }\n\n resolve(true);\n });\n };\n\n this.getComments = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n resolve(getAnnotations(documentId).filter((i) => {\n return i.class === 'Comment' && i.annotation === annotationId;\n }));\n });\n };\n\n this.addComment = (documentId, annotationId, content) => {\n return new Promise((resolve, reject) => {\n let comment = {\n class: 'Comment',\n uuid: uuid(),\n annotation: annotationId,\n content: content\n };\n\n let annotations = getAnnotations(documentId);\n annotations.push(comment);\n updateAnnotations(documentId, annotations);\n\n resolve(comment);\n });\n };\n\n this.deleteComment = (documentId, commentId) => {\n return new Promise((resolve, reject) => {\n let comment = getAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\n if (!comment) {\n return reject('Could not find annotation');\n }\n let index = -1;\n let annotations = getAnnotations(documentId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === commentId) {\n index = i;\n break;\n }\n }\n\n if (index > -1) {\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotations);\n }\n\n resolve(true);\n });\n };\n }\n}\n\nfunction getAnnotations(documentId) {\n return JSON.parse(localStorage.getItem(`${documentId}/annotations`)) || [];\n}\n\nfunction updateAnnotations(documentId, annotations) {\n localStorage.setItem(`${documentId}/annotations`, JSON.stringify(annotations));\n}\n/**\n *\n * @param {String} documentId Document id of the annotation\n * @param {String} annotationId The id of the annotation\n *\n * This function finds all the annotation made by one user.\n *\n * @return {int} The index of the annotation in localstorage\n */\nfunction findAnnotation(documentId, annotationId) {\n let index = -1;\n let annotations = getAnnotations(documentId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === annotationId) {\n index = i;\n break;\n }\n }\n return index;\n}\n","import uuid from '../utils/uuid';\nimport StoreAdapter from './StoreAdapter';\n\n// StoreAdapter for working with localStorage and associated user id\n// This is ideal for testing, examples, and prototyping\nexport default class LocalUserStoreAdapter extends StoreAdapter {\n constructor(userId = 'user', globalEdit = false) {\n super({\n getAnnotations(documentId, pageNumber) {\n return new Promise((resolve, reject) => {\n let annotations = getAllAnnotations(documentId).filter((i) => {\n return i.page === pageNumber && i.class === 'Annotation';\n });\n\n resolve({\n documentId,\n pageNumber,\n annotations\n });\n });\n }\n });\n\n this._userId = userId;\n this._globalEdit = globalEdit;\n\n this.getAnnotation = (documentId, annotationId) => {\n return Promise.resolve(getAnnotations(documentId, this._userId)[findAnnotation(documentId, this._userId, annotationId)]);\n };\n\n this.addAnnotation = (documentId, pageNumber, annotation) => {\n return new Promise((resolve, reject) => {\n annotation.class = 'Annotation';\n annotation.uuid = uuid();\n annotation.page = pageNumber;\n annotation.userId = this._userId;\n\n let annotations = getAnnotations(documentId, this._userId);\n annotations.push(annotation);\n updateAnnotations(documentId, this._userId, annotations);\n\n resolve(annotation);\n });\n };\n\n this.editAnnotation = (documentId, annotationId, annotation) => {\n return new Promise((resolve, reject) => {\n if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\n reject('Non-matching userId');\n }\n let annotations = getAnnotations(documentId, annotation.userId);\n annotations[findAnnotation(documentId, annotation.userId, annotationId)] = annotation;\n updateAnnotations(documentId, annotation.userId, annotations);\n resolve(annotation);\n });\n };\n\n this.deleteAnnotation = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n let annotation = getAllAnnotations(documentId).filter(i => i.uuid === annotationId)[0] || {};\n if (!annotation) {\n return reject('Could not find annotation');\n }\n else if (!this._globalEdit && annotation.userId && annotation.userId !== this._userId) {\n return reject('Non-matching userId');\n }\n let index = findAnnotation(documentId, annotation.userId, annotationId);\n if (index > -1) {\n let annotations = getAnnotations(documentId, annotation.userId);\n annotations.splice(index, 1);\n updateAnnotations(documentId, annotation.userId, annotations);\n }\n\n resolve(true);\n });\n };\n\n this.getComments = (documentId, annotationId) => {\n return new Promise((resolve, reject) => {\n resolve(getAnnotations(documentId, this._userId).filter((i) => {\n return i.class === 'Comment' && i.annotation === annotationId;\n }));\n });\n };\n\n this.addComment = (documentId, annotationId, content) => {\n return new Promise((resolve, reject) => {\n let comment = {\n class: 'Comment',\n uuid: uuid(),\n annotation: annotationId,\n content: content,\n userId: this._userId\n };\n\n let annotations = getAnnotations(documentId, this._userId);\n annotations.push(comment);\n updateAnnotations(documentId, this._userId, annotations);\n\n resolve(comment);\n });\n };\n\n this.deleteComment = (documentId, commentId) => {\n return new Promise((resolve, reject) => {\n let comment = getAllAnnotations(documentId).filter(i => i.uuid === commentId)[0] || {};\n if (!comment) {\n return reject('Could not find annotation');\n }\n else if (!this._globalEdit && comment.userId && comment.userId !== this._userId) {\n return reject('Non-matching userId');\n }\n let index = -1;\n let annotations = getAnnotations(documentId, comment.userId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === commentId) {\n index = i;\n break;\n }\n }\n\n if (index > -1) {\n annotations.splice(index, 1);\n updateAnnotations(documentId, comment.userId, annotations);\n }\n\n resolve(true);\n });\n };\n }\n\n get userId() {\n return this._userId;\n }\n}\n\nfunction getAllAnnotations(documentId) {\n let all_annotations = [];\n let re = new RegExp(`${documentId}/(.*)/annotations`);\n for (let i = 0; i < localStorage.length; i++) {\n if (localStorage.key(i).search(re) > -1) {\n all_annotations.push(...JSON.parse(localStorage.getItem(localStorage.key(i))));\n }\n }\n return all_annotations;\n}\n\nfunction getAnnotations(documentId, userId) {\n return JSON.parse(localStorage.getItem(`${documentId}/${userId}/annotations`)) || [];\n}\n\nfunction updateAnnotations(documentId, userId, annotations) {\n localStorage.setItem(`${documentId}/${userId}/annotations`, JSON.stringify(annotations));\n}\n/**\n *\n * @param {String} documentId Document id of the annotation\n * @param {String} userId User id of the annotation\n * @param {String} annotationId The id of the annotation\n *\n * This function finds all the annotation made by one user.\n *\n * @return {int} The index of the annotation in localstorage\n */\nfunction findAnnotation(documentId, userId, annotationId) {\n let index = -1;\n let annotations = getAnnotations(documentId, userId);\n for (let i = 0, l = annotations.length; i < l; i++) {\n if (annotations[i].uuid === annotationId) {\n index = i;\n break;\n }\n }\n return index;\n}\n","export default {\n annotationLayerName: 'annotationLayer',\n textLayerName: 'textLayer',\n annotationSvgQuery: function() {\n return 'svg.' + this.annotationLayerName;\n },\n annotationClassQuery: function() {\n return '.' + this.annotationLayerName;\n },\n textClassQuery: function() {\n return '.' + this.textLayerName;\n }\n};\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport config from '../config';\nimport {\n addEventListener,\n removeEventListener\n} from './event';\nimport {\n BORDER_COLOR,\n disableUserSelect,\n enableUserSelect,\n findSVGContainer,\n findSVGAtPoint,\n getOffsetAnnotationRect,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet isDragging = false;\nlet overlay;\nlet dragOffsetX, dragOffsetY, dragStartX, dragStartY;\nconst OVERLAY_BORDER_SIZE = 3;\n\n/**\n * Create an overlay for editing an annotation.\n *\n * @param {Element} target The annotation element to apply overlay for\n */\nfunction createEditOverlay(target) {\n destroyEditOverlay();\n\n overlay = document.createElement('div');\n let anchor = document.createElement('a');\n let parentNode = findSVGContainer(target).parentNode;\n let id = target.getAttribute('data-pdf-annotate-id');\n let rect = getOffsetAnnotationRect(target);\n let styleLeft = rect.left - OVERLAY_BORDER_SIZE;\n let styleTop = rect.top - OVERLAY_BORDER_SIZE;\n\n overlay.setAttribute('id', 'pdf-annotate-edit-overlay');\n overlay.setAttribute('data-target-id', id);\n overlay.style.boxSizing = 'content-box';\n overlay.style.position = 'absolute';\n overlay.style.top = `${styleTop}px`;\n overlay.style.left = `${styleLeft}px`;\n overlay.style.width = `${rect.width}px`;\n overlay.style.height = `${rect.height}px`;\n overlay.style.border = `${OVERLAY_BORDER_SIZE}px solid ${BORDER_COLOR}`;\n overlay.style.borderRadius = `${OVERLAY_BORDER_SIZE}px`;\n overlay.style.zIndex = 20100;\n\n anchor.innerHTML = '×';\n anchor.setAttribute('href', 'javascript://');\n anchor.style.background = '#fff';\n anchor.style.borderRadius = '20px';\n anchor.style.border = '1px solid #bbb';\n anchor.style.color = '#bbb';\n anchor.style.fontSize = '16px';\n anchor.style.padding = '2px';\n anchor.style.textAlign = 'center';\n anchor.style.textDecoration = 'none';\n anchor.style.position = 'absolute';\n anchor.style.top = '-13px';\n anchor.style.right = '-13px';\n anchor.style.width = '25px';\n anchor.style.height = '25px';\n\n overlay.appendChild(anchor);\n parentNode.appendChild(overlay);\n document.addEventListener('click', handleDocumentClick);\n document.addEventListener('keyup', handleDocumentKeyup);\n document.addEventListener('mousedown', handleDocumentMousedown);\n anchor.addEventListener('click', deleteAnnotation);\n anchor.addEventListener('mouseover', () => {\n anchor.style.color = '#35A4DC';\n anchor.style.borderColor = '#999';\n anchor.style.boxShadow = '0 1px 1px #ccc';\n });\n anchor.addEventListener('mouseout', () => {\n anchor.style.color = '#bbb';\n anchor.style.borderColor = '#bbb';\n anchor.style.boxShadow = '';\n });\n overlay.addEventListener('mouseover', () => {\n if (!isDragging) { anchor.style.display = ''; }\n });\n overlay.addEventListener('mouseout', () => {\n anchor.style.display = 'none';\n });\n}\n\n/**\n * Destroy the edit overlay if it exists.\n */\nfunction destroyEditOverlay() {\n if (overlay) {\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n }\n\n document.removeEventListener('click', handleDocumentClick);\n document.removeEventListener('keyup', handleDocumentKeyup);\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n enableUserSelect();\n}\n\n/**\n * Delete currently selected annotation\n */\nfunction deleteAnnotation() {\n if (!overlay) {\n return;\n }\n\n let annotationId = overlay.getAttribute('data-target-id');\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let { documentId } = getMetadata(svg);\n\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n\n [...nodes].forEach((n) => {\n n.parentNode.removeChild(n);\n });\n });\n\n destroyEditOverlay();\n}\n\n/**\n * Handle document.click event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentClick(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY)) { return; }\n\n // Remove current overlay\n let overlay = document.getElementById('pdf-annotate-edit-overlay');\n if (overlay) {\n if (isDragging || e.target === overlay) {\n return;\n }\n\n destroyEditOverlay();\n }\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {KeyboardEvent} e The DOM event that needs to be handled\n */\nfunction handleDocumentKeyup(e) {\n // keyCode is deprecated, so prefer the newer \"key\" method if possible\n let keyTest;\n if (e.key) {\n keyTest = e.key.toLowerCase() === 'delete' || e.key.toLowerCase() === 'backspace';\n }\n else {\n keyTest = e.keyCode === 8 || e.keyCode === 46;\n }\n if (overlay && keyTest &&\n e.target.nodeName.toLowerCase() !== 'textarea' &&\n e.target.nodeName.toLowerCase() !== 'input') {\n e.preventDefault();\n deleteAnnotation();\n }\n}\n\n/**\n * Handle document.mousedown event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMousedown(e) {\n if (e.target !== overlay) {\n return;\n }\n\n // Highlight and strikeout annotations are bound to text within the document.\n // It doesn't make sense to allow repositioning these types of annotations.\n let annotationId = overlay.getAttribute('data-target-id');\n let target = document.querySelector(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n let type = target.getAttribute('data-pdf-annotate-type');\n\n if (type === 'highlight' || type === 'strikeout') { return; }\n\n isDragging = true;\n dragOffsetX = e.clientX;\n dragOffsetY = e.clientY;\n dragStartX = overlay.offsetLeft;\n dragStartY = overlay.offsetTop;\n\n overlay.style.background = 'rgba(255, 255, 255, 0.7)';\n overlay.style.cursor = 'move';\n overlay.querySelector('a').style.display = 'none';\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n document.addEventListener('mouseup', handleDocumentMouseup);\n disableUserSelect();\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMousemove(e) {\n let parentNode = overlay.parentNode;\n let rect = parentNode.getBoundingClientRect();\n let y = (dragStartY + (e.clientY - dragOffsetY));\n let x = (dragStartX + (e.clientX - dragOffsetX));\n let minY = 0;\n let maxY = rect.height;\n let minX = 0;\n let maxX = rect.width;\n\n if (y > minY && y + overlay.offsetHeight < maxY) {\n overlay.style.top = `${y}px`;\n }\n\n if (x > minX && x + overlay.offsetWidth < maxX) {\n overlay.style.left = `${x}px`;\n }\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event that needs to be handled\n */\nfunction handleDocumentMouseup(e) {\n let annotationId = overlay.getAttribute('data-target-id');\n let target = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n let type = target[0].getAttribute('data-pdf-annotate-type');\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let { documentId } = getMetadata(svg);\n\n overlay.querySelector('a').style.display = '';\n\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\n let attribX = 'x';\n let attribY = 'y';\n if (['circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\n attribX = 'cx';\n attribY = 'cy';\n }\n\n if (type === 'point') {\n // Broken\n /*\n [...target].forEach((t, i) => {\n let moveTo = {\n x: overlay.offsetLeft + 3,\n y: overlay.offsetTop + 3\n };\n t.setAttribute(attribX, moveTo.x);\n t.setAttribute(attribY, moveTo.y);\n annotation[attribX] = moveTo.x;\n annotation[attribY] = moveTo.y;\n });\n */\n return;\n }\n else if (['area', 'highlight', 'textbox', 'circle', 'fillcircle', 'emptycircle'].indexOf(type) > -1) {\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\n let modelDelta = {\n x: modelEnd[0] - modelStart[0],\n y: modelEnd[1] - modelStart[1]\n };\n\n if (type === 'textbox') {\n target = [target[0].firstChild];\n }\n\n [...target].forEach((t, i) => {\n let modelX = parseInt(t.getAttribute(attribX), 10);\n let modelY = parseInt(t.getAttribute(attribY), 10);\n if (modelDelta.y !== 0) {\n modelY = modelY + modelDelta.y;\n\n t.setAttribute(attribY, modelY);\n if (annotation.rectangles && i < annotation.rectangles.length) {\n annotation.rectangles[i].y = modelY;\n }\n else if (annotation[attribY]) {\n annotation[attribY] = modelY;\n }\n }\n if (modelDelta.x !== 0) {\n modelX = modelX + modelDelta.x;\n\n t.setAttribute(attribX, modelX);\n if (annotation.rectangles && i < annotation.rectangles.length) {\n annotation.rectangles[i].x = modelX;\n }\n else if (annotation[attribX]) {\n annotation[attribX] = modelX;\n }\n }\n });\n }\n else if (type === 'strikeout') {\n return;\n // let { deltaX, deltaY } = getDelta('x1', 'y1');\n // [...target].forEach(target, (t, i) => {\n // if (deltaY !== 0) {\n // t.setAttribute('y1', parseInt(t.getAttribute('y1'), 10) + deltaY);\n // t.setAttribute('y2', parseInt(t.getAttribute('y2'), 10) + deltaY);\n // annotation.rectangles[i].y = parseInt(t.getAttribute('y1'), 10);\n // }\n // if (deltaX !== 0) {\n // t.setAttribute('x1', parseInt(t.getAttribute('x1'), 10) + deltaX);\n // t.setAttribute('x2', parseInt(t.getAttribute('x2'), 10) + deltaX);\n // annotation.rectangles[i].x = parseInt(t.getAttribute('x1'), 10);\n // }\n // });\n }\n else if (type === 'drawing' || type === 'arrow') {\n // Do nothing as currently broken\n /*\n let modelStart = convertToSvgPoint([dragStartX, dragStartY], svg);\n let modelEnd = convertToSvgPoint([overlay.offsetLeft, overlay.offsetTop], svg);\n let modelDelta = {\n x: modelEnd[0] - modelStart[0],\n y: modelEnd[1] - modelStart[1]\n };\n\n annotation.lines.forEach((line, i) => {\n let [x, y] = annotation.lines[i];\n annotation.lines[i][0] = x + modelDelta.x;\n annotation.lines[i][1] = y + modelDelta.y;\n });\n\n target[0].parentNode.removeChild(target[0]);\n appendChild(svg, annotation);\n */\n return;\n }\n\n PDFJSAnnotate.getStoreAdapter().editAnnotation(documentId, annotationId, annotation);\n });\n\n setTimeout(() => {\n isDragging = false;\n }, 0);\n\n overlay.style.background = '';\n overlay.style.cursor = '';\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n enableUserSelect();\n}\n\n/**\n * Handle annotation.click event\n *\n * @param {Element} e The annotation element that was clicked\n */\nfunction handleAnnotationClick(target) {\n createEditOverlay(target);\n}\n\n/**\n * Enable edit mode behavior.\n */\nexport function enableEdit() {\n if (_enabled) {\n return;\n }\n\n _enabled = true;\n addEventListener('annotation:click', handleAnnotationClick);\n};\n\n/**\n * Disable edit mode behavior.\n */\nexport function disableEdit() {\n destroyEditOverlay();\n\n if (!_enabled) {\n return;\n }\n\n _enabled = false;\n removeEventListener('annotation:click', handleAnnotationClick);\n};\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet _candraw = false;\nlet _penSize;\nlet _penColor;\nlet path;\nlet lines = [];\n\n/**\n * Handle document.touchdown or document.pointerdown event\n * @param {PointerEvent} e The DOM event to be handled\n */\nfunction handleDocumentPointerdown(e) {\n path = null;\n lines = [];\n if (!findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n _candraw = true;\n e.preventDefault();\n}\n\n/**\n * Handle document.pointerup event\n *\n * @param {PointerEvent} e The DOM event to be handled\n */\nfunction handleDocumentPointerup(e) {\n saveToStorage(e.clientX, e.clientY);\n}\n\nfunction saveToStorage(x, y) {\n if (!_candraw) {\n return;\n }\n _candraw = false;\n let svg;\n if (lines.length > 1 && (svg = findSVGAtPoint(x, y))) {\n let { documentId, pageNumber } = getMetadata(svg);\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\n type: 'drawing',\n width: _penSize,\n color: _penColor,\n lines\n }).then((annotation) => {\n if (path) {\n svg.removeChild(path);\n }\n\n appendChild(svg, annotation);\n });\n }\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {PointerEvent} e The DOM event to be handled\n */\nfunction handleDocumentPointermove(e) {\n if (!findSVGAtPoint(e.clientX, e.clientY) || !_candraw) {\n return;\n }\n savePoint(e.clientX, e.clientY);\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {KeyboardEvent} e The DOM event to be handled\n * } e The DOM event to be handled\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n lines = null;\n path.parentNode.removeChild(path);\n document.removeEventListener('pointermove', handleDocumentPointermove);\n document.removeEventListener('pointerup', handleDocumentPointerup);\n }\n}\n\n/**\n * Save a point to the line being drawn.\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n */\nfunction savePoint(x, y) {\n let svg = findSVGAtPoint(x, y);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let point = convertToSvgPoint([\n x - rect.left,\n y - rect.top\n ], svg);\n point[0] = point[0].toFixed(2);\n point[1] = point[1].toFixed(2);\n lines.push(point);\n\n if (lines.length <= 1) {\n return;\n }\n\n if (path) {\n svg.removeChild(path);\n }\n\n path = appendChild(svg, {\n type: 'drawing',\n color: _penColor,\n width: _penSize,\n lines\n });\n}\n\n/**\n * Set the attributes of the pen.\n *\n * @param {Number} penSize The size of the lines drawn by the pen, rounded to 2 decimal places\n * @param {String} penColor The color of the lines drawn by the pen\n */\nexport function setPen(penSize = 1, penColor = '000000') {\n _penSize = Math.round(parseFloat(penSize) * 1e2) / 1e2;\n _penColor = penColor;\n}\n\n/**\n * Return pen attributes of the pen\n *\n * @return {Object} Object with size and color\n */\nexport function getPen() {\n return {\n size: _penSize,\n color: _penColor\n };\n}\n\n/**\n * Enable the pen behavior\n */\nexport function enablePen() {\n if (_enabled) {\n return;\n }\n\n _enabled = true;\n // Chrome and Firefox has different behaviors with how pen works, so we need different events.\n document.addEventListener('pointerdown', handleDocumentPointerdown);\n document.addEventListener('pointermove', handleDocumentPointermove);\n document.addEventListener('pointerup', handleDocumentPointerup);\n\n document.addEventListener('keyup', handleDocumentKeyup);\n disableUserSelect();\n}\n\n/**\n * Disable the pen behavior\n */\nexport function disablePen() {\n if (!_enabled) {\n return;\n }\n\n _enabled = false;\n document.removeEventListener('pointerdown', handleDocumentPointerdown);\n document.removeEventListener('pointermove', handleDocumentPointermove);\n document.removeEventListener('pointerup', handleDocumentPointerup);\n\n document.removeEventListener('keyup', handleDocumentKeyup);\n enableUserSelect();\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n findSVGContainer,\n getMetadata,\n convertToSvgPoint,\n convertToScreenPoint,\n findAnnotationAtPoint\n} from './utils';\n\nlet _enabled = false;\nlet _penSize;\nlet _penColor;\nlet path;\nlet lines;\nlet originY;\nlet originX;\n\n/**\n * Handle document.mousedown event\n */\nfunction handleDocumentMousedown(e) {\n let target = findAnnotationAtPoint(e.clientX, e.clientY);\n if (target === null) {\n return;\n }\n\n let type = target.getAttribute('data-pdf-annotate-type');\n if (type !== 'circle' && type !== 'fillcircle' && type !== 'emptycircle') {\n return;\n }\n\n let svg = findSVGContainer(target);\n let { documentId } = getMetadata(svg);\n let annotationId = target.getAttribute('data-pdf-annotate-id');\n\n PDFJSAnnotate.getStoreAdapter().getAnnotation(documentId, annotationId).then((annotation) => {\n if (annotation) {\n path = null;\n lines = [];\n\n let point = convertToScreenPoint([\n annotation.cx,\n annotation.cy\n ], svg);\n\n let rect = svg.getBoundingClientRect();\n\n originX = point[0] + rect.left;\n originY = point[1] + rect.top;\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n document.addEventListener('mouseup', handleDocumentMouseup);\n }\n });\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentMouseup(e) {\n let svg;\n if (lines.length > 1 && (svg = findSVGAtPoint(e.clientX, e.clientY))) {\n let { documentId, pageNumber } = getMetadata(svg);\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, {\n type: 'arrow',\n width: _penSize,\n color: _penColor,\n lines\n }).then((annotation) => {\n if (path) {\n svg.removeChild(path);\n }\n\n appendChild(svg, annotation);\n });\n }\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentMousemove(e) {\n let x = lines.length === 0 ? originX : e.clientX;\n let y = lines.length === 0 ? originY : e.clientY;\n\n savePoint(x, y);\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {Event} e The DOM event to be handled\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n lines = null;\n path.parentNode.removeChild(path);\n document.removeEventListener('mousemove', handleDocumentMousemove);\n document.removeEventListener('mouseup', handleDocumentMouseup);\n }\n}\n\n/**\n * Save a point to the line being drawn.\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n */\nfunction savePoint(x, y) {\n let svg = findSVGAtPoint(x, y);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let point = convertToSvgPoint([\n x - rect.left,\n y - rect.top\n ], svg);\n\n if (lines.length < 2) {\n lines.push(point);\n return;\n }\n else {\n lines[1] = point; // update end point\n }\n\n if (path) {\n svg.removeChild(path);\n }\n\n path = appendChild(svg, {\n type: 'arrow',\n color: _penColor,\n width: _penSize,\n lines\n });\n}\n\n/**\n * Set the attributes of the pen.\n *\n * @param {Number} penSize The size of the lines drawn by the pen\n * @param {String} penColor The color of the lines drawn by the pen\n */\nexport function setArrow(penSize = 10, penColor = '0000FF') {\n _penSize = parseInt(penSize, 10);\n _penColor = penColor;\n}\n\n/**\n * Enable the pen behavior\n */\nexport function enableArrow() {\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mousedown', handleDocumentMousedown);\n document.addEventListener('keyup', handleDocumentKeyup);\n disableUserSelect();\n}\n\n/**\n * Disable the pen behavior\n */\nexport function disableArrow() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('keyup', handleDocumentKeyup);\n enableUserSelect();\n}\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport {\n findAnnotationAtPoint,\n getMetadata\n} from './utils';\n\nlet _canerase = false;\nlet previousPoint = null;\n\n/**\n *\n * @param {PointerEvent} e DOM event to handle\n */\nfunction handleDocumentDown(e) {\n _canerase = true;\n previousPoint = [e.clientX, e.clientY];\n}\n\n/**\n *\n * @param {PointerEvent} e DOM event to handle\n */\nfunction handleDocumentUp(e) {\n _canerase = false;\n erase(findAnnotationAtPoint(e.clientX, e.clientY));\n}\n\n/**\n *\n * @param {PointerEvent} e DOM event to handle\n */\nfunction handleDocumentMouseMove(e) {\n if (!_canerase) {\n return;\n }\n\n // This algorithm attempts to get the various points between the last\n // PointerEvent and this one\n let check = [];\n let diffX = Math.abs(previousPoint[0] - e.clientX);\n let diffY = Math.abs(previousPoint[1] - e.clientY);\n if (diffX >= 1 || diffY >= 1) {\n let maxSteps = Math.round(Math.max(diffX, diffY));\n let subStepSize = Math.min(diffX, diffY) / maxSteps;\n let smallerTest = diffX < diffY;\n let startPoint = [\n Math.min(previousPoint[0], e.clientX),\n Math.min(previousPoint[1], e.clientY)\n ];\n for (let i = 0; i < maxSteps; i++) {\n if (smallerTest) {\n check.push([Math.round(startPoint[0] + (subStepSize * i)), Math.round(startPoint[1] + i)]);\n }\n else {\n check.push([Math.round(startPoint[0] + i), Math.round(startPoint[1] + (subStepSize * i))]);\n }\n }\n }\n for (let point of check) {\n erase(findAnnotationAtPoint(point[0], point[1]));\n }\n previousPoint = [e.clientX, e.clientY];\n}\n\nfunction erase(target) {\n if (!_canerase) {\n return;\n }\n\n if (target) {\n let { documentId } = getMetadata(target.parentElement);\n let annotationId = target.getAttribute('data-pdf-annotate-id');\n PDFJSAnnotate.getStoreAdapter().deleteAnnotation(documentId, annotationId).then(() => {\n let nodes = document.querySelectorAll(`[data-pdf-annotate-id=\"${annotationId}\"]`);\n [...nodes].forEach((n) => {\n n.parentNode.removeChild(n);\n });\n });\n }\n}\n\nexport function enableEraser() {\n document.addEventListener('pointermove', handleDocumentMouseMove);\n document.addEventListener('pointerdown', handleDocumentDown);\n document.addEventListener('pointerup', handleDocumentUp);\n}\n\nexport function disableEraser() {\n document.removeEventListener('pointermove', handleDocumentMouseMove);\n document.removeEventListener('pointerdown', handleDocumentDown);\n document.removeEventListener('pointerup', handleDocumentUp);\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n BORDER_COLOR,\n findSVGAtPoint,\n getMetadata,\n scaleDown\n} from './utils';\n\nlet _enabled = false;\nlet input;\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} The DOM event to be handled\n */\nfunction handleDocumentMouseup(e) {\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n\n input = document.createElement('input');\n input.setAttribute('id', 'pdf-annotate-point-input');\n input.setAttribute('placeholder', 'Enter comment');\n input.style.border = `3px solid ${BORDER_COLOR}`;\n input.style.borderRadius = '3px';\n input.style.position = 'absolute';\n input.style.top = `${e.clientY}px`;\n input.style.left = `${e.clientX}px`;\n\n input.addEventListener('blur', handleInputBlur);\n input.addEventListener('keyup', handleInputKeyup);\n\n document.body.appendChild(input);\n input.focus();\n}\n\n/**\n * Handle input.blur event\n */\nfunction handleInputBlur() {\n savePoint();\n}\n\n/**\n * Handle input.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleInputKeyup(e) {\n if (e.keyCode === 27) {\n closeInput();\n }\n else if (e.keyCode === 13) {\n savePoint();\n }\n}\n\n/**\n * Save a new point annotation from input\n */\nfunction savePoint() {\n if (input.value.trim().length > 0) {\n let clientX = parseInt(input.style.left, 10);\n let clientY = parseInt(input.style.top, 10);\n let content = input.value.trim();\n let svg = findSVGAtPoint(clientX, clientY);\n if (!svg) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n let { documentId, pageNumber } = getMetadata(svg);\n let annotation = Object.assign({\n type: 'point'\n }, scaleDown(svg, {\n x: clientX - rect.left,\n y: clientY - rect.top\n }));\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n PDFJSAnnotate.getStoreAdapter().addComment(\n documentId,\n annotation.uuid,\n content\n );\n\n appendChild(svg, annotation);\n });\n }\n\n closeInput();\n}\n\n/**\n * Close the input element\n */\nfunction closeInput() {\n input.removeEventListener('blur', handleInputBlur);\n input.removeEventListener('keyup', handleInputKeyup);\n document.body.removeChild(input);\n input = null;\n}\n\n/**\n * Enable point annotation behavior\n */\nexport function enablePoint() {\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Disable point annotation behavior\n */\nexport function disablePoint() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport config from '../config';\nimport { appendChild } from '../render/appendChild';\nimport {\n BORDER_COLOR,\n disableUserSelect,\n enableUserSelect,\n findSVGAtPoint,\n getMetadata,\n convertToSvgRect\n} from './utils';\n\nlet _enabled = false;\nlet _type;\nlet overlay;\nlet originY;\nlet originX;\n\n/**\n * Get the current window selection as rects\n *\n * @return {Array} An Array of rects\n */\nfunction getSelectionRects() {\n try {\n let selection = window.getSelection();\n let range = selection.getRangeAt(0);\n let rects = range.getClientRects();\n\n if (rects.length > 0 &&\n rects[0].width > 0 &&\n rects[0].height > 0) {\n return rects;\n }\n }\n catch (e) {}\n\n return null;\n}\n\n/**\n * Handle document.mousedown event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMousedown(e) {\n let svg;\n if (_type !== 'area' || !(svg = findSVGAtPoint(e.clientX, e.clientY))) {\n return;\n }\n\n let rect = svg.getBoundingClientRect();\n originY = e.clientY;\n originX = e.clientX;\n\n overlay = document.createElement('div');\n overlay.style.position = 'absolute';\n overlay.style.top = `${originY - rect.top}px`;\n overlay.style.left = `${originX - rect.left}px`;\n overlay.style.border = `3px solid ${BORDER_COLOR}`;\n overlay.style.borderRadius = '3px';\n svg.parentNode.appendChild(overlay);\n\n document.addEventListener('mousemove', handleDocumentMousemove);\n disableUserSelect();\n}\n\n/**\n * Handle document.mousemove event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMousemove(e) {\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let rect = svg.getBoundingClientRect();\n\n if (originX + (e.clientX - originX) < rect.right) {\n overlay.style.width = `${e.clientX - originX}px`;\n }\n\n if (originY + (e.clientY - originY) < rect.bottom) {\n overlay.style.height = `${e.clientY - originY}px`;\n }\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n let rects;\n if (_type !== 'area' && (rects = getSelectionRects())) {\n saveRect(_type, [...rects].map((r) => {\n return {\n top: r.top,\n left: r.left,\n width: r.width,\n height: r.height\n };\n }));\n }\n else if (_type === 'area' && overlay) {\n let svg = overlay.parentNode.querySelector(config.annotationSvgQuery());\n let rect = svg.getBoundingClientRect();\n saveRect(_type, [{\n top: parseInt(overlay.style.top, 10) + rect.top,\n left: parseInt(overlay.style.left, 10) + rect.left,\n width: parseInt(overlay.style.width, 10),\n height: parseInt(overlay.style.height, 10)\n }]);\n\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n\n document.removeEventListener('mousemove', handleDocumentMousemove);\n enableUserSelect();\n }\n}\n\n/**\n * Handle document.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentKeyup(e) {\n // Cancel rect if Esc is pressed\n if (e.keyCode === 27) {\n let selection = window.getSelection();\n selection.removeAllRanges();\n if (overlay && overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n overlay = null;\n document.removeEventListener('mousemove', handleDocumentMousemove);\n }\n }\n}\n\n/**\n * Save a rect annotation\n *\n * @param {String} type The type of rect (area, highlight, strikeout)\n * @param {Array} rects The rects to use for annotation\n * @param {String} color The color of the rects\n */\nfunction saveRect(type, rects, color) {\n let svg = findSVGAtPoint(rects[0].left, rects[0].top);\n let annotation;\n\n if (!svg) {\n return;\n }\n\n let boundingRect = svg.getBoundingClientRect();\n\n if (!color) {\n if (type === 'highlight') {\n color = 'FFFF00';\n }\n else if (type === 'strikeout') {\n color = 'FF0000';\n }\n }\n\n // Initialize the annotation\n annotation = {\n type,\n color,\n rectangles: [...rects].map((r) => {\n let offset = 0;\n\n if (type === 'strikeout') {\n offset = r.height / 2;\n }\n\n return convertToSvgRect({\n y: (r.top + offset) - boundingRect.top,\n x: r.left - boundingRect.left,\n width: r.width,\n height: r.height\n }, svg);\n }).filter((r) => r.width > 0 && r.height > 0 && r.x > -1 && r.y > -1)\n };\n\n // Short circuit if no rectangles exist\n if (annotation.rectangles.length === 0) {\n return;\n }\n\n // Special treatment for area as it only supports a single rect\n if (type === 'area') {\n let rect = annotation.rectangles[0];\n delete annotation.rectangles;\n annotation.x = rect.x;\n annotation.y = rect.y;\n annotation.width = rect.width;\n annotation.height = rect.height;\n }\n\n let { documentId, pageNumber } = getMetadata(svg);\n\n // Add the annotation\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n}\n\n/**\n * Enable rect behavior\n */\nexport function enableRect(type) {\n _type = type;\n\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n document.addEventListener('mousedown', handleDocumentMousedown);\n document.addEventListener('keyup', handleDocumentKeyup);\n}\n\n/**\n * Disable rect behavior\n */\nexport function disableRect() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n document.removeEventListener('mousedown', handleDocumentMousedown);\n document.removeEventListener('keyup', handleDocumentKeyup);\n}\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n findSVGAtPoint,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet _type;\nlet _circleRadius = 10;\nlet _circleColor = '0000FF';\n\n/**\n * Set the attributes of the pen.\n *\n * @param {Number} circleRadius The radius of the circle\n * @param {String} circleColor The color of the circle\n */\nexport function setCircle(circleRadius = 10, circleColor = '0000FF') {\n _circleRadius = parseInt(circleRadius, 10);\n _circleColor = circleColor;\n}\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n let svg = findSVGAtPoint(e.clientX, e.clientY);\n if (!svg) {\n return;\n }\n let rect = svg.getBoundingClientRect();\n saveCircle(svg, _type, {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top\n }, _circleRadius, _circleColor);\n}\n\n/**\n * Save a circle annotation\n *\n * @param {SVGElement} svg\n * @param {String} type The type of circle (circle, emptycircle, fillcircle)\n * @param {Object} pt The point to use for annotation\n * @param {float} radius\n * @param {String} color The color of the rects\n */\nfunction saveCircle(svg, type, pt, radius, color) {\n // Initialize the annotation\n let svg_pt = convertToSvgPoint([ pt.x, pt.y ], svg);\n let annotation = {\n type,\n color,\n cx: svg_pt[0],\n cy: svg_pt[1],\n r: radius\n };\n\n let { documentId, pageNumber } = getMetadata(svg);\n\n // Add the annotation\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n}\n\n/**\n * Enable circle behavior\n */\nexport function enableCircle(type) {\n _type = type;\n\n if (_enabled) { return; }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Disable circle behavior\n */\nexport function disableCircle() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\nexport function addCircle(type, e) {\n let oldType = _type;\n _type = type;\n handleDocumentMouseup(e);\n _type = oldType;\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport { appendChild } from '../render/appendChild';\nimport {\n BORDER_COLOR,\n findSVGAtPoint,\n getMetadata,\n convertToSvgPoint\n} from './utils';\n\nlet _enabled = false;\nlet input;\nlet _textSize = localStorage.getItem(`text/size`) || 12;\nlet _textColor = localStorage.getItem(`text/color`) || '#000000';\n\n/**\n * Handle document.mouseup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleDocumentMouseup(e) {\n if (input || !findSVGAtPoint(e.clientX, e.clientY)) {\n return;\n }\n if (!e.srcElement.classList.contains('annotationLayer')) {\n return;\n }\n input = document.createElement('textarea');\n input.setAttribute('id', 'pdf-annotate-text-input');\n input.setAttribute('placeholder', 'Enter text... SHIFT + ENTER for new line');\n input.style.border = `3px solid ${BORDER_COLOR}`;\n input.style.borderRadius = '3px';\n input.style.position = 'fixed';\n input.style.top = `${e.clientY}px`;\n input.style.left = `${e.clientX}px`;\n input.style.fontSize = `${_textSize}px`;\n input.style.zIndex = '41';\n input.addEventListener('blur', handleInputBlur);\n input.addEventListener('keyup', handleInputKeyup);\n\n document.body.appendChild(input);\n input.focus();\n}\n\n/**\n * Handle input.blur event\n */\nfunction handleInputBlur() {\n saveText();\n}\n\n/**\n * Handle input.keyup event\n *\n * @param {Event} e The DOM event to handle\n */\nfunction handleInputKeyup(e) {\n if (e.keyCode === 27) {\n closeInput();\n }\n else if (e.keyCode === 13 && !e.shiftKey) {\n saveText();\n }\n}\n\n/**\n * Save a text annotation from input\n */\nfunction saveText() {\n let value = (input.value) ? input.value.replace(/ +$/, '') : '';\n if (value.length > 0) {\n let clientX = parseInt(input.style.left, 10);\n let clientY = parseInt(input.style.top, 10);\n let svg = findSVGAtPoint(clientX, clientY);\n if (!svg) {\n return;\n }\n let height = _textSize;\n let { documentId, pageNumber, viewport } = getMetadata(svg);\n let scale = 1 / viewport.scale;\n let rect = svg.getBoundingClientRect();\n let pt = convertToSvgPoint([\n clientX - rect.left,\n clientY - rect.top + height], svg, viewport);\n let annotation = {\n type: 'textbox',\n size: _textSize * scale,\n color: _textColor,\n content: value,\n x: pt[0],\n y: pt[1],\n rotation: -viewport.rotation\n };\n\n PDFJSAnnotate.getStoreAdapter().addAnnotation(documentId, pageNumber, annotation)\n .then((annotation) => {\n appendChild(svg, annotation);\n });\n }\n\n closeInput();\n}\n\n/**\n * Close the input\n */\nfunction closeInput() {\n if (input) {\n input.removeEventListener('blur', handleInputBlur);\n input.removeEventListener('keyup', handleInputKeyup);\n document.body.removeChild(input);\n input = null;\n }\n}\n\n/**\n * Set the text attributes\n *\n * @param {Number} textSize The size of the text\n * @param {String} textColor The color of the text\n */\nexport function setText(textSize = 12, textColor = '000000') {\n _textSize = parseInt(textSize, 10);\n _textColor = textColor;\n}\n\n/**\n * Enable text behavior\n */\nexport function enableText() {\n if (_enabled) {\n return;\n }\n\n _enabled = true;\n document.addEventListener('mouseup', handleDocumentMouseup);\n}\n\n/**\n * Disable text behavior\n */\nexport function disableText() {\n if (!_enabled) { return; }\n\n _enabled = false;\n document.removeEventListener('mouseup', handleDocumentMouseup);\n}\n\n","/**\n * Create a node that is only visible to screen readers\n *\n * @param {String} content The text content that should be read by screen reader\n * @param {String} [annotationId] The ID of the annotation assocaited\n * @return {Element} An Element that is only visible to screen readers\n */\nexport default function createScreenReaderOnly(content, annotationId) {\n let node = document.createElement('div');\n let text = document.createTextNode(content);\n node.appendChild(text);\n node.setAttribute('id', `pdf-annotate-screenreader-${annotationId}`);\n node.style.position = 'absolute';\n node.style.left = '-10000px';\n node.style.top = 'auto';\n node.style.width = '1px';\n node.style.height = '1px';\n node.style.overflow = 'hidden';\n return node;\n}\n","import config from '../config';\nimport {\n pointIntersectsRect,\n scaleUp,\n scaleDown\n} from '../UI/utils';\n\n/**\n * Insert an element at a point within the document.\n * This algorithm will only insert within an element amidst it's text content.\n *\n * @param {Element} el The element to be inserted\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page number to limit elements to\n * @param {Boolean} insertBefore Whether the element is to be inserted before or after x\n * @return {Boolean} True if element was able to be inserted, otherwise false\n */\nexport default function insertElementWithinElement(el, x, y, pageNumber, insertBefore) {\n const OFFSET_ADJUST = 2;\n\n // If inserting before adjust `x` by looking for element a few px to the right\n // Otherwise adjust a few px to the left\n // This is to allow a little tolerance by searching within the box, instead\n // of getting a false negative by testing right on the border.\n x = Math.max(x + (OFFSET_ADJUST * (insertBefore ? 1 : -1)), 0);\n\n let node = textLayerElementFromPoint(x, y + OFFSET_ADJUST, pageNumber);\n if (!node) {\n return false;\n }\n\n // Now that node has been found inverse the adjustment for `x`.\n // This is done to accomodate tolerance by cutting off on the outside of the\n // text boundary, instead of missing a character by cutting off within.\n x = x + (OFFSET_ADJUST * (insertBefore ? -1 : 1));\n\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let left = scaleDown(svg, {left: node.getBoundingClientRect().left}).left - svg.getBoundingClientRect().left;\n let temp = node.cloneNode(true);\n let head = temp.innerHTML.split('');\n let tail = [];\n\n // Insert temp off screen\n temp.style.position = 'absolute';\n temp.style.top = '-10000px';\n temp.style.left = '-10000px';\n document.body.appendChild(temp);\n\n while (head.length) {\n // Don't insert within HTML tags\n if (head[head.length - 1] === '>') {\n while (head.length) {\n tail.unshift(head.pop());\n if (tail[0] === '<') {\n break;\n }\n }\n }\n\n // Check if width of temp based on current head value satisfies x\n temp.innerHTML = head.join('');\n let width = scaleDown(svg, {width: temp.getBoundingClientRect().width}).width;\n if (left + width <= x) {\n break;\n }\n tail.unshift(head.pop());\n }\n\n // Update original node with new markup, including element to be inserted\n node.innerHTML = head.join('') + el.outerHTML + tail.join('');\n temp.parentNode.removeChild(temp);\n\n return true;\n}\n\n/**\n * Get a text layer element at a given point on a page\n *\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page to limit elements to\n * @return {Element} First text layer element found at the point\n */\nfunction textLayerElementFromPoint(x, y, pageNumber) {\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let rect = svg.getBoundingClientRect();\n y = scaleUp(svg, {y}).y + rect.top;\n x = scaleUp(svg, {x}).x + rect.left;\n return [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' [data-canvas-width]')].filter((el) => {\n return pointIntersectsRect(x, y, el.getBoundingClientRect());\n })[0];\n}\n","import config from '../config';\nimport insertElementWithinElement from './insertElementWithinElement';\nimport { pointIntersectsRect, scaleUp } from '../UI/utils';\n\n/**\n * Insert an element at a point within the document.\n * This algorithm will try to insert between elements if possible.\n * It will however use `insertElementWithinElement` if it is more accurate.\n *\n * @param {Element} el The element to be inserted\n * @param {Number} x The x coordinate of the point\n * @param {Number} y The y coordinate of the point\n * @param {Number} pageNumber The page number to limit elements to\n * @return {Boolean} True if element was able to be inserted, otherwise false\n */\nexport default function insertElementWithinChildren(el, x, y, pageNumber) {\n // Try and use most accurate method of inserting within an element\n if (insertElementWithinElement(el, x, y, pageNumber, true)) {\n return true;\n }\n\n // Fall back to inserting between elements\n let svg = document.querySelector(`svg[data-pdf-annotate-page=\"${pageNumber}\"]`);\n let rect = svg.getBoundingClientRect();\n let nodes = [...svg.parentNode.querySelectorAll(config.textClassQuery() + ' > div')];\n\n y = scaleUp(svg, {y}).y + rect.top;\n x = scaleUp(svg, {x}).x + rect.left;\n\n // Find the best node to insert before\n for (let i = 0, l = nodes.length; i < l; i++) {\n let n = nodes[i];\n let r = n.getBoundingClientRect();\n if (y <= r.top) {\n n.parentNode.insertBefore(el, n);\n return true;\n }\n }\n\n // If all else fails try to append to the bottom\n let textLayer = svg.parentNode.querySelector(config.textClassQuery());\n if (textLayer) {\n let textRect = textLayer.getBoundingClientRect();\n if (pointIntersectsRect(x, y, textRect)) {\n textLayer.appendChild(el);\n return true;\n }\n }\n\n return false;\n}\n","/**\n * Insert a comment into the DOM to be available by screen reader\n *\n * @param {Object} comment The comment to be inserted\n */\nexport default function insertScreenReaderComment(comment) {\n if (!comment) {\n return;\n }\n\n let list = document.querySelector(`#pdf-annotate-screenreader-${comment.annotation} ol`);\n if (list) {\n let item = document.createElement('li');\n item.setAttribute('id', `pdf-annotate-screenreader-comment-${comment.uuid}`);\n item.appendChild(document.createTextNode(`${comment.content}`));\n list.appendChild(item);\n }\n}\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport insertScreenReaderComment from './insertScreenReaderComment';\n\n/**\n * Insert the comments into the DOM to be available by screen reader\n *\n * Example output:\n *
\n *
Begin highlight 1
\n *
    \n *
  1. Foo
  2. \n *
  3. Bar
  4. \n *
  5. Baz
  6. \n *
  7. Qux
  8. \n *
\n *
\n *
Some highlighted text goes here...
\n *
End highlight 1
\n *\n * NOTE: `screenReaderOnly` is not a real class, just used for brevity\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The ID of the annotation\n * @param {Array} [comments] Optionally preloaded comments to be rendered\n * @return {Promise} Promise that once has comments, render them for screen reader\n */\nexport default function renderScreenReaderComments(documentId, annotationId, comments) {\n let promise;\n\n if (Array.isArray(comments)) {\n promise = Promise.resolve(comments);\n }\n else {\n promise = PDFJSAnnotate.getStoreAdapter().getComments(documentId, annotationId);\n }\n\n return promise.then((comments) => {\n // Node needs to be found by querying DOM as it may have been inserted as innerHTML\n // leaving `screenReaderNode` as an invalid reference (see `insertElementWithinElement`).\n let node = document.getElementById(`pdf-annotate-screenreader-${annotationId}`);\n if (node) {\n let list = document.createElement('ol');\n list.setAttribute('id', `pdf-annotate-screenreader-comment-list-${annotationId}`);\n list.setAttribute('aria-label', 'Comments');\n node.appendChild(list);\n comments.forEach(insertScreenReaderComment);\n }\n });\n}\n","import createScreenReaderOnly from './createScreenReaderOnly';\nimport insertElementWithinChildren from './insertElementWithinChildren';\nimport insertElementWithinElement from './insertElementWithinElement';\nimport renderScreenReaderComments from './renderScreenReaderComments';\n\n// Annotation types that support comments\nconst COMMENT_TYPES = ['highlight', 'point', 'area', 'circle', 'emptycircle', 'fillcircle'];\n\n/**\n * Insert a hint into the DOM for screen readers for a specific annotation.\n *\n * @param {Object} annotation The annotation to insert a hint for\n * @param {Number} num The number of the annotation out of all annotations of the same type\n */\nexport default function insertScreenReaderHint(annotation, num = 0) {\n switch (annotation.type) {\n case 'highlight':\n case 'strikeout':\n let rects = annotation.rectangles;\n let first = rects[0];\n let last = rects[rects.length - 1];\n\n insertElementWithinElement(\n createScreenReaderOnly(`Begin ${annotation.type} annotation ${num}`, annotation.uuid),\n first.x, first.y, annotation.page, true\n );\n\n insertElementWithinElement(\n createScreenReaderOnly(`End ${annotation.type} annotation ${num}`, `${annotation.uuid}-end`),\n last.x + last.width, last.y, annotation.page, false\n );\n break;\n\n case 'textbox':\n case 'point':\n let text = annotation.type === 'textbox' ? ` (content: ${annotation.content})` : '';\n\n insertElementWithinChildren(\n createScreenReaderOnly(`${annotation.type} annotation ${num}${text}`, annotation.uuid),\n annotation.x, annotation.y, annotation.page\n );\n break;\n\n case 'drawing':\n case 'area':\n let x = typeof annotation.x !== 'undefined' ? annotation.x : annotation.lines[0][0];\n let y = typeof annotation.y !== 'undefined' ? annotation.y : annotation.lines[0][1];\n\n insertElementWithinChildren(\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\n x, y, annotation.page\n );\n break;\n\n case 'circle':\n case 'fillcircle':\n case 'emptycircle':\n let x2 = typeof annotation.cx !== 'undefined' ? annotation.cx : annotation.lines[0][0];\n let y2 = typeof annotation.cy !== 'undefined' ? annotation.cy : annotation.lines[0][1];\n\n insertElementWithinChildren(\n createScreenReaderOnly(`Unlabeled drawing`, annotation.uuid),\n x2, y2, annotation.page\n );\n break;\n }\n\n // Include comments in screen reader hint\n if (COMMENT_TYPES.includes(annotation.type)) {\n renderScreenReaderComments(annotation.documentId, annotation.uuid);\n }\n}\n","import renderScreenReaderHints from './renderScreenReaderHints';\nimport insertScreenReaderComment from './insertScreenReaderComment';\nimport renderScreenReaderComments from './renderScreenReaderComments';\nimport { addEventListener } from '../UI/event';\nimport PDFJSAnnotate from '../PDFJSAnnotate';\n\n/**\n * Initialize the event handlers for keeping screen reader hints synced with data\n */\nexport default function initEventHandlers() {\n addEventListener('annotation:add', (documentId, pageNumber, annotation) => {\n reorderAnnotationsByType(documentId, pageNumber, annotation.type);\n });\n addEventListener('annotation:edit', (documentId, annotationId, annotation) => {\n reorderAnnotationsByType(documentId, annotation.page, annotation.type);\n });\n addEventListener('annotation:delete', removeAnnotation);\n addEventListener('comment:add', insertComment);\n addEventListener('comment:delete', removeComment);\n}\n\n/**\n * Reorder the annotation numbers by annotation type\n *\n * @param {String} documentId The ID of the document\n * @param {Number} pageNumber The page number of the annotations\n * @param {Strig} type The annotation type\n */\nfunction reorderAnnotationsByType(documentId, pageNumber, type) {\n PDFJSAnnotate.getStoreAdapter().getAnnotations(documentId, pageNumber)\n .then((annotations) => {\n return annotations.annotations.filter((a) => {\n return a.type === type;\n });\n })\n .then((annotations) => {\n annotations.forEach((a) => {\n removeAnnotation(documentId, a.uuid);\n });\n\n return annotations;\n })\n .then(renderScreenReaderHints);\n}\n\n/**\n * Remove the screen reader hint for an annotation\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The Id of the annotation\n */\nfunction removeAnnotation(documentId, annotationId) {\n removeElementById(`pdf-annotate-screenreader-${annotationId}`);\n removeElementById(`pdf-annotate-screenreader-${annotationId}-end`);\n}\n\n/**\n * Insert a screen reader hint for a comment\n *\n * @param {String} documentId The ID of the document\n * @param {String} annotationId The ID of tha assocated annotation\n * @param {Object} comment The comment to insert a hint for\n */\nfunction insertComment(documentId, annotationId, comment) {\n let list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\n let promise;\n\n if (!list) {\n promise = renderScreenReaderComments(documentId, annotationId, []).then(() => {\n list = document.querySelector(`pdf-annotate-screenreader-comment-list-${annotationId}`);\n return true;\n });\n }\n else {\n promise = Promise.resolve(true);\n }\n\n promise.then(() => {\n insertScreenReaderComment(comment);\n });\n}\n\n/**\n * Remove a screen reader hint for a comment\n *\n * @param {String} documentId The ID of the document\n * @param {String} commentId The ID of the comment\n */\nfunction removeComment(documentId, commentId) {\n removeElementById(`pdf-annotate-screenreader-comment-${commentId}`);\n}\n\n/**\n * Remove an element from the DOM by it's ID if it exists\n *\n * @param {String} elementId The ID of the element to be removed\n */\nfunction removeElementById(elementId) {\n let el = document.getElementById(elementId);\n if (el) {\n el.parentNode.removeChild(el);\n }\n}\n","import insertScreenReaderHint from './insertScreenReaderHint';\nimport initEventHandlers from './initEventHandlers';\n\n// TODO This is not the right place for this to live\ninitEventHandlers();\n\n/**\n * Insert hints into the DOM for screen readers.\n *\n * @param {Array} annotations The annotations that hints are inserted for\n */\nexport default function renderScreenReaderHints(annotations) {\n annotations = Array.isArray(annotations) ? annotations : [];\n\n // Insert hints for each type\n Object.keys(SORT_TYPES).forEach((type) => {\n let sortBy = SORT_TYPES[type];\n annotations\n .filter((a) => a.type === type)\n .sort(sortBy)\n .forEach((a, i) => insertScreenReaderHint(a, i + 1));\n });\n}\n\n// Sort annotations first by y, then by x.\n// This allows hints to be injected in the order they appear,\n// which makes numbering them easier.\nfunction sortByPoint(a, b) {\n if (a.y < b.y) {\n return a.x - b.x;\n }\n else {\n return 1;\n }\n}\n\n// Sort annotation by it's first rectangle\nfunction sortByRectPoint(a, b) {\n return sortByPoint(a.rectangles[0], b.rectangles[0]);\n}\n\n// Sort annotation by it's first line\nfunction sortByLinePoint(a, b) {\n let lineA = a.lines[0];\n let lineB = b.lines[0];\n return sortByPoint(\n {x: lineA[0], y: lineA[1]},\n {x: lineB[0], y: lineB[1]}\n );\n}\n\n// Arrange supported types and associated sort methods\nconst SORT_TYPES = {\n 'highlight': sortByRectPoint,\n 'strikeout': sortByRectPoint,\n 'drawing': sortByLinePoint,\n 'textbox': sortByPoint,\n 'point': sortByPoint,\n 'area': sortByPoint\n};\n\n","import PDFJSAnnotate from '../PDFJSAnnotate';\nimport config from '../config';\nimport renderScreenReaderHints from '../a11y/renderScreenReaderHints';\n\n// Template for creating a new page\nconst PAGE_TEMPLATE = `\n
\n
\n \n
\n
\n \n
\n`;\n\n/**\n * Create a new page to be appended to the DOM.\n *\n * @param {Number} pageNumber The page number that is being created\n * @return {HTMLElement}\n */\nexport function createPage(pageNumber) {\n let temp = document.createElement('div');\n temp.innerHTML = PAGE_TEMPLATE;\n\n let page = temp.children[0];\n let canvas = page.querySelector('canvas');\n\n page.setAttribute('id', `pageContainer${pageNumber}`);\n page.setAttribute('data-page-number', pageNumber);\n\n canvas.mozOpaque = true;\n canvas.setAttribute('id', `page${pageNumber}`);\n\n return page;\n}\n\n/**\n * Render a page that has already been created.\n *\n * @param {Number} pageNumber The page number to be rendered\n * @param {Object} renderOptions The options for rendering\n * @return {Promise} Settled once rendering has completed\n * A settled Promise will be either:\n * - fulfilled: [pdfPage, annotations]\n * - rejected: Error\n */\nexport function renderPage(pageNumber, renderOptions) {\n let {\n documentId,\n pdfDocument,\n scale,\n rotate\n } = renderOptions;\n\n const eventBus = new pdfjsViewer.EventBus();\n\n // Load the page and annotations\n return Promise.all([\n pdfDocument.getPage(pageNumber),\n PDFJSAnnotate.getAnnotations(documentId, pageNumber)\n ]).then(([pdfPage, annotations]) => {\n let page = document.getElementById(`pageContainer${pageNumber}`);\n let svg = page.querySelector(config.annotationClassQuery());\n let canvas = page.querySelector('.canvasWrapper canvas');\n let canvasContext = canvas.getContext('2d', {alpha: false});\n let totalRotation = (rotate + pdfPage.rotate) % 360;\n let viewport = pdfPage.getViewport({scale: scale, rotation: totalRotation});\n let transform = scalePage(pageNumber, viewport, canvasContext);\n\n // Render the page\n return Promise.all([\n pdfPage.render({ canvasContext, viewport, transform }).promise,\n PDFJSAnnotate.render(svg, viewport, annotations)\n ]).then(() => {\n // Text content is needed for a11y, but is also necessary for creating\n // highlight and strikeout annotations which require selecting text.\n return pdfPage.getTextContent({normalizeWhitespace: true}).then((textContent) => {\n return new Promise((resolve, reject) => {\n // Render text layer for a11y of text content\n let textLayer = page.querySelector(config.textClassQuery());\n let textLayerFactory = new pdfjsViewer.DefaultTextLayerFactory();\n let textLayerBuilder = textLayerFactory.createTextLayerBuilder(\n textLayer,\n pageNumber - 1,\n viewport,\n false,\n eventBus\n );\n textLayerBuilder.setTextContent(textContent);\n textLayerBuilder.render();\n\n // Enable a11y for annotations\n // Timeout is needed to wait for `textLayerBuilder.render`\n setTimeout(() => {\n try {\n renderScreenReaderHints(annotations.annotations);\n resolve();\n }\n catch (e) {\n reject(e);\n }\n });\n });\n });\n }).then(() => {\n // Indicate that the page was loaded\n page.setAttribute('data-loaded', 'true');\n\n return [pdfPage, annotations];\n });\n });\n}\n\n/**\n * Scale the elements of a page.\n *\n * @param {Number} pageNumber The page number to be scaled\n * @param {Object} viewport The viewport of the PDF page (see pdfPage.getViewport(scale, rotate))\n * @param {Object} context The canvas context that the PDF page is rendered to\n * @return {Array} The transform data for rendering the PDF page\n */\nfunction scalePage(pageNumber, viewport, context) {\n let page = document.getElementById(`pageContainer${pageNumber}`);\n let canvas = page.querySelector('.canvasWrapper canvas');\n let svg = page.querySelector(config.annotationClassQuery());\n let wrapper = page.querySelector('.canvasWrapper');\n let textLayer = page.querySelector(config.textClassQuery());\n let outputScale = getOutputScale(context);\n let transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\n let sfx = approximateFraction(outputScale.sx);\n let sfy = approximateFraction(outputScale.sy);\n\n // Adjust width/height for scale\n page.style.visibility = '';\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px';\n canvas.style.height = roundToDivide(viewport.height, sfx[1]) + 'px';\n svg.setAttribute('width', viewport.width);\n svg.setAttribute('height', viewport.height);\n svg.style.width = `${viewport.width}px`;\n svg.style.height = `${viewport.height}px`;\n page.style.width = `${viewport.width}px`;\n page.style.height = `${viewport.height}px`;\n wrapper.style.width = `${viewport.width}px`;\n wrapper.style.height = `${viewport.height}px`;\n textLayer.style.width = `${viewport.width}px`;\n textLayer.style.height = `${viewport.height}px`;\n\n return transform;\n}\n\n/**\n * Approximates a float number as a fraction using Farey sequence (max order of 8).\n *\n * @param {Number} x Positive float number\n * @return {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast path for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n }\n else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0; let b = 1; let c = 1; let d = 1;\n\n // Limit search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n let p = a + c; let q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p; d = q;\n }\n else {\n a = p; b = q;\n }\n }\n\n // Select closest of neighbours to x.\n if (x_ - a / b < c / d - x_) {\n return x_ === x ? [a, b] : [b, a];\n }\n else {\n return x_ === x ? [c, d] : [d, c];\n }\n}\n\nfunction getOutputScale(ctx) {\n let devicePixelRatio = window.devicePixelRatio || 1;\n let backingStoreRatio = ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1;\n let pixelRatio = devicePixelRatio / backingStoreRatio;\n return {\n sx: pixelRatio,\n sy: pixelRatio,\n scaled: pixelRatio !== 1\n };\n}\n\nfunction roundToDivide(x, div) {\n let r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n","import { addEventListener, removeEventListener, fireEvent } from './event';\nimport { disableEdit, enableEdit } from './edit';\nimport { disablePen, enablePen, setPen } from './pen';\nimport { disableArrow, enableArrow, setArrow } from './arrow';\nimport { disableEraser, enableEraser } from './eraser';\nimport { disablePoint, enablePoint } from './point';\nimport { disableRect, enableRect } from './rect';\nimport { disableCircle, enableCircle, setCircle, addCircle } from './circle';\nimport { disableText, enableText, setText } from './text';\nimport { createPage, renderPage } from './page';\n\nexport default {\n addEventListener,\n removeEventListener,\n fireEvent,\n\n disableEdit,\n enableEdit,\n\n disablePen,\n enablePen,\n setPen,\n\n disablePoint,\n enablePoint,\n\n disableRect,\n enableRect,\n\n disableCircle,\n enableCircle,\n setCircle,\n addCircle,\n\n disableArrow,\n enableArrow,\n setArrow,\n\n disableEraser,\n enableEraser,\n\n disableText,\n enableText,\n setText,\n\n createPage,\n renderPage\n};\n","import StoreAdapter from './adapter/StoreAdapter';\nimport LocalStoreAdapter from './adapter/LocalStoreAdapter';\nimport LocalUserStoreAdapter from './adapter/LocalUserStoreAdapter';\nimport render from './render';\nimport UI from './UI';\nimport config from './config';\nimport uuid from './utils/uuid';\nimport {\n findAnnotationAtPoint,\n findSVGContainer,\n convertToScreenPoint\n} from './UI/utils';\n\nexport default {\n findAnnotationAtPoint,\n findSVGContainer,\n convertToScreenPoint,\n\n /**\n * Abstract class that needs to be defined so PDFJSAnnotate\n * knows how to communicate with your server.\n */\n StoreAdapter,\n\n /**\n * Implementation of StoreAdapter that stores annotation data to localStorage.\n */\n LocalStoreAdapter,\n\n /**\n * Implementation of StoreAdapter that stores annotation data to localStorage particular\n * to a specific user\n */\n LocalUserStoreAdapter,\n\n /**\n * Abstract instance of StoreAdapter\n */\n __storeAdapter: new StoreAdapter(),\n\n /**\n * Getter for the underlying StoreAdapter property\n *\n * @return {StoreAdapter}\n */\n getStoreAdapter() {\n return this.__storeAdapter;\n },\n\n /**\n * Setter for the underlying StoreAdapter property\n *\n * @param {StoreAdapter} adapter The StoreAdapter implementation to be used.\n */\n setStoreAdapter(adapter) {\n // TODO this throws an error when bundled\n // if (!(adapter instanceof StoreAdapter)) {\n // throw new Error('adapter must be an instance of StoreAdapter');\n // }\n\n this.__storeAdapter = adapter;\n },\n\n /**\n * UI is a helper for instrumenting UI interactions for creating,\n * editing, and deleting annotations in the browser.\n */\n UI,\n\n /**\n * Render the annotations for a page in the PDF Document\n *\n * @param {SVGElement} svg The SVG element that annotations should be rendered to\n * @param {PageViewport} viewport The PDFPage.getViewport data\n * @param {Object} data The StoreAdapter.getAnnotations data\n * @return {Promise}\n */\n render,\n\n /**\n * Convenience method for getting annotation data\n *\n * @alias StoreAdapter.getAnnotations\n * @param {String} documentId The ID of the document\n * @param {String} pageNumber The page number\n * @return {Promise}\n */\n getAnnotations(documentId, pageNumber) {\n return this.getStoreAdapter().getAnnotations(...arguments);\n },\n\n config,\n\n uuid\n};\n","import { appendChild, transformChild } from './appendChild';\n\n/**\n * Render the response from PDFJSAnnotate.getStoreAdapter().getAnnotations to SVG\n *\n * @param {SVGElement} svg The SVG element to render the annotations to\n * @param {Object} viewport The page viewport data\n * @param {Object} data The response from PDFJSAnnotate.getStoreAdapter().getAnnotations\n * @return {Promise} Settled once rendering has completed\n * A settled Promise will be either:\n * - fulfilled: SVGElement\n * - rejected: Error\n */\nexport default function render(svg, viewport, data) {\n return new Promise((resolve, reject) => {\n // Reset the content of the SVG\n svg.setAttribute('data-pdf-annotate-container', true);\n svg.setAttribute('data-pdf-annotate-viewport', JSON.stringify(viewport));\n svg.removeAttribute('data-pdf-annotate-document');\n svg.removeAttribute('data-pdf-annotate-page');\n\n // If there's no data nothing can be done\n if (!data) {\n svg.innerHTML = '';\n return resolve(svg);\n }\n\n svg.setAttribute('data-pdf-annotate-document', data.documentId);\n svg.setAttribute('data-pdf-annotate-page', data.pageNumber);\n\n // Make sure annotations is an array\n if (!Array.isArray(data.annotations) || data.annotations.length === 0) {\n return resolve(svg);\n }\n\n // Append or transform annotation to svg\n data.annotations.forEach((a) => {\n let node = svg.querySelector('[data-pdf-annotate-id=\"' + a.uuid + '\"]');\n if (node) {\n transformChild(svg, node, viewport);\n }\n else {\n appendChild(svg, a, viewport);\n }\n });\n\n resolve(svg);\n });\n}\n","import PDFJSAnnotate from './src/PDFJSAnnotate';\n\nexport default PDFJSAnnotate;\n"],"names":["root","factory","exports","module","define","amd","self","ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","once","emitter","name","Promise","resolve","reject","errorListener","err","removeListener","resolver","slice","arguments","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","push","length","warned","w","Error","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","Array","i","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","pop","spliceOne","off","removeAllListeners","key","keys","rawListeners","eventNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","d","a","definition","o","obj","prop","hasOwnProperty","r","Symbol","toStringTag","abstractFunction","UPPER_REGEX","BLACKLIST","keyCase","indexOf","replace","match","toLowerCase","setAttributes","node","attributes","forEach","setAttribute","REGEX_HASHLESS_HEX","normalizeColor","color","test","SIZE","D","createRect","rect","document","createElementNS","x","y","width","height","renderText","text","fill","fontSize","size","transform","rotation","style","textElement","textContent","_step","lines","split","getAttribute","_iterator","_createForOfIteratorHelper","s","done","line","tspan","toString","innerHTML","appendChild","e","f","insertLineBreaks","content","g","renderCircle","circle","cx","cy","createCircle","stroke","translate","rotate","angle","Math","PI","cosValue","cos","sinValue","sin","scale","makePoint","z","makeVector","xcoord","ycoord","zcoord","makeVectorFromPoints","pt1","pt2","addVector","pt","v","multiplyVector","scalar","magnitude","sqrt","pow","negateVector","unitVector","mag","renderArrow","u","arrow","p1","p2","pt0","unitX","unitZ","unitY","thickness","A","B","C","G","F","E","points","isFirefox","navigator","userAgent","getTranslation","viewport","trans","nodeName","parseInt","path","querySelector","svg","parentNode","assign","annotation","child","group","JSON","parse","fillOpacity","rectangles","renderRect","strokeWidth","x1","y1","x2","y2","outerSVG","innerSVG","viewBox","renderPoint","l","join","renderPath","uuid","filter","transformChild","BORDER_COLOR","userSelectStyleSheet","createElement","findSVGContainer","toUpperCase","findSVGAtPoint","elements","querySelectorAll","el","pointIntersectsRect","getBoundingClientRect","findAnnotationAtPoint","candidate","elementFromPoint","top","bottom","left","right","getOffsetAnnotationRect","extraOffsetWidth","extraOffsetHeight","tagName","getBBox","bbox","_getOffset","offsetLeft","offsetTop","getOffset","scaleUp","result","getMetadata","convertToSvgPoint","xform","p","offset","convertToScreenPoint","scaleDown","disableUserSelect","head","enableUserSelect","removeChild","documentId","pageNumber","clickNode","fireEvent","clientX","clientY","StoreAdapter","_this","_classCallCheck","__getAnnotations","fn","then","annotations","annotationId","__addAnnotation","__editAnnotation","__deleteAnnotation","success","__addComment","comment","commentId","__deleteComment","REGEXP","replacement","c","random","LocalStoreAdapter","_StoreAdapter","_callSuper","getAnnotations","page","getAnnotation","findAnnotation","addAnnotation","updateAnnotations","editAnnotation","deleteAnnotation","splice","getComments","addComment","class","deleteComment","_inherits","localStorage","getItem","setItem","stringify","LocalUserStoreAdapter","userId","globalEdit","getAllAnnotations","_userId","_globalEdit","all_annotations","re","RegExp","search","_toConsumableArray","annotationLayerName","textLayerName","annotationSvgQuery","annotationClassQuery","textClassQuery","overlay","dragOffsetX","dragOffsetY","dragStartX","dragStartY","_enabled","isDragging","OVERLAY_BORDER_SIZE","destroyEditOverlay","handleDocumentClick","handleDocumentKeyup","handleDocumentMousedown","handleDocumentMousemove","handleDocumentMouseup","config","PDFJSAnnotate","getStoreAdapter","getElementById","keyTest","keyCode","preventDefault","background","cursor","display","maxY","maxX","offsetHeight","offsetWidth","attribX","attribY","modelStart","modelEnd","modelDelta","firstChild","t","modelX","modelY","setTimeout","handleAnnotationClick","anchor","id","styleLeft","styleTop","boxSizing","border","borderRadius","zIndex","padding","textAlign","textDecoration","borderColor","boxShadow","createEditOverlay","_penSize","_penColor","_candraw","handleDocumentPointerdown","handleDocumentPointerup","_getMetadata","saveToStorage","handleDocumentPointermove","point","toFixed","savePoint","originY","originX","_getMetadata2","_canerase","previousPoint","handleDocumentDown","handleDocumentUp","erase","handleDocumentMouseMove","check","diffX","abs","diffY","maxSteps","round","max","subStepSize","min","smallerTest","startPoint","_i","_check","parentElement","input","handleInputBlur","handleInputKeyup","body","focus","closeInput","trim","_type","rects","window","getSelection","getRangeAt","getClientRects","getSelectionRects","saveRect","map","removeAllRanges","boundingRect","convertToSvgRect","_circleRadius","_circleColor","radius","svg_pt","saveCircle","_textSize","_textColor","srcElement","classList","contains","saveText","shiftKey","createScreenReaderOnly","createTextNode","overflow","insertElementWithinElement","insertBefore","textLayerElementFromPoint","temp","cloneNode","tail","outerHTML","insertElementWithinChildren","nodes","textLayer","insertScreenReaderComment","item","renderScreenReaderComments","comments","isArray","COMMENT_TYPES","reorderAnnotationsByType","removeAnnotation","renderScreenReaderHints","removeElementById","insertComment","removeComment","elementId","SORT_TYPES","sortBy","sort","num","first","last","includes","insertScreenReaderHint","sortByPoint","b","sortByRectPoint","lineA","lineB","PAGE_TEMPLATE","approximateFraction","floor","xinv","x_","q","roundToDivide","div","disableEdit","enableEdit","disablePen","enablePen","setPen","penSize","penColor","parseFloat","disablePoint","enablePoint","disableRect","enableRect","disableCircle","enableCircle","setCircle","circleColor","addCircle","oldType","disableArrow","enableArrow","setArrow","disableEraser","enableEraser","disableText","enableText","setText","textColor","createPage","children","canvas","mozOpaque","renderPage","renderOptions","pdfDocument","eventBus","pdfjsViewer","EventBus","all","getPage","_ref","_ref2","_slicedToArray","pdfPage","canvasContext","getContext","alpha","totalRotation","getViewport","wrapper","outputScale","ctx","devicePixelRatio","backingStoreRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","pixelRatio","sx","sy","scaled","sfx","sfy","visibility","scalePage","render","promise","getTextContent","normalizeWhitespace","textLayerBuilder","DefaultTextLayerFactory","createTextLayerBuilder","setTextContent","__storeAdapter","setStoreAdapter","adapter","UI","data","removeAttribute","_this$getStoreAdapter"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 198a8009..566d7960 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1290 +1,2175 @@ { "name": "@submitty/pdf-annotate.js", - "version": "24.6.4", - "lockfileVersion": 1, + "version": "24.6.6", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "packages": { + "": { + "name": "@submitty/pdf-annotate.js", + "version": "24.6.6", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.24.8", + "@babel/preset-env": "^7.24.8", + "babel-loader": "^9.1.3", + "babel-plugin-add-module-exports": "^1.0.2", + "chai": "^4.2.0", + "codecov": "^3.5.0", + "eslint": "^7.19.0", + "karma": "^6.1.1", + "karma-chrome-launcher": "^3.0.0", + "karma-cli": "^2.0.0", + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-firefox-launcher": "^2.1.1", + "karma-mocha": "^2.0.0", + "karma-sinon-chai": "^2.0.2", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^5.0.1", + "mocha": "^10.4.0", + "pdfjs-dist": "4.3.136", + "sinon": "^18.0.0", + "sinon-chai": "^3.3.0", + "terser-webpack-plugin": "^5.3.10", + "typescript": "^5.5.3", + "webpack": "^5.93.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + }, + "peerDependencies": { + "pdfjs-dist": "^4.2.67" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/code-frame": { + "node_modules/@babel/code-frame": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "requires": { + "dependencies": { "@babel/highlight": "^7.10.4" } }, - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true + "node_modules/@babel/compat-data": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.8.tgz", + "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", + "node_modules/@babel/core": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.8.tgz", + "integrity": "sha512-6AWcmZC/MZCO0yKys4uhg5NlxL0ESF3K6IAaoQ+xSXvPyPyxNWRafP+GDbI88Oh68O7QkJgmEtedWPM9U0pZNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "@babel/generator": { + "node_modules/@babel/core/node_modules/@babel/code-frame": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.8.tgz", + "integrity": "sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ==", "dev": true, - "requires": { - "@babel/types": "^7.24.7", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.8", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", + "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz", - "integrity": "sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==", + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "@babel/helper-environment-visitor": { + "node_modules/@babel/helper-environment-visitor": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { + "node_modules/@babel/helper-function-name": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.24.7", "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-hoist-variables": { + "node_modules/@babel/helper-hoist-variables": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", + "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, - "requires": { - "@babel/types": "^7.16.0" + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { + "node_modules/@babel/helper-split-export-declaration": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", - "dev": true + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-identifier": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "node_modules/@babel/helpers": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "node_modules/@babel/parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", + "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" } }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-async-generators": { + "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-properties": { + "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-static-block": { + "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-dynamic-import": { + "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-export-namespace-from": { + "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-json-strings": { + "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-logical-assignment-operators": { + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-numeric-separator": { + "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-object-rest-spread": { + "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-catch-binding": { + "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-chaining": { + "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-private-property-in-object": { + "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-top-level-await": { + "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", + "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - }, + "license": "MIT", "dependencies": { - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/template": { + "node_modules/@babel/plugin-transform-private-methods": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dev": true, - "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" - }, + "license": "MIT", "dependencies": { - "@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - } - } + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/traverse": { + "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, - "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, + "license": "MIT", "dependencies": { - "@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/types": { + "node_modules/@babel/plugin-transform-property-literals": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", - "dev": true + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "license": "MIT", "dependencies": { - "globals": { - "version": "13.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", - "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - } + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", + "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.8", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", + "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template/node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.8.tgz", + "integrity": "sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", + "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.10.0.tgz", + "integrity": "sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, - "@jridgewell/gen-mapping": { + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, - "@jridgewell/resolve-uri": { + "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, - "@jridgewell/set-array": { + "node_modules/@jridgewell/set-array": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "@jridgewell/sourcemap-codec": { + "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, - "@jridgewell/trace-mapping": { + "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, - "requires": { + "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@leichtgewicht/ip-codec": { + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz", + "integrity": "sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.2.0.tgz", + "integrity": "sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, - "@mapbox/node-pre-gyp": { + "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "dev": true, "optional": true, - "requires": { + "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", "make-dir": "^3.1.0", @@ -1295,1645 +2180,1110 @@ "semver": "^7.3.5", "tar": "^6.1.11" }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "optional": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true - } - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "optional": true - } + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, + "optional": true, "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "requires": { - "type-detect": "4.0.8" + "optional": true, + "bin": { + "semver": "bin/semver.js" } }, - "@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0" + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^2.0.0", "lodash.get": "^4.4.2", "type-detect": "^4.0.8" - }, + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, "dependencies": { - "@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - } + "type-detect": "4.0.8" } }, - "@sinonjs/text-encoding": { + "node_modules/@sinonjs/text-encoding": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, - "@socket.io/component-emitter": { + "node_modules/@socket.io/component-emitter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "dev": true }, - "@tootallnate/once": { + "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6" + } }, - "@types/body-parser": { + "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, - "requires": { + "dependencies": { "@types/connect": "*", "@types/node": "*" } }, - "@types/bonjour": { + "node_modules/@types/bonjour": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/connect": { + "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/connect-history-api-fallback": { + "node_modules/@types/connect-history-api-fallback": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, - "requires": { + "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, - "@types/cookie": { + "node_modules/@types/cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "dev": true }, - "@types/cors": { + "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/express": { + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, - "requires": { + "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, - "@types/express-serve-static-core": { + "node_modules/@types/express-serve-static-core": { "version": "4.19.5", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, - "@types/http-errors": { + "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true }, - "@types/http-proxy": { + "node_modules/@types/http-proxy": { "version": "1.17.14", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/json-schema": { + "node_modules/@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, - "@types/mime": { + "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "@types/node": { + "node_modules/@types/node": { "version": "14.14.20", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", "dev": true }, - "@types/node-forge": { + "node_modules/@types/node-forge": { "version": "1.3.11", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/qs": { + "node_modules/@types/qs": { "version": "6.9.15", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true }, - "@types/range-parser": { + "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" }, - "@types/send": { + "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, - "requires": { + "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, - "@types/serve-index": { + "node_modules/@types/serve-index": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, - "requires": { + "dependencies": { "@types/express": "*" } }, - "@types/serve-static": { + "node_modules/@types/serve-static": { "version": "1.15.7", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, - "requires": { + "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "*" } }, - "@types/sockjs": { + "node_modules/@types/sockjs": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/ws": { + "node_modules/@types/ws": { "version": "8.5.10", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "license": "MIT" }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } + "license": "MIT" }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true, + "license": "MIT" }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "license": "MIT" }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, - "requires": { + "license": "Apache-2.0", + "dependencies": { "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "license": "MIT" }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, - "@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", - "dev": true + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } }, - "@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "dev": true, - "requires": { - "envinfo": "^7.7.3" + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" } }, - "@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", - "dev": true + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } }, - "@xtuc/ieee754": { + "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, - "@xtuc/long": { + "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, - "abbrev": { + "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, - "accepts": { + "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, - "requires": { + "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "acorn": { + "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "acorn-jsx": { + "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "agent-base": { + "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "requires": { + "dependencies": { "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { + "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-formats": { + "node_modules/ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "ajv": "^8.0.0" }, - "dependencies": { + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { "ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "optional": true } } }, - "ajv-keywords": { + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } }, - "ansi-html-community": { + "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "aproba": { + "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "dev": true, + "optional": true }, - "are-we-there-yet": { + "node_modules/are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", "dev": true, "optional": true, - "requires": { + "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "optional": true, "dependencies": { - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "optional": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "argparse": { + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "argv": { + "node_modules/argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "engines": { + "node": ">=0.6.10" + } }, - "arr-flatten": { + "node_modules/assertion-error": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "node_modules/babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", "dev": true }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - }, + "license": "MIT", "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "license": "MIT", "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } }, - "assign-symbols": { + "node_modules/balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "astral-regex": { + "node_modules/base64id": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, - "optional": true + "engines": { + "node": "^4.5.0 || >= 5.9" + } }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-add-module-exports": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", - "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", - "dev": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", - "semver": "^6.1.1" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "ms": "2.0.0" } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "engines": { + "node": ">= 0.8" } }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { + "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "node_modules/body-parser/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "bonjour-service": { + "node_modules/bonjour-service": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-stdout": { + "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", - "dev": true, - "requires": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { + "node_modules/browserslist": { "version": "4.23.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { "caniuse-lite": "^1.0.30001629", "electron-to-chromium": "^1.4.796", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "bytes": { + "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", "dev": true, - "requires": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "engines": { + "node": ">= 0.8" } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { + "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "callsites": { + "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "caniuse-lite": { + "node_modules/caniuse-lite": { "version": "1.0.30001637", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001637.tgz", "integrity": "sha512-1x0qRI1mD1o9e+7mBI7XtzFAP4XszbHaVWsMiGbSPLYekKTJF7K+FNk6AsXH4sUpc+qrsI3pVgf1Jdl/uGkuSQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "canvas": { + "node_modules/canvas": { "version": "2.11.2", "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "dev": true, + "hasInstallScript": true, "optional": true, - "requires": { + "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", "nan": "^2.17.0", "simple-get": "^3.0.3" + }, + "engines": { + "node": ">=6" } }, - "chai": { + "node_modules/chai": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, - "requires": { + "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", "deep-eql": "^3.0.1", @@ -2941,210 +3291,139 @@ "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" } }, - "chalk": { + "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "check-error": { + "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1" - } - } + "engines": { + "node": "*" } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { + "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "engines": { + "node": ">=6.0" } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "clone-deep": { + "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "requires": { + "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "codecov": { + "node_modules/codecov": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz", "integrity": "sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA==", + "deprecated": "https://about.codecov.io/blog/codecov-uploader-deprecation-plan/", "dev": true, - "requires": { + "dependencies": { "argv": "0.0.2", "ignore-walk": "3.0.4", "js-yaml": "3.14.1", "teeny-request": "7.1.1", "urlgrey": "1.0.0" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-support": { + "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "optional": true + "optional": true, + "bin": { + "color-support": "bin.js" + } }, - "colorette": { + "node_modules/colorette": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "commander": { + "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" }, - "compressible": { + "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, - "requires": { + "dependencies": { "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "compression": { + "node_modules/compression": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", "compressible": "~2.0.16", @@ -3153,604 +3432,462 @@ "safe-buffer": "5.1.2", "vary": "~1.1.2" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "ms": "2.0.0" } }, - "concat-map": { + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect": { + "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", "parseurl": "~1.3.3", "utils-merge": "1.0.1" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "engines": { + "node": ">= 0.10.0" } }, - "connect-history-api-fallback": { + "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "console-control-strings": { + "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true, "optional": true }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { + "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "5.2.1" }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } + "engines": { + "node": ">= 0.6" } }, - "content-type": { + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, - "requires": { - "safe-buffer": "~5.1.1" + "engines": { + "node": ">= 0.6" } }, - "cookie": { + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "cookie-signature": { + "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", - "dev": true - }, - "core-js-compat": { + "node_modules/core-js-compat": { "version": "3.37.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cors": { + "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, - "requires": { + "dependencies": { "object-assign": "^4", "vary": "^1" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "engines": { + "node": ">= 0.10" } }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "engines": { + "node": ">= 8" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "custom-event": { + "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "date-format": { + "node_modules/date-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.3.tgz", "integrity": "sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "debug": { + "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true - }, - "decompress-response": { + "node_modules/decompress-response": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dev": true, "optional": true, - "requires": { + "dependencies": { "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "deep-eql": { + "node_modules/deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, - "requires": { + "dependencies": { "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" } }, - "deep-is": { + "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dev": true, - "requires": { - "execa": "^5.0.0" + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, - "requires": { - "object-keys": "^1.0.12" + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "license": "MIT", + "engines": { + "node": ">=12" }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "delegates": { + "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true, "optional": true }, - "depd": { + "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "engines": { + "node": ">= 0.6" } }, - "destroy": { + "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, - "requires": { - "repeating": "^2.0.0" + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "detect-libc": { + "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=8" + } }, - "detect-node": { + "node_modules/detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, - "di": { + "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, - "diff": { + "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "engines": { + "node": ">=0.3.1" } }, - "dns-packet": { + "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, - "requires": { + "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, - "doctrine": { + "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "requires": { + "dependencies": { "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "dom-serialize": { + "node_modules/dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, - "requires": { + "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", "extend": "^3.0.0", "void-elements": "^2.0.0" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } + "license": "MIT" }, - "ee-first": { + "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "electron-to-chromium": { + "node_modules/electron-to-chromium": { "version": "1.4.812", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.812.tgz", "integrity": "sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==", "dev": true }, - "elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emoji-regex": { + "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { + "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "requires": { - "once": "^1.4.0" + "engines": { + "node": ">= 0.8" } }, - "engine.io": { + "node_modules/engine.io": { "version": "6.5.5", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, - "requires": { + "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", @@ -3761,76 +3898,111 @@ "debug": "~4.3.1", "engine.io-parser": "~5.2.1", "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" } }, - "engine.io-parser": { + "node_modules/engine.io-parser": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", - "dev": true + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } }, - "enquirer": { + "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "requires": { + "dependencies": { "ansi-colors": "^4.1.1" }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - } + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" } }, - "ent": { + "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", "dev": true }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, - "requires": { - "prr": "~1.0.1" + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" } }, - "escalade": { + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-html": { + "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "dev": true }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "eslint": { + "node_modules/eslint": { "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", "@humanwhocodes/config-array": "^0.5.0", @@ -3872,235 +4044,322 @@ "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", - "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "eslint-scope": { + "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "requires": { + "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "eslint-utils": { + "node_modules/eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "requires": { + "dependencies": { "eslint-visitor-keys": "^1.1.0" }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" } }, - "eslint-visitor-keys": { + "node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "esquery": { + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.1.0" }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" } }, - "esrecurse": { + "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "requires": { + "dependencies": { "estraverse": "^5.2.0" }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" } }, - "estraverse": { + "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "esutils": { + "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "etag": { + "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "eventemitter3": { + "node_modules/eventemitter3": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, - "events": { + "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "license": "MIT", + "engines": { + "node": ">=0.8.x" } }, - "execa": { + "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "requires": { + "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", @@ -4110,64 +4369,20 @@ "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "express": { + "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "1.20.2", @@ -4200,270 +4415,189 @@ "utils-merge": "1.0.1", "vary": "~1.1.2" }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } + "ms": "2.0.0" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "node_modules/express/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "node_modules/express/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + { + "type": "consulting", + "url": "https://feross.org/support" } + ] + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "fast-deep-equal": { + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, - "fast-levenshtein": { + "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-url-parser": { + "node_modules/fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", "dev": true, - "requires": { - "punycode": "^1.3.2" - }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } + "punycode": "^1.3.2" } }, - "fastest-levenshtein": { + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/fastest-levenshtein": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, - "faye-websocket": { + "node_modules/faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, - "requires": { + "dependencies": { "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "file-entry-cache": { + "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "requires": { + "dependencies": { "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { + "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -4472,200 +4606,238 @@ "statuses": "~1.5.0", "unpipe": "~1.0.0" }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "ms": "2.0.0" } }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, - "requires": { - "locate-path": "^3.0.0" + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "flat": { + "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true + "dev": true, + "bin": { + "flat": "cli.js" + } }, - "flat-cache": { + "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "requires": { + "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "flatted": { + "node_modules/flatted": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { + "node_modules/follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "forwarded": { + "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, - "requires": { - "map-cache": "^0.2.2" + "engines": { + "node": ">= 0.6" } }, - "fresh": { + "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "engines": { + "node": ">= 0.6" } }, - "fs-extra": { + "node_modules/fs-extra": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dev": true, - "requires": { + "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "fs-minipass": { + "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "requires": { + "optional": true, + "dependencies": { "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { + "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gauge": { + "node_modules/gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", "dev": true, "optional": true, - "requires": { + "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", "console-control-strings": "^1.0.0", @@ -4676,1793 +4848,1834 @@ "strip-ansi": "^6.0.1", "wide-align": "^1.1.2" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "optional": true, "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "gensync": { + "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-func-name": { + "node_modules/get-func-name": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, - "get-intrinsic": { + "node_modules/get-intrinsic": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "get-stream": { + "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "glob": { + "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } + "license": "BSD-2-Clause" }, - "globals": { + "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "handle-thing": { + "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } + "engines": { + "node": ">= 0.4.0" } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "has-symbols": { + "node_modules/has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-unicode": { + "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true, "optional": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { + "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "bin": { + "he": "bin/he" } }, - "hpack.js": { + "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "dev": true, - "requires": { + "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" } }, - "html-entities": { + "node_modules/html-entities": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, - "html-escaper": { + "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-deceiver": { + "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", "dev": true }, - "http-errors": { + "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, - "requires": { + "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" }, - "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "http-parser-js": { + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, - "http-proxy": { + "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, - "requires": { + "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "http-proxy-agent": { + "node_modules/http-proxy-agent": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "requires": { + "dependencies": { "@tootallnate/once": "1", "agent-base": "6", "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "http-proxy-middleware": { + "node_modules/http-proxy-middleware": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, - "requires": { + "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" }, - "dependencies": { - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true } } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "https-proxy-agent": { + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, - "requires": { + "dependencies": { "agent-base": "6", "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "human-signals": { + "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true + "dev": true, + "engines": { + "node": ">=10.17.0" + } }, - "iconv-lite": { + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { + "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, - "ignore-walk": { + "node_modules/ignore-walk": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", "dev": true, - "requires": { + "dependencies": { "minimatch": "^3.0.4" } }, - "import-fresh": { + "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "requires": { + "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "interpret": { + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "requires": { - "loose-envify": "^1.0.0" + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "requires": { - "kind-of": "^3.0.2" + "bin": { + "json5": "lib/cli.js" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=6" } }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "node_modules/karma": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", + "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", "dev": true, - "requires": { - "has": "^1.0.3" + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.7.2", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "which": "^1.2.1" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/karma-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "resolve": "^1.3.3" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 6" } }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", "dev": true, - "requires": { - "number-is-nan": "^1.0.0" + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" } }, - "is-fullwidth-code-point": { + "node_modules/karma-coverage-istanbul-reporter/node_modules/istanbul-lib-coverage": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true, - "requires": { - "is-extglob": "^2.1.1" + "engines": { + "node": ">=8" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/karma-firefox-launcher": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz", + "integrity": "sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "is-wsl": "^2.2.0", + "which": "^2.0.1" } }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/karma-firefox-launcher/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { - "isobject": "^3.0.1" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "is-stream": { + "node_modules/karma-mocha": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", + "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", "dev": true, - "requires": { - "is-docker": "^2.0.0" + "dependencies": { + "minimist": "^1.2.3" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "istanbul-instrumenter-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", - "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "node_modules/karma-sinon-chai": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/karma-sinon-chai/-/karma-sinon-chai-2.0.2.tgz", + "integrity": "sha512-SDgh6V0CUd+7ruL1d3yG6lFzmJNGRNQuEuCYXLaorruNP9nwQfA7hpsp4clx4CbOo5Gsajh3qUOT7CrVStUKMw==", "dev": true, - "requires": { - "convert-source-map": "^1.5.0", - "istanbul-lib-instrument": "^1.7.3", - "loader-utils": "^1.1.0", - "schema-utils": "^0.3.0" + "peerDependencies": { + "chai": ">=3.5.0", + "sinon": ">=2.1.0", + "sinon-chai": ">=2.9.0" } }, - "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "node_modules/karma-sourcemap-loader": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", + "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" + "dependencies": { + "graceful-fs": "^4.1.2" } }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/karma-webpack": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.1.tgz", + "integrity": "sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ==", "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "license": "MIT", + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^9.0.3", + "webpack-merge": "^4.1.5" }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/karma-webpack/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "balanced-match": "^1.0.0" } }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "node_modules/karma-webpack/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, + "license": "ISC", "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "node_modules/karma-webpack/node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" } }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "node_modules/karma/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "node_modules/karma/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/karma/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "engines": { + "node": ">=8" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "node_modules/karma/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "node_modules/karma/node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "node_modules/karma/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/karma/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/karma/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "just-extend": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true + "node_modules/karma/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "karma": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", - "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "node_modules/karma/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.7.2", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/karma/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "node_modules/karma/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { - "which": "^1.2.1" + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "karma-cli": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", - "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", + "node_modules/karma/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "requires": { - "resolve": "^1.3.3" + "engines": { + "node": ">=0.12.0" } }, - "karma-coverage-istanbul-reporter": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", - "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "node_modules/karma/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^3.0.2", - "minimatch": "^3.0.4" + "bin": { + "mime": "cli.js" }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - } + "engines": { + "node": ">=4.0.0" } }, - "karma-firefox-launcher": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz", - "integrity": "sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==", + "node_modules/karma/node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, - "requires": { - "is-wsl": "^2.2.0", - "which": "^2.0.1" + "dependencies": { + "picomatch": "^2.2.1" }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/karma/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "karma-mocha": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", - "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "requires": { - "minimist": "^1.2.3" + "engines": { + "node": ">=0.10.0" } }, - "karma-sinon-chai": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/karma-sinon-chai/-/karma-sinon-chai-2.0.2.tgz", - "integrity": "sha512-SDgh6V0CUd+7ruL1d3yG6lFzmJNGRNQuEuCYXLaorruNP9nwQfA7hpsp4clx4CbOo5Gsajh3qUOT7CrVStUKMw==", - "dev": true + "node_modules/karma/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } }, - "karma-sourcemap-loader": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", - "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", + "node_modules/karma/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { - "graceful-fs": "^4.1.2" + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "karma-webpack": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-4.0.2.tgz", - "integrity": "sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A==", + "node_modules/karma/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.1", - "schema-utils": "^1.0.0", - "source-map": "^0.7.3", - "webpack-dev-middleware": "^3.7.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "kind-of": { + "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "launch-editor": { + "node_modules/launch-editor": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", "dev": true, - "requires": { + "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" } }, - "levn": { + "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "requires": { + "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.clonedeep": { + "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, - "lodash.debounce": { + "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" }, - "lodash.get": { + "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, - "lodash.merge": { + "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.truncate": { + "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, - "log-symbols": { + "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "requires": { + "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "log4js": { + "node_modules/log4js": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.1.tgz", "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", "dev": true, - "requires": { + "dependencies": { "date-format": "^4.0.3", "debug": "^4.3.3", "flatted": "^3.2.4", "rfdc": "^1.3.0", "streamroller": "^3.0.2" + }, + "engines": { + "node": ">=8.0" } }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loupe": { + "node_modules/loupe": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.3.tgz", "integrity": "sha512-krIV4Cf1BIGIx2t1e6tucThhrBemUnIUjMtD2vN4mrMxnxpBvrcosBSpooqunBqP/hOEEV1w/Cr1YskGtqw5Jg==", + "deprecated": "Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5", "dev": true, - "requires": { + "dependencies": { "get-func-name": "^2.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + } }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "requires": { - "object-visit": "^1.0.0" - } + "license": "ISC" }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, - "media-typer": { + "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, - "requires": { - "fs-monkey": "^1.0.4" + "engines": { + "node": ">= 0.6" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "node_modules/memfs": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.9.3.tgz", + "integrity": "sha512-bsYSSnirtYTWi1+OPMFb0M048evMKyUYe0EbtuGQgq6BVQM1g1W8/KIUJCCvjgI/El0j6Q4WsmMiBwLUBSw8LA==", "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.1.2", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, - "merge-descriptors": { + "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge-stream": { + "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "methods": { + "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } + "engines": { + "node": ">= 0.6" } }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - }, - "mime-db": { + "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "requires": { + "dependencies": { "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { + "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "mimic-response": { + "node_modules/mimic-response": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "minimalistic-assert": { + "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "minipass": { + "node_modules/minipass": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, - "requires": { + "optional": true, + "dependencies": { "yallist": "^4.0.0" }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" + "engines": { + "node": ">=8" } }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "requires": { - "minipass": "^3.0.0" - } + "optional": true }, - "minizlib": { + "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "requires": { + "optional": true, + "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "engines": { + "node": ">= 8" } }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true }, - "mkdirp": { + "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, - "requires": { + "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "mocha": { + "node_modules/mocha": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, - "requires": { + "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", @@ -6484,388 +6697,490 @@ "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/mocha/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/mocha/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/mocha/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "engines": { + "node": ">=10" } }, - "ms": { + "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "multicast-dns": { + "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, - "requires": { + "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" } }, - "nan": { + "node_modules/nan": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", "dev": true, "optional": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { + "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "negotiator": { + "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" }, - "nise": { + "node_modules/nise": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/nise/-/nise-6.0.0.tgz", "integrity": "sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^3.0.0", "@sinonjs/fake-timers": "^11.2.2", "@sinonjs/text-encoding": "^0.7.2", @@ -6873,652 +7188,576 @@ "path-to-regexp": "^6.2.1" } }, - "node-fetch": { + "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, - "requires": { + "dependencies": { "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node-forge": { + "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } + "dev": true, + "engines": { + "node": ">= 6.13.0" } }, - "node-releases": { + "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "nopt": { + "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "optional": true, - "requires": { + "dependencies": { "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" } }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "npmlog": { + "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", "dev": true, "optional": true, - "requires": { + "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", "gauge": "^3.0.0", "set-blocking": "^2.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "object-inspect": { + "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, - "requires": { - "isobject": "^3.0.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "obuf": { + "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, - "on-finished": { + "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, - "requires": { + "dependencies": { "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "on-headers": { + "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { + "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "requires": { + "dependencies": { "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/open/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "optionator": { + "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "requires": { + "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "p-limit": { + "node_modules/p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, - "requires": { - "p-limit": "^2.0.0" + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, - "requires": { - "@types/retry": "0.12.0", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "engines": { + "node": ">=6" } }, - "parent-module": { + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "requires": { + "dependencies": { "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "parse-asn1": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", - "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", - "dev": true, - "requires": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "hash-base": "~3.0", - "pbkdf2": "^3.1.2", - "safe-buffer": "^5.2.1" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "parseurl": { + "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true, - "optional": true + "engines": { + "node": ">= 0.8" + } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-to-regexp": { + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", "dev": true }, - "path2d": { + "node_modules/path2d": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.0.tgz", "integrity": "sha512-KdPAykQX6kmLSOO6Jpu2KNcCED7CKjmaBNGGNuctOsG0hgYO1OdYQaan6cYXJiG0WmXOwZZPILPBimu5QAIw3A==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=6" + } }, - "pathval": { + "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "engines": { + "node": "*" } }, - "pdfjs-dist": { + "node_modules/pdfjs-dist": { "version": "4.3.136", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.3.136.tgz", "integrity": "sha512-gzfnt1qc4yA+U46golPGYtU4WM2ssqP2MvFjKga8GEKOrEnzRPrA/9jogLLPYHiA3sGBPJ+p7BdAq+ytmw3jEg==", "dev": true, - "requires": { + "engines": { + "node": ">=18" + }, + "optionalDependencies": { "canvas": "^2.11.2", "path2d": "^0.2.0" } }, - "picocolors": { + "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pify": { + "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, - "requires": { - "find-up": "^3.0.0" + "engines": { + "node": ">=6" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "prelude-ls": { + "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "progress": { + "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "proxy-addr": { + "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, - "requires": { + "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "qjobs": { + "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.9" + } }, - "qs": { + "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "requires": { + "dependencies": { "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randombytes": { + "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", + "dependencies": { "safe-buffer": "^5.1.0" } }, - "range-parser": { + "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "raw-body": { + "node_modules/raw-body": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, - "requires": { + "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "readable-stream": { + "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "requires": { + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -7528,308 +7767,299 @@ "util-deprecate": "~1.0.1" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, - "requires": { - "resolve": "^1.9.0" + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "regenerate": { + "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, - "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } + "license": "MIT" }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" } }, - "regexpp": { + "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } }, - "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { "jsesc": "~0.5.0" }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } + "bin": { + "regjsparser": "bin/parser" } }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true, - "optional": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, - "requires": { - "is-finite": "^1.0.0" + "bin": { + "jsesc": "bin/jsesc" } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "require-from-string": { + "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "requires-port": { + "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, - "resolve": { + "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "retry": { + "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } }, - "rfdc": { + "node_modules/rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "rimraf": { + "node_modules/rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "dev": true, - "requires": { - "aproba": "^1.1.1" + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha512-QaVYBaD9U8scJw2EBWnCBY+LJ0AD+/2edTaigDs0XLDLBfJmSUK9KGqktg1rb32U3z4j/XwvFwHHH1YfbYFd7Q==", + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, - "requires": { - "ajv": "^5.0.0" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha512-Ajr4IcMXq/2QmMkEmSvxqfLN5zGmJ92gHXAeOXq1OekoH2rfDNsgdDoL2f7QaRCy7G/E6TpxBVdRuNraMztGHw==", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - } + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "select-hose": { + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "selfsigned": { + "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, - "requires": { + "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" + }, + "engines": { + "node": ">=10" } }, - "semver": { + "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "send": { + "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, - "requires": { + "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -7844,74 +8074,89 @@ "range-parser": "~1.2.1", "statuses": "2.0.1" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } + "ms": "2.0.0" } }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, - "requires": { + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { "randombytes": "^2.1.0" } }, - "serve-index": { + "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", @@ -7920,184 +8165,181 @@ "mime-types": "~2.1.17", "parseurl": "~1.3.2" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "serve-static": { + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, - "requires": { + "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "set-blocking": { + "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { + "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { + "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "requires": { + "dependencies": { "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "shell-quote": { + "node_modules/shell-quote": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "side-channel": { + "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, - "requires": { + "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "simple-concat": { + "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "optional": true }, - "simple-get": { + "node_modules/simple-get": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dev": true, "optional": true, - "requires": { + "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, - "sinon": { + "node_modules/sinon": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz", "integrity": "sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^3.0.1", "@sinonjs/fake-timers": "^11.2.2", "@sinonjs/samsam": "^8.0.0", @@ -8105,201 +8347,107 @@ "nise": "^6.0.0", "supports-color": "^7" }, - "dependencies": { - "diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "sinon-chai": { + "node_modules/sinon-chai": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", - "dev": true + "dev": true, + "peerDependencies": { + "chai": "^4.0.0", + "sinon": ">=4.0.0" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "slice-ansi": { + "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "socket.io": { + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/socket.io": { "version": "4.7.5", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dev": true, - "requires": { + "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", @@ -8307,310 +8455,307 @@ "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" } }, - "socket.io-adapter": { + "node_modules/socket.io-adapter": { "version": "2.5.5", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, - "requires": { + "dependencies": { "debug": "~4.3.4", "ws": "~8.17.1" } }, - "socket.io-parser": { + "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, - "requires": { + "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" } }, - "sockjs": { + "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, - "requires": { + "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } } }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "bin": { + "uuid": "dist/bin/uuid" } }, - "source-map-support": { + "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "spdy": { + "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "spdy-transport": { + "node_modules/spdy-transport": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", "hpack.js": "^2.1.6", "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } } }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, - "requires": { - "extend-shallow": "^3.0.0" + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { + "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "engines": { + "node": ">= 0.6" } }, - "stream-events": { + "node_modules/stream-events": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", "dev": true, - "requires": { + "dependencies": { "stubs": "^3.0.0" } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "streamroller": { + "node_modules/streamroller": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.2.tgz", "integrity": "sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA==", "dev": true, - "requires": { + "dependencies": { "date-format": "^4.0.3", "debug": "^4.1.1", "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "string-width": { + "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", "dependencies": { - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { - "safe-buffer": "~5.1.0" + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-final-newline": { + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "strip-json-comments": { + "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "stubs": { + "node_modules/stubs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", "dev": true }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "table": { + "node_modules/table": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, - "requires": { + "dependencies": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", @@ -8618,48 +8763,61 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0" }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", + "dev": true, "dependencies": { - "ajv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", - "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "tar": { + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, - "requires": { + "optional": true, + "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", @@ -8667,1458 +8825,1450 @@ "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, - "teeny-request": { + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true + }, + "node_modules/teeny-request": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz", "integrity": "sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg==", "dev": true, - "requires": { + "dependencies": { "http-proxy-agent": "^4.0.0", "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.1", "stream-events": "^1.0.5", "uuid": "^8.0.0" }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } + "engines": { + "node": ">=10" + } + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" } }, - "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "node_modules/terser": { + "version": "5.31.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.2.tgz", + "integrity": "sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==", "dev": true, - "requires": { + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "terser-webpack-plugin": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", - "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.5.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.3.4", - "webpack-sources": "^1.4.3" - }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "license": "MIT", "dependencies": { - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "esbuild": { + "optional": true }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } + "uglify-js": { + "optional": true } } }, - "text-table": { + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "license": "Unlicense", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" } }, - "thunky": { + "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmp": { + "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, - "requires": { - "rimraf": "^3.0.0" - }, "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" + "rimraf": "^3.0.0" }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "engines": { + "node": ">=8.17.0" } }, - "to-regex": { + "node_modules/tmp/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "engines": { + "node": ">=4" } }, - "toidentifier": { + "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, - "tr46": { + "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" }, - "type-check": { + "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "requires": { + "dependencies": { "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "type-detect": { + "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "type-fest": { + "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "type-is": { + "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "requires": { + "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz", - "integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==", - "dev": true + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, - "ua-parser-js": { + "node_modules/ua-parser-js": { "version": "0.7.33", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } }, - "unicode-canonical-property-names-ecmascript": { + "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "unicode-match-property-ecmascript": { + "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, - "requires": { - "unique-slug": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "requires": { - "imurmurhash": "^0.1.4" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "universalify": { + "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, - "unpipe": { + "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, - "optional": true + "engines": { + "node": ">= 0.8" + } }, - "update-browserslist-db": { + "node_modules/update-browserslist-db": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, - "requires": { + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { "escalade": "^3.1.2", "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } + "punycode": "^2.1.0" } }, - "urlgrey": { + "node_modules/urlgrey": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", "integrity": "sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w==", "dev": true, - "requires": { - "fast-url-parser": "^1.1.3" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } + "fast-url-parser": "^1.1.3" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "utils-merge": { + "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, - "v8-compile-cache": { + "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "vary": { + "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, - "void-elements": { + "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - }, - "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "optional": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, + "node_modules/webpack": { + "version": "5.93.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { "optional": true - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "optional": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "optional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { "optional": true }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "webpack-bundle-analyzer": { "optional": true }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "optional": true, - "requires": { - "picomatch": "^2.2.1" - } + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-cli/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.2.1.tgz", + "integrity": "sha512-hRLz+jPQXo999Nx9fXVdKlg/aehsw1ajA9skAneGmT03xwmyuhvF93p6HUKKbWhXdcERtGTzUCtIQr+2IQegrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "optional": true, - "requires": { - "is-number": "^7.0.0" - } + "webpack-cli": { + "optional": true } } }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "node_modules/webpack-dev-server/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true + "node_modules/webpack-dev-server/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "webpack": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", - "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - } + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/webpack-dev-server/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "node_modules/webpack-dev-server/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", + "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "dev": true, + "license": "ISC", "dependencies": { - "ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", - "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - } - } + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "14 >=14.20 || 16 >=16.20 || >=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "node_modules/webpack-dev-server/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "webpack-merge": { + "node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, - "requires": { + "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "node_modules/webpack/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" } }, - "websocket-driver": { + "node_modules/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, - "requires": { + "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "websocket-extensions": { + "node_modules/websocket-extensions": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "whatwg-url": { + "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, - "requires": { + "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, - "which": { + "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "wide-align": { + "node_modules/wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, - "requires": { + "dependencies": { "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "optional": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "optional": true, "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "optional": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "optional": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "wildcard": { + "node_modules/wildcard": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "word-wrap": { + "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, - "requires": { - "errno": "~0.1.7" + "engines": { + "node": ">=0.10.0" } }, - "workerpool": { + "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, - "wrappy": { + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "ws": { + "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "y18n": { + "node_modules/y18n": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "20.2.7", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "yargs-unparser": { + "node_modules/yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "requires": { + "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" }, - "dependencies": { - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - } + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 137880ae..84522ec7 100644 --- a/package.json +++ b/package.json @@ -37,14 +37,13 @@ }, "homepage": "https://github.com/Submitty/pdf-annotate.js#readme", "devDependencies": { - "@babel/core": "^7.4.5", - "@babel/preset-env": "^7.4.5", - "babel-loader": "^8.0.6", + "@babel/core": "^7.24.8", + "@babel/preset-env": "^7.24.8", + "babel-loader": "^9.1.3", "babel-plugin-add-module-exports": "^1.0.2", "chai": "^4.2.0", "codecov": "^3.5.0", "eslint": "^7.19.0", - "istanbul-instrumenter-loader": "^3.0.1", "karma": "^6.1.1", "karma-chrome-launcher": "^3.0.0", "karma-cli": "^2.0.0", @@ -53,16 +52,16 @@ "karma-mocha": "^2.0.0", "karma-sinon-chai": "^2.0.2", "karma-sourcemap-loader": "^0.3.7", - "karma-webpack": "^4.0.2", + "karma-webpack": "^5.0.1", "mocha": "^10.4.0", "pdfjs-dist": "4.3.136", "sinon": "^18.0.0", "sinon-chai": "^3.3.0", - "terser-webpack-plugin": "^4.2.3", - "typescript": "^4.5.5", - "webpack": "^4.34.0", - "webpack-cli": "^4.7.2", - "webpack-dev-server": "^4.15.0" + "terser-webpack-plugin": "^5.3.10", + "typescript": "^5.5.3", + "webpack": "^5.93.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" }, "peerDependencies": { "pdfjs-dist": "^4.2.67"