@camera.ui/browser 0.0.108 → 0.0.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +1 -1
- package/dist/types/packages/client/browser/src/types.d.ts +1 -1
- package/dist/types/packages/plugineer/src/polyglot/node/camera/index.d.ts +3 -3
- package/dist/types/packages/plugineer/src/polyglot/node/camera/polygon.d.ts +2 -2
- package/dist/types/packages/types/src/index.d.ts +7 -7
- package/dist/types/server/src/api/database/index.d.ts +1 -1
- package/dist/types/server/src/api/schemas/backup.schema.d.ts +2 -2
- package/dist/types/server/src/api/schemas/cameras.schema.d.ts +14 -14
- package/dist/types/server/src/api/schemas/plugins.schema.d.ts +16 -16
- package/dist/types/server/src/api/services/cameras.service.d.ts +0 -1
- package/dist/types/shared/types/index.d.ts +0 -1
- package/package.json +7 -7
package/dist/bundle.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see bundle.js.LICENSE.txt */
|
|
2
|
-
var t={855:t=>{const e="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,n=()=>e.now(),i=t=>t===1/0||(t=>t&&t===Math.floor(t)&&t>0&&isFinite(t))(t);class r{constructor({max:t=1/0,ttl:e,updateAgeOnGet:n=!1,checkAgeOnGet:r=!1,noUpdateTTL:s=!1,dispose:o,noDisposeOnSet:a=!1}={}){if(this.expirations=Object.create(null),this.data=new Map,this.expirationMap=new Map,void 0!==e&&!i(e))throw new TypeError("ttl must be positive integer or Infinity if set");if(!i(t))throw new TypeError("max must be positive integer or Infinity");if(this.ttl=e,this.max=t,this.updateAgeOnGet=!!n,this.checkAgeOnGet=!!r,this.noUpdateTTL=!!s,this.noDisposeOnSet=!!a,void 0!==o){if("function"!=typeof o)throw new TypeError("dispose must be function if set");this.dispose=o}this.timer=void 0,this.timerExpiration=void 0}setTimer(t,e){if(this.timerExpiration<t)return;this.timer&&clearTimeout(this.timer);const i=setTimeout((()=>{this.timer=void 0,this.timerExpiration=void 0,this.purgeStale();for(const t in this.expirations){this.setTimer(t,t-n());break}}),e);i.unref&&i.unref(),this.timerExpiration=t,this.timer=i}cancelTimer(){this.timer&&(clearTimeout(this.timer),this.timerExpiration=void 0,this.timer=void 0)}cancelTimers(){return process.emitWarning('TTLCache.cancelTimers has been renamed to TTLCache.cancelTimer (no "s"), and will be removed in the next major version update'),this.cancelTimer()}clear(){const t=this.dispose!==r.prototype.dispose?[...this]:[];this.data.clear(),this.expirationMap.clear(),this.cancelTimer(),this.expirations=Object.create(null);for(const[e,n]of t)this.dispose(n,e,"delete")}setTTL(t,e=this.ttl){const i=this.expirationMap.get(t);if(void 0!==i){const e=this.expirations[i];!e||e.length<=1?delete this.expirations[i]:this.expirations[i]=e.filter((e=>e!==t))}if(e!==1/0){const i=Math.floor(n()+e);this.expirationMap.set(t,i),this.expirations[i]||(this.expirations[i]=[],this.setTimer(i,e)),this.expirations[i].push(t)}else this.expirationMap.set(t,1/0)}set(t,e,{ttl:n=this.ttl,noUpdateTTL:r=this.noUpdateTTL,noDisposeOnSet:s=this.noDisposeOnSet}={}){if(!i(n))throw new TypeError("ttl must be positive integer or Infinity");if(this.expirationMap.has(t)){r||this.setTTL(t,n);const i=this.data.get(t);i!==e&&(this.data.set(t,e),s||this.dispose(i,t,"set"))}else this.setTTL(t,n),this.data.set(t,e);for(;this.size>this.max;)this.purgeToCapacity();return this}has(t){return this.data.has(t)}getRemainingTTL(t){const e=this.expirationMap.get(t);return e===1/0?e:void 0!==e?Math.max(0,Math.ceil(e-n())):0}get(t,{updateAgeOnGet:e=this.updateAgeOnGet,ttl:n=this.ttl,checkAgeOnGet:i=this.checkAgeOnGet}={}){const r=this.data.get(t);if(!i||0!==this.getRemainingTTL(t))return e&&this.setTTL(t,n),r;this.delete(t)}dispose(t,e){}delete(t){const e=this.expirationMap.get(t);if(void 0!==e){const n=this.data.get(t);this.data.delete(t),this.expirationMap.delete(t);const i=this.expirations[e];return i&&(i.length<=1?delete this.expirations[e]:this.expirations[e]=i.filter((e=>e!==t))),this.dispose(n,t,"delete"),0===this.size&&this.cancelTimer(),!0}return!1}purgeToCapacity(){for(const t in this.expirations){const e=this.expirations[t];if(!(this.size-e.length>=this.max)){const t=this.size-this.max,n=[];for(const i of e.splice(0,t))n.push([i,this.data.get(i)]),this.data.delete(i),this.expirationMap.delete(i);for(const[t,e]of n)this.dispose(e,t,"evict");return}{delete this.expirations[t];const n=[];for(const t of e)n.push([t,this.data.get(t)]),this.data.delete(t),this.expirationMap.delete(t);for(const[t,e]of n)this.dispose(e,t,"evict")}}}get size(){return this.data.size}purgeStale(){const t=Math.ceil(n());for(const e in this.expirations){if("Infinity"===e||e>t)return;const n=[...this.expirations[e]||[]],i=[];delete this.expirations[e];for(const t of n)i.push([t,this.data.get(t)]),this.data.delete(t),this.expirationMap.delete(t);for(const[t,e]of i)this.dispose(e,t,"stale")}0===this.size&&this.cancelTimer()}*entries(){for(const t in this.expirations)for(const e of this.expirations[t])yield[e,this.data.get(e)]}*keys(){for(const t in this.expirations)for(const e of this.expirations[t])yield e}*values(){for(const t in this.expirations)for(const e of this.expirations[t])yield this.data.get(e)}[Symbol.iterator](){return this.entries()}}t.exports=r},73:function(t){t.exports=function(){function t(t,e){var n,i,r,s,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,i&&(r=2&s[0]?i.return:s[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,s[1])).done)return r;switch(i=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,i=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((r=(r=o.trys).length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]<r[3])){o.label=s[1];break}if(6===s[0]&&o.label<r[1]){o.label=r[1],r=s;break}if(r&&o.label<r[2]){o.label=r[2],o.ops.push(s);break}r[2]&&o.ops.pop(),o.trys.pop();continue}s=e.call(t,o)}catch(t){s=[6,t],i=0}finally{n=r=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}}var e=function(t,e){this.next=null,this.key=t,this.data=e,this.left=null,this.right=null};function n(t,e){return t>e?1:t<e?-1:0}function i(t,n,i){for(var r=new e(null,null),s=r,o=r;;){var a=i(t,n.key);if(a<0){if(null===n.left)break;if(i(t,n.left.key)<0){var c=n.left;if(n.left=c.right,c.right=n,null===(n=c).left)break}o.left=n,o=n,n=n.left}else{if(!(a>0))break;if(null===n.right)break;if(i(t,n.right.key)>0&&(c=n.right,n.right=c.left,c.left=n,null===(n=c).right))break;s.right=n,s=n,n=n.right}}return s.right=n.left,o.left=n.right,n.left=r.right,n.right=r.left,n}function r(t,n,r,s){var o=new e(t,n);if(null===r)return o.left=o.right=null,o;var a=s(t,(r=i(t,r,s)).key);return a<0?(o.left=r.left,o.right=r,r.left=null):a>=0&&(o.right=r.right,o.left=r,r.right=null),o}function s(t,e,n){var r=null,s=null;if(e){var o=n((e=i(t,e,n)).key,t);0===o?(r=e.left,s=e.right):o<0?(s=e.right,e.right=null,r=e):(r=e.left,e.left=null,s=e)}return{left:r,right:s}}function o(t,e,n,i,r){if(t){i(e+(n?"└── ":"├── ")+r(t)+"\n");var s=e+(n?" ":"│ ");t.left&&o(t.left,s,!1,i,r),t.right&&o(t.right,s,!0,i,r)}}var a=function(){function a(t){void 0===t&&(t=n),this._root=null,this._size=0,this._comparator=t}return a.prototype.insert=function(t,e){return this._size++,this._root=r(t,e,this._root,this._comparator)},a.prototype.add=function(t,n){var r=new e(t,n);null===this._root&&(r.left=r.right=null,this._size++,this._root=r);var s=this._comparator,o=i(t,this._root,s),a=s(t,o.key);return 0===a?this._root=o:(a<0?(r.left=o.left,r.right=o,o.left=null):a>0&&(r.right=o.right,r.left=o,o.right=null),this._size++,this._root=r),this._root},a.prototype.remove=function(t){this._root=this._remove(t,this._root,this._comparator)},a.prototype._remove=function(t,e,n){var r;return null===e?null:0===n(t,(e=i(t,e,n)).key)?(null===e.left?r=e.right:(r=i(t,e.left,n)).right=e.right,this._size--,r):e},a.prototype.pop=function(){var t=this._root;if(t){for(;t.left;)t=t.left;return this._root=i(t.key,this._root,this._comparator),this._root=this._remove(t.key,this._root,this._comparator),{key:t.key,data:t.data}}return null},a.prototype.findStatic=function(t){for(var e=this._root,n=this._comparator;e;){var i=n(t,e.key);if(0===i)return e;e=i<0?e.left:e.right}return null},a.prototype.find=function(t){return this._root&&(this._root=i(t,this._root,this._comparator),0!==this._comparator(t,this._root.key))?null:this._root},a.prototype.contains=function(t){for(var e=this._root,n=this._comparator;e;){var i=n(t,e.key);if(0===i)return!0;e=i<0?e.left:e.right}return!1},a.prototype.forEach=function(t,e){for(var n=this._root,i=[],r=!1;!r;)null!==n?(i.push(n),n=n.left):0!==i.length?(n=i.pop(),t.call(e,n),n=n.right):r=!0;return this},a.prototype.range=function(t,e,n,i){for(var r=[],s=this._comparator,o=this._root;0!==r.length||o;)if(o)r.push(o),o=o.left;else{if(s((o=r.pop()).key,e)>0)break;if(s(o.key,t)>=0&&n.call(i,o))return this;o=o.right}return this},a.prototype.keys=function(){var t=[];return this.forEach((function(e){var n=e.key;return t.push(n)})),t},a.prototype.values=function(){var t=[];return this.forEach((function(e){var n=e.data;return t.push(n)})),t},a.prototype.min=function(){return this._root?this.minNode(this._root).key:null},a.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},a.prototype.minNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.left;)t=t.left;return t},a.prototype.maxNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.right;)t=t.right;return t},a.prototype.at=function(t){for(var e=this._root,n=!1,i=0,r=[];!n;)if(e)r.push(e),e=e.left;else if(r.length>0){if(e=r.pop(),i===t)return e;i++,e=e.right}else n=!0;return null},a.prototype.next=function(t){var e=this._root,n=null;if(t.right){for(n=t.right;n.left;)n=n.left;return n}for(var i=this._comparator;e;){var r=i(t.key,e.key);if(0===r)break;r<0?(n=e,e=e.left):e=e.right}return n},a.prototype.prev=function(t){var e=this._root,n=null;if(null!==t.left){for(n=t.left;n.right;)n=n.right;return n}for(var i=this._comparator;e;){var r=i(t.key,e.key);if(0===r)break;r<0?e=e.left:(n=e,e=e.right)}return n},a.prototype.clear=function(){return this._root=null,this._size=0,this},a.prototype.toList=function(){return function(t){for(var n=t,i=[],r=!1,s=new e(null,null),o=s;!r;)n?(i.push(n),n=n.left):i.length>0?n=(n=o=o.next=i.pop()).right:r=!0;return o.next=null,s.next}(this._root)},a.prototype.load=function(t,n,i){void 0===n&&(n=[]),void 0===i&&(i=!1);var r=t.length,s=this._comparator;if(i&&u(t,n,0,r-1,s),null===this._root)this._root=c(t,n,0,r),this._size=r;else{var o=function(t,n,i){for(var r=new e(null,null),s=r,o=t,a=n;null!==o&&null!==a;)i(o.key,a.key)<0?(s.next=o,o=o.next):(s.next=a,a=a.next),s=s.next;return null!==o?s.next=o:null!==a&&(s.next=a),r.next}(this.toList(),function(t,n){for(var i=new e(null,null),r=i,s=0;s<t.length;s++)r=r.next=new e(t[s],n[s]);return r.next=null,i.next}(t,n),s);r=this._size+r,this._root=h({head:o},0,r)}return this},a.prototype.isEmpty=function(){return null===this._root},Object.defineProperty(a.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"root",{get:function(){return this._root},enumerable:!0,configurable:!0}),a.prototype.toString=function(t){void 0===t&&(t=function(t){return String(t.key)});var e=[];return o(this._root,"",!0,(function(t){return e.push(t)}),t),e.join("")},a.prototype.update=function(t,e,n){var o=this._comparator,a=s(t,this._root,o),c=a.left,h=a.right;o(t,e)<0?h=r(e,n,h,o):c=r(e,n,c,o),this._root=function(t,e,n){return null===e?t:(null===t||((e=i(t.key,e,n)).left=t),e)}(c,h,o)},a.prototype.split=function(t){return s(t,this._root,this._comparator)},a.prototype[Symbol.iterator]=function(){var e,n,i;return t(this,(function(t){switch(t.label){case 0:e=this._root,n=[],i=!1,t.label=1;case 1:return i?[3,6]:null===e?[3,2]:(n.push(e),e=e.left,[3,5]);case 2:return 0===n.length?[3,4]:[4,e=n.pop()];case 3:return t.sent(),e=e.right,[3,5];case 4:i=!0,t.label=5;case 5:return[3,1];case 6:return[2]}}))},a}();function c(t,n,i,r){var s=r-i;if(s>0){var o=i+Math.floor(s/2),a=t[o],h=n[o],u=new e(a,h);return u.left=c(t,n,i,o),u.right=c(t,n,o+1,r),u}return null}function h(t,e,n){var i=n-e;if(i>0){var r=e+Math.floor(i/2),s=h(t,e,r),o=t.head;return o.left=s,t.head=t.head.next,o.right=h(t,r+1,n),o}return null}function u(t,e,n,i,r){if(!(n>=i)){for(var s=t[n+i>>1],o=n-1,a=i+1;;){do{o++}while(r(t[o],s)<0);do{a--}while(r(t[a],s)>0);if(o>=a)break;var c=t[o];t[o]=t[a],t[a]=c,c=e[o],e[o]=e[a],e[a]=c}u(t,e,n,a,r),u(t,e,a+1,i,r)}}const l=(t,e)=>t.ll.x<=e.x&&e.x<=t.ur.x&&t.ll.y<=e.y&&e.y<=t.ur.y,p=(t,e)=>{if(e.ur.x<t.ll.x||t.ur.x<e.ll.x||e.ur.y<t.ll.y||t.ur.y<e.ll.y)return null;const n=t.ll.x<e.ll.x?e.ll.x:t.ll.x,i=t.ur.x<e.ur.x?t.ur.x:e.ur.x;return{ll:{x:n,y:t.ll.y<e.ll.y?e.ll.y:t.ll.y},ur:{x:i,y:t.ur.y<e.ur.y?t.ur.y:e.ur.y}}};let f=Number.EPSILON;void 0===f&&(f=Math.pow(2,-52));const d=f*f,g=(t,e)=>{if(-f<t&&t<f&&-f<e&&e<f)return 0;const n=t-e;return n*n<d*t*e?0:t<e?-1:1};class y{constructor(){this.tree=new a,this.round(0)}round(t){const e=this.tree.add(t),n=this.tree.prev(e);if(null!==n&&0===g(e.key,n.key))return this.tree.remove(t),n.key;const i=this.tree.next(e);return null!==i&&0===g(e.key,i.key)?(this.tree.remove(t),i.key):t}}const m=new class{constructor(){this.reset()}reset(){this.xRounder=new y,this.yRounder=new y}round(t,e){return{x:this.xRounder.round(t),y:this.yRounder.round(e)}}},b=11102230246251565e-32,v=134217729,w=(3+8*b)*b;function x(t,e,n,i,r){let s,o,a,c,h=e[0],u=i[0],l=0,p=0;u>h==u>-h?(s=h,h=e[++l]):(s=u,u=i[++p]);let f=0;if(l<t&&p<n)for(u>h==u>-h?(o=h+s,a=s-(o-h),h=e[++l]):(o=u+s,a=s-(o-u),u=i[++p]),s=o,0!==a&&(r[f++]=a);l<t&&p<n;)u>h==u>-h?(o=s+h,c=o-s,a=s-(o-c)+(h-c),h=e[++l]):(o=s+u,c=o-s,a=s-(o-c)+(u-c),u=i[++p]),s=o,0!==a&&(r[f++]=a);for(;l<t;)o=s+h,c=o-s,a=s-(o-c)+(h-c),h=e[++l],s=o,0!==a&&(r[f++]=a);for(;p<n;)o=s+u,c=o-s,a=s-(o-c)+(u-c),u=i[++p],s=o,0!==a&&(r[f++]=a);return 0===s&&0!==f||(r[f++]=s),f}function S(t){return new Float64Array(t)}const _=22204460492503146e-32,E=11093356479670487e-47,k=S(4),P=S(8),T=S(12),M=S(16),R=S(4);function O(t,e,n,i,r,s){const o=(e-s)*(n-r),a=(t-r)*(i-s),c=o-a,h=Math.abs(o+a);return Math.abs(c)>=33306690738754716e-32*h?c:-function(t,e,n,i,r,s,o){let a,c,h,u,l,p,f,d,g,y,m,b,S,O,A,C,L,B;const I=t-r,j=n-r,N=e-s,q=i-s;O=I*q,p=v*I,f=p-(p-I),d=I-f,p=v*q,g=p-(p-q),y=q-g,A=d*y-(O-f*g-d*g-f*y),C=N*j,p=v*N,f=p-(p-N),d=N-f,p=v*j,g=p-(p-j),y=j-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,k[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,k[1]=S-(m+l)+(l-C),B=b+m,l=B-b,k[2]=b-(B-l)+(m-l),k[3]=B;let F=function(t,e){let n=e[0];for(let i=1;i<t;i++)n+=e[i];return n}(4,k),D=_*o;if(F>=D||-F>=D)return F;if(l=t-I,a=t-(I+l)+(l-r),l=n-j,h=n-(j+l)+(l-r),l=e-N,c=e-(N+l)+(l-s),l=i-q,u=i-(q+l)+(l-s),0===a&&0===c&&0===h&&0===u)return F;if(D=E*o+w*Math.abs(F),F+=I*u+q*a-(N*h+j*c),F>=D||-F>=D)return F;O=a*q,p=v*a,f=p-(p-a),d=a-f,p=v*q,g=p-(p-q),y=q-g,A=d*y-(O-f*g-d*g-f*y),C=c*j,p=v*c,f=p-(p-c),d=c-f,p=v*j,g=p-(p-j),y=j-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,R[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,R[1]=S-(m+l)+(l-C),B=b+m,l=B-b,R[2]=b-(B-l)+(m-l),R[3]=B;const U=x(4,k,4,R,P);O=I*u,p=v*I,f=p-(p-I),d=I-f,p=v*u,g=p-(p-u),y=u-g,A=d*y-(O-f*g-d*g-f*y),C=N*h,p=v*N,f=p-(p-N),d=N-f,p=v*h,g=p-(p-h),y=h-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,R[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,R[1]=S-(m+l)+(l-C),B=b+m,l=B-b,R[2]=b-(B-l)+(m-l),R[3]=B;const V=x(U,P,4,R,T);O=a*u,p=v*a,f=p-(p-a),d=a-f,p=v*u,g=p-(p-u),y=u-g,A=d*y-(O-f*g-d*g-f*y),C=c*h,p=v*c,f=p-(p-c),d=c-f,p=v*h,g=p-(p-h),y=h-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,R[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,R[1]=S-(m+l)+(l-C),B=b+m,l=B-b,R[2]=b-(B-l)+(m-l),R[3]=B;const Y=x(V,T,4,R,M);return M[Y-1]}(t,e,n,i,r,s,h)}const A=(t,e)=>t.x*e.y-t.y*e.x,C=(t,e)=>t.x*e.x+t.y*e.y,L=(t,e,n)=>{const i=O(t.x,t.y,e.x,e.y,n.x,n.y);return i>0?-1:i<0?1:0},B=t=>Math.sqrt(C(t,t)),I=(t,e,n)=>{const i={x:e.x-t.x,y:e.y-t.y},r={x:n.x-t.x,y:n.y-t.y};return A(r,i)/B(r)/B(i)},j=(t,e,n)=>{const i={x:e.x-t.x,y:e.y-t.y},r={x:n.x-t.x,y:n.y-t.y};return C(r,i)/B(r)/B(i)},N=(t,e,n)=>0===e.y?null:{x:t.x+e.x/e.y*(n-t.y),y:n},q=(t,e,n)=>0===e.x?null:{x:n,y:t.y+e.y/e.x*(n-t.x)};class F{static compare(t,e){const n=F.comparePoints(t.point,e.point);return 0!==n?n:(t.point!==e.point&&t.link(e),t.isLeft!==e.isLeft?t.isLeft?1:-1:U.compare(t.segment,e.segment))}static comparePoints(t,e){return t.x<e.x?-1:t.x>e.x?1:t.y<e.y?-1:t.y>e.y?1:0}constructor(t,e){void 0===t.events?t.events=[this]:t.events.push(this),this.point=t,this.isLeft=e}link(t){if(t.point===this.point)throw new Error("Tried to link already linked events");const e=t.point.events;for(let t=0,n=e.length;t<n;t++){const n=e[t];this.point.events.push(n),n.point=this.point}this.checkForConsuming()}checkForConsuming(){const t=this.point.events.length;for(let e=0;e<t;e++){const n=this.point.events[e];if(void 0===n.segment.consumedBy)for(let i=e+1;i<t;i++){const t=this.point.events[i];void 0===t.consumedBy&&n.otherSE.point.events===t.otherSE.point.events&&n.segment.consume(t.segment)}}}getAvailableLinkedEvents(){const t=[];for(let e=0,n=this.point.events.length;e<n;e++){const n=this.point.events[e];n!==this&&!n.segment.ringOut&&n.segment.isInResult()&&t.push(n)}return t}getLeftmostComparator(t){const e=new Map,n=n=>{const i=n.otherSE;e.set(n,{sine:I(this.point,t.point,i.point),cosine:j(this.point,t.point,i.point)})};return(t,i)=>{e.has(t)||n(t),e.has(i)||n(i);const{sine:r,cosine:s}=e.get(t),{sine:o,cosine:a}=e.get(i);return r>=0&&o>=0?s<a?1:s>a?-1:0:r<0&&o<0?s<a?-1:s>a?1:0:o<r?-1:o>r?1:0}}}let D=0;class U{static compare(t,e){const n=t.leftSE.point.x,i=e.leftSE.point.x,r=t.rightSE.point.x,s=e.rightSE.point.x;if(s<n)return 1;if(r<i)return-1;const o=t.leftSE.point.y,a=e.leftSE.point.y,c=t.rightSE.point.y,h=e.rightSE.point.y;if(n<i){if(a<o&&a<c)return 1;if(a>o&&a>c)return-1;const n=t.comparePoint(e.leftSE.point);if(n<0)return 1;if(n>0)return-1;const i=e.comparePoint(t.rightSE.point);return 0!==i?i:-1}if(n>i){if(o<a&&o<h)return-1;if(o>a&&o>h)return 1;const n=e.comparePoint(t.leftSE.point);if(0!==n)return n;const i=t.comparePoint(e.rightSE.point);return i<0?1:i>0?-1:1}if(o<a)return-1;if(o>a)return 1;if(r<s){const n=e.comparePoint(t.rightSE.point);if(0!==n)return n}if(r>s){const n=t.comparePoint(e.rightSE.point);if(n<0)return 1;if(n>0)return-1}if(r!==s){const t=c-o,e=r-n,u=h-a,l=s-i;if(t>e&&u<l)return 1;if(t<e&&u>l)return-1}return r>s?1:r<s||c<h?-1:c>h?1:t.id<e.id?-1:t.id>e.id?1:0}constructor(t,e,n,i){this.id=++D,this.leftSE=t,t.segment=this,t.otherSE=e,this.rightSE=e,e.segment=this,e.otherSE=t,this.rings=n,this.windings=i}static fromRing(t,e,n){let i,r,s;const o=F.comparePoints(t,e);if(o<0)i=t,r=e,s=1;else{if(!(o>0))throw new Error(`Tried to create degenerate segment at [${t.x}, ${t.y}]`);i=e,r=t,s=-1}const a=new F(i,!0),c=new F(r,!1);return new U(a,c,[n],[s])}replaceRightSE(t){this.rightSE=t,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const t=this.leftSE.point.y,e=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:t<e?t:e},ur:{x:this.rightSE.point.x,y:t>e?t:e}}}vector(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}isAnEndpoint(t){return t.x===this.leftSE.point.x&&t.y===this.leftSE.point.y||t.x===this.rightSE.point.x&&t.y===this.rightSE.point.y}comparePoint(t){if(this.isAnEndpoint(t))return 0;const e=this.leftSE.point,n=this.rightSE.point,i=this.vector();if(e.x===n.x)return t.x===e.x?0:t.x<e.x?1:-1;const r=(t.y-e.y)/i.y,s=e.x+r*i.x;if(t.x===s)return 0;const o=(t.x-e.x)/i.x,a=e.y+o*i.y;return t.y===a?0:t.y<a?-1:1}getIntersection(t){const e=this.bbox(),n=t.bbox(),i=p(e,n);if(null===i)return null;const r=this.leftSE.point,s=this.rightSE.point,o=t.leftSE.point,a=t.rightSE.point,c=l(e,o)&&0===this.comparePoint(o),h=l(n,r)&&0===t.comparePoint(r),u=l(e,a)&&0===this.comparePoint(a),f=l(n,s)&&0===t.comparePoint(s);if(h&&c)return f&&!u?s:!f&&u?a:null;if(h)return u&&r.x===a.x&&r.y===a.y?null:r;if(c)return f&&s.x===o.x&&s.y===o.y?null:o;if(f&&u)return null;if(f)return s;if(u)return a;const d=((t,e,n,i)=>{if(0===e.x)return q(n,i,t.x);if(0===i.x)return q(t,e,n.x);if(0===e.y)return N(n,i,t.y);if(0===i.y)return N(t,e,n.y);const r=A(e,i);if(0==r)return null;const s={x:n.x-t.x,y:n.y-t.y},o=A(s,e)/r,a=A(s,i)/r;return{x:(t.x+a*e.x+(n.x+o*i.x))/2,y:(t.y+a*e.y+(n.y+o*i.y))/2}})(r,this.vector(),o,t.vector());return null===d?null:l(i,d)?m.round(d.x,d.y):null}split(t){const e=[],n=void 0!==t.events,i=new F(t,!0),r=new F(t,!1),s=this.rightSE;this.replaceRightSE(r),e.push(r),e.push(i);const o=new U(i,s,this.rings.slice(),this.windings.slice());return F.comparePoints(o.leftSE.point,o.rightSE.point)>0&&o.swapEvents(),F.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),n&&(i.checkForConsuming(),r.checkForConsuming()),e}swapEvents(){const t=this.rightSE;this.rightSE=this.leftSE,this.leftSE=t,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let t=0,e=this.windings.length;t<e;t++)this.windings[t]*=-1}consume(t){let e=this,n=t;for(;e.consumedBy;)e=e.consumedBy;for(;n.consumedBy;)n=n.consumedBy;const i=U.compare(e,n);if(0!==i){if(i>0){const t=e;e=n,n=t}if(e.prev===n){const t=e;e=n,n=t}for(let t=0,i=n.rings.length;t<i;t++){const i=n.rings[t],r=n.windings[t],s=e.rings.indexOf(i);-1===s?(e.rings.push(i),e.windings.push(r)):e.windings[s]+=r}n.rings=null,n.windings=null,n.consumedBy=e,n.leftSE.consumedBy=e.leftSE,n.rightSE.consumedBy=e.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}beforeState(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){const t=this.prev.consumedBy||this.prev;this._beforeState=t.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const t=this.beforeState();this._afterState={rings:t.rings.slice(0),windings:t.windings.slice(0),multiPolys:[]};const e=this._afterState.rings,n=this._afterState.windings,i=this._afterState.multiPolys;for(let t=0,i=this.rings.length;t<i;t++){const i=this.rings[t],r=this.windings[t],s=e.indexOf(i);-1===s?(e.push(i),n.push(r)):n[s]+=r}const r=[],s=[];for(let t=0,i=e.length;t<i;t++){if(0===n[t])continue;const i=e[t],o=i.poly;if(-1===s.indexOf(o))if(i.isExterior)r.push(o);else{-1===s.indexOf(o)&&s.push(o);const t=r.indexOf(i.poly);-1!==t&&r.splice(t,1)}}for(let t=0,e=r.length;t<e;t++){const e=r[t].multiPoly;-1===i.indexOf(e)&&i.push(e)}return this._afterState}isInResult(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;const t=this.beforeState().multiPolys,e=this.afterState().multiPolys;switch(K.type){case"union":{const n=0===t.length,i=0===e.length;this._isInResult=n!==i;break}case"intersection":{let n,i;t.length<e.length?(n=t.length,i=e.length):(n=e.length,i=t.length),this._isInResult=i===K.numMultiPolys&&n<i;break}case"xor":{const n=Math.abs(t.length-e.length);this._isInResult=n%2==1;break}case"difference":{const n=t=>1===t.length&&t[0].isSubject;this._isInResult=n(t)!==n(e);break}default:throw new Error(`Unrecognized operation type found ${K.type}`)}return this._isInResult}}class V{constructor(t,e,n){if(!Array.isArray(t)||0===t.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=e,this.isExterior=n,this.segments=[],"number"!=typeof t[0][0]||"number"!=typeof t[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const i=m.round(t[0][0],t[0][1]);this.bbox={ll:{x:i.x,y:i.y},ur:{x:i.x,y:i.y}};let r=i;for(let e=1,n=t.length;e<n;e++){if("number"!=typeof t[e][0]||"number"!=typeof t[e][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");let n=m.round(t[e][0],t[e][1]);n.x===r.x&&n.y===r.y||(this.segments.push(U.fromRing(r,n,this)),n.x<this.bbox.ll.x&&(this.bbox.ll.x=n.x),n.y<this.bbox.ll.y&&(this.bbox.ll.y=n.y),n.x>this.bbox.ur.x&&(this.bbox.ur.x=n.x),n.y>this.bbox.ur.y&&(this.bbox.ur.y=n.y),r=n)}i.x===r.x&&i.y===r.y||this.segments.push(U.fromRing(r,i,this))}getSweepEvents(){const t=[];for(let e=0,n=this.segments.length;e<n;e++){const n=this.segments[e];t.push(n.leftSE),t.push(n.rightSE)}return t}}class Y{constructor(t,e){if(!Array.isArray(t))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new V(t[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(let e=1,n=t.length;e<n;e++){const n=new V(t[e],this,!1);n.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=n.bbox.ur.y),this.interiorRings.push(n)}this.multiPoly=e}getSweepEvents(){const t=this.exteriorRing.getSweepEvents();for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getSweepEvents();for(let e=0,i=n.length;e<i;e++)t.push(n[e])}return t}}class z{constructor(t,e){if(!Array.isArray(t))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof t[0][0][0]&&(t=[t])}catch(t){}this.polys=[],this.bbox={ll:{x:Number.POSITIVE_INFINITY,y:Number.POSITIVE_INFINITY},ur:{x:Number.NEGATIVE_INFINITY,y:Number.NEGATIVE_INFINITY}};for(let e=0,n=t.length;e<n;e++){const n=new Y(t[e],this);n.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=n.bbox.ur.y),this.polys.push(n)}this.isSubject=e}getSweepEvents(){const t=[];for(let e=0,n=this.polys.length;e<n;e++){const n=this.polys[e].getSweepEvents();for(let e=0,i=n.length;e<i;e++)t.push(n[e])}return t}}class ${static factory(t){const e=[];for(let n=0,i=t.length;n<i;n++){const i=t[n];if(!i.isInResult()||i.ringOut)continue;let r=null,s=i.leftSE,o=i.rightSE;const a=[s],c=s.point,h=[];for(;r=s,s=o,a.push(s),s.point!==c;)for(;;){const t=s.getAvailableLinkedEvents();if(0===t.length){const t=a[0].point,e=a[a.length-1].point;throw new Error(`Unable to complete output ring starting at [${t.x}, ${t.y}]. Last matching segment found ends at [${e.x}, ${e.y}].`)}if(1===t.length){o=t[0].otherSE;break}let n=null;for(let t=0,e=h.length;t<e;t++)if(h[t].point===s.point){n=t;break}if(null!==n){const t=h.splice(n)[0],i=a.splice(t.index);i.unshift(i[0].otherSE),e.push(new $(i.reverse()));continue}h.push({index:a.length,point:s.point});const i=s.getLeftmostComparator(r);o=t.sort(i)[0].otherSE;break}e.push(new $(a))}return e}constructor(t){this.events=t;for(let e=0,n=t.length;e<n;e++)t[e].segment.ringOut=this;this.poly=null}getGeom(){let t=this.events[0].point;const e=[t];for(let n=1,i=this.events.length-1;n<i;n++){const i=this.events[n].point,r=this.events[n+1].point;0!==L(i,t,r)&&(e.push(i),t=i)}if(1===e.length)return null;const n=e[0],i=e[1];0===L(n,t,i)&&e.shift(),e.push(e[0]);const r=this.isExteriorRing()?1:-1,s=this.isExteriorRing()?0:e.length-1,o=this.isExteriorRing()?e.length:-1,a=[];for(let t=s;t!=o;t+=r)a.push([e[t].x,e[t].y]);return a}isExteriorRing(){if(void 0===this._isExteriorRing){const t=this.enclosingRing();this._isExteriorRing=!t||!t.isExteriorRing()}return this._isExteriorRing}enclosingRing(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}_calcEnclosingRing(){let t=this.events[0];for(let e=1,n=this.events.length;e<n;e++){const n=this.events[e];F.compare(t,n)>0&&(t=n)}let e=t.segment.prevInResult(),n=e?e.prevInResult():null;for(;;){if(!e)return null;if(!n)return e.ringOut;if(n.ringOut!==e.ringOut)return n.ringOut.enclosingRing()!==e.ringOut?e.ringOut:e.ringOut.enclosingRing();e=n.prevInResult(),n=e?e.prevInResult():null}}}class W{constructor(t){this.exteriorRing=t,t.poly=this,this.interiorRings=[]}addInterior(t){this.interiorRings.push(t),t.poly=this}getGeom(){const t=[this.exteriorRing.getGeom()];if(null===t[0])return null;for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getGeom();null!==n&&t.push(n)}return t}}class X{constructor(t){this.rings=t,this.polys=this._composePolys(t)}getGeom(){const t=[];for(let e=0,n=this.polys.length;e<n;e++){const n=this.polys[e].getGeom();null!==n&&t.push(n)}return t}_composePolys(t){const e=[];for(let n=0,i=t.length;n<i;n++){const i=t[n];if(!i.poly)if(i.isExteriorRing())e.push(new W(i));else{const t=i.enclosingRing();t.poly||e.push(new W(t)),t.poly.addInterior(i)}}return e}}class G{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:U.compare;this.queue=t,this.tree=new a(e),this.segments=[]}process(t){const e=t.segment,n=[];if(t.consumedBy)return t.isLeft?this.queue.remove(t.otherSE):this.tree.remove(e),n;const i=t.isLeft?this.tree.add(e):this.tree.find(e);if(!i)throw new Error(`Unable to find segment #${e.id} [${e.leftSE.point.x}, ${e.leftSE.point.y}] -> [${e.rightSE.point.x}, ${e.rightSE.point.y}] in SweepLine tree.`);let r,s,o=i,a=i;for(;void 0===r;)o=this.tree.prev(o),null===o?r=null:void 0===o.key.consumedBy&&(r=o.key);for(;void 0===s;)a=this.tree.next(a),null===a?s=null:void 0===a.key.consumedBy&&(s=a.key);if(t.isLeft){let i=null;if(r){const t=r.getIntersection(e);if(null!==t&&(e.isAnEndpoint(t)||(i=t),!r.isAnEndpoint(t))){const e=this._splitSafely(r,t);for(let t=0,i=e.length;t<i;t++)n.push(e[t])}}let o=null;if(s){const t=s.getIntersection(e);if(null!==t&&(e.isAnEndpoint(t)||(o=t),!s.isAnEndpoint(t))){const e=this._splitSafely(s,t);for(let t=0,i=e.length;t<i;t++)n.push(e[t])}}if(null!==i||null!==o){let t=null;t=null===i?o:null===o||F.comparePoints(i,o)<=0?i:o,this.queue.remove(e.rightSE),n.push(e.rightSE);const r=e.split(t);for(let t=0,e=r.length;t<e;t++)n.push(r[t])}n.length>0?(this.tree.remove(e),n.push(t)):(this.segments.push(e),e.prev=r)}else{if(r&&s){const t=r.getIntersection(s);if(null!==t){if(!r.isAnEndpoint(t)){const e=this._splitSafely(r,t);for(let t=0,i=e.length;t<i;t++)n.push(e[t])}if(!s.isAnEndpoint(t)){const e=this._splitSafely(s,t);for(let t=0,i=e.length;t<i;t++)n.push(e[t])}}}this.tree.remove(e)}return n}_splitSafely(t,e){this.tree.remove(t);const n=t.rightSE;this.queue.remove(n);const i=t.split(e);return i.push(n),void 0===t.consumedBy&&this.tree.add(t),i}}const H="undefined"!=typeof process&&process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE||1e6,J="undefined"!=typeof process&&process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS||1e6;const K=new class{run(t,e,n){K.type=t,m.reset();const i=[new z(e,!0)];for(let t=0,e=n.length;t<e;t++)i.push(new z(n[t],!1));if(K.numMultiPolys=i.length,"difference"===K.type){const t=i[0];let e=1;for(;e<i.length;)null!==p(i[e].bbox,t.bbox)?e++:i.splice(e,1)}if("intersection"===K.type)for(let t=0,e=i.length;t<e;t++){const e=i[t];for(let n=t+1,r=i.length;n<r;n++)if(null===p(e.bbox,i[n].bbox))return[]}const r=new a(F.compare);for(let t=0,e=i.length;t<e;t++){const e=i[t].getSweepEvents();for(let t=0,n=e.length;t<n;t++)if(r.insert(e[t]),r.size>H)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big).")}const s=new G(r);let o=r.size,c=r.pop();for(;c;){const t=c.key;if(r.size===o){const e=t.segment;throw new Error(`Unable to pop() ${t.isLeft?"left":"right"} SweepEvent [${t.point.x}, ${t.point.y}] from segment #${e.id} [${e.leftSE.point.x}, ${e.leftSE.point.y}] -> [${e.rightSE.point.x}, ${e.rightSE.point.y}] from queue.`)}if(r.size>H)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big).");if(s.segments.length>J)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments).");const e=s.process(t);for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0===n.consumedBy&&r.insert(n)}o=r.size,c=r.pop()}m.reset();const h=$.factory(s.segments);return new X(h).getGeom()}};var Q={union:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i<e;i++)n[i-1]=arguments[i];return K.run("union",t,n)},intersection:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i<e;i++)n[i-1]=arguments[i];return K.run("intersection",t,n)},xor:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i<e;i++)n[i-1]=arguments[i];return K.run("xor",t,n)},difference:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i<e;i++)n[i-1]=arguments[i];return K.run("difference",t,n)}};return Q}()}},e={};function n(i){var r=e[i];if(void 0!==r)return r.exports;var s=e[i]={exports:{}};return t[i].call(s.exports,s,s.exports,n),s.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 i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},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 i={};n.d(i,{j:()=>ei});var r={};n.r(r),n.d(r,{Decoder:()=>$n,Encoder:()=>Yn,PacketType:()=>Vn,protocol:()=>Un});class s{baseURL;abortControllers=new Set;constructor(t){this.baseURL=`${t}/api`}async request(t,e,n,i={}){const r=new AbortController;this.abortControllers.add(r);const s=setTimeout((()=>{r.abort(),this.abortControllers.delete(r)}),15e3);try{const s=await fetch(`${this.baseURL}${e}`,{method:t,headers:{"Content-Type":"application/json",...i.headers},body:n?JSON.stringify(n):void 0,signal:r.signal,...i});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s}finally{clearTimeout(s),this.abortControllers.delete(r)}}get(t,e){return this.request("GET",t,void 0,e)}post(t,e,n){return this.request("POST",t,e,n)}}process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE;class o{subscriptions=[];additionalSubscriptions=[];addSubscriptions(...t){this.subscriptions.push(...t)}addAdditionalSubscriptions(...t){this.additionalSubscriptions.push(...t)}unsubscribe(){this.subscriptions.forEach((t=>t.unsubscribe()))}unsubscribeAdditional(){this.additionalSubscriptions.forEach((t=>t.unsubscribe()))}}function a(t,e,n=!1){if(t===e)return!0;if((void 0===t||void 0===e||null===t||null===e)&&(t||e))return!1;const i=t?.constructor.name,r=e?.constructor.name;if(i!==r)return!1;if("Array"===i&&"Array"===r){if(t.length!==e.length)return!1;if(n){const i=[...e];return t.every((t=>{const e=i.findIndex((e=>a(t,e,n)));return-1!==e&&(i.splice(e,1),!0)}))}{let i=!0;for(let r=0;r<t.length;r++)if(!a(t[r],e[r],n)){i=!1;break}return i}}if("Object"===i&&"Object"===r){let i=!0;const r=Object.keys(t),s=Object.keys(e);if(r.length!==s.length)return!1;for(let s=0;s<r.length;s++)if(t[r[s]]&&e[r[s]]){if(t[r[s]]===e[r[s]])continue;if(!t[r[s]]||"Array"!==t[r[s]].constructor.name&&"Object"!==t[r[s]].constructor.name){if(t[r[s]]!==e[r[s]]){i=!1;break}}else if(i=a(t[r[s]],e[r[s]],n),!i)break}else if(t[r[s]]&&!e[r[s]]||!t[r[s]]&&e[r[s]]){i=!1;break}return i}return t===e}function c(t){return JSON.parse(JSON.stringify(t))}var h=n(855),u=n.n(h),l=function(t,e){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},l(t,e)};function p(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}l(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function f(t,e){var n,i,r,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,i=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){s.label=a[1];break}if(6===a[0]&&s.label<r[1]){s.label=r[1],r=a;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(a);break}r[2]&&s.ops.pop(),s.trys.pop();continue}a=e.call(t,s)}catch(t){a=[6,t],i=0}finally{n=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function d(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],i=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,s=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(i=s.next()).done;)o.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return o}function y(t,e,n){if(n||2===arguments.length)for(var i,r=0,s=e.length;r<s;r++)!i&&r in e||(i||(i=Array.prototype.slice.call(e,0,r)),i[r]=e[r]);return t.concat(i||Array.prototype.slice.call(e))}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function b(t){return"function"==typeof t}function v(t){var e=t((function(t){Error.call(t),t.stack=(new Error).stack}));return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var w=v((function(t){return function(e){t(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(t,e){return e+1+") "+t.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e}}));function x(t,e){if(t){var n=t.indexOf(e);0<=n&&t.splice(n,1)}}var S=function(){function t(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return t.prototype.unsubscribe=function(){var t,e,n,i,r;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var o=d(s),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}else s.remove(this);var c=this.initialTeardown;if(b(c))try{c()}catch(t){r=t instanceof w?t.errors:[t]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var u=d(h),l=u.next();!l.done;l=u.next()){var p=l.value;try{k(p)}catch(t){r=null!=r?r:[],t instanceof w?r=y(y([],g(r)),g(t.errors)):r.push(t)}}}catch(t){n={error:t}}finally{try{l&&!l.done&&(i=u.return)&&i.call(u)}finally{if(n)throw n.error}}}if(r)throw new w(r)}},t.prototype.add=function(e){var n;if(e&&e!==this)if(this.closed)k(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(e)}},t.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},t.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},t.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&x(e,t)},t.prototype.remove=function(e){var n=this._finalizers;n&&x(n,e),e instanceof t&&e._removeParent(this)},t.EMPTY=function(){var e=new t;return e.closed=!0,e}(),t}(),_=S.EMPTY;function E(t){return t instanceof S||t&&"closed"in t&&b(t.remove)&&b(t.add)&&b(t.unsubscribe)}function k(t){b(t)?t():t.unsubscribe()}var P={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},T={setTimeout:function(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var r=T.delegate;return(null==r?void 0:r.setTimeout)?r.setTimeout.apply(r,y([t,e],g(n))):setTimeout.apply(void 0,y([t,e],g(n)))},clearTimeout:function(t){var e=T.delegate;return((null==e?void 0:e.clearTimeout)||clearTimeout)(t)},delegate:void 0};function M(t){T.setTimeout((function(){var e=P.onUnhandledError;if(!e)throw t;e(t)}))}function R(){}var O=A("C",void 0,void 0);function A(t,e,n){return{kind:t,value:e,error:n}}var C=null;function L(t){if(P.useDeprecatedSynchronousErrorHandling){var e=!C;if(e&&(C={errorThrown:!1,error:null}),t(),e){var n=C,i=n.errorThrown,r=n.error;if(C=null,i)throw r}}else t()}var B=function(t){function e(e){var n=t.call(this)||this;return n.isStopped=!1,e?(n.destination=e,E(e)&&e.add(n)):n.destination=U,n}return p(e,t),e.create=function(t,e,n){return new q(t,e,n)},e.prototype.next=function(t){this.isStopped?D(function(t){return A("N",t,void 0)}(t),this):this._next(t)},e.prototype.error=function(t){this.isStopped?D(A("E",void 0,t),this):(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped?D(O,this):(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e}(S),I=Function.prototype.bind;function j(t,e){return I.call(t,e)}var N=function(){function t(t){this.partialObserver=t}return t.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(t){F(t)}},t.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(t){F(t)}else F(t)},t.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(t){F(t)}},t}(),q=function(t){function e(e,n,i){var r,s,o=t.call(this)||this;return b(e)||!e?r={next:null!=e?e:void 0,error:null!=n?n:void 0,complete:null!=i?i:void 0}:o&&P.useDeprecatedNextContext?((s=Object.create(e)).unsubscribe=function(){return o.unsubscribe()},r={next:e.next&&j(e.next,s),error:e.error&&j(e.error,s),complete:e.complete&&j(e.complete,s)}):r=e,o.destination=new N(r),o}return p(e,t),e}(B);function F(t){var e;P.useDeprecatedSynchronousErrorHandling?(e=t,P.useDeprecatedSynchronousErrorHandling&&C&&(C.errorThrown=!0,C.error=e)):M(t)}function D(t,e){var n=P.onStoppedNotification;n&&T.setTimeout((function(){return n(t,e)}))}var U={closed:!0,next:R,error:function(t){throw t},complete:R},V="function"==typeof Symbol&&Symbol.observable||"@@observable";function Y(t){return t}var z=function(){function t(t){t&&(this._subscribe=t)}return t.prototype.lift=function(e){var n=new t;return n.source=this,n.operator=e,n},t.prototype.subscribe=function(t,e,n){var i=this,r=function(t){return t&&t instanceof B||function(t){return t&&b(t.next)&&b(t.error)&&b(t.complete)}(t)&&E(t)}(t)?t:new q(t,e,n);return L((function(){var t=i,e=t.operator,n=t.source;r.add(e?e.call(r,n):n?i._subscribe(r):i._trySubscribe(r))})),r},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},t.prototype.forEach=function(t,e){var n=this;return new(e=$(e))((function(e,i){var r=new q({next:function(e){try{t(e)}catch(t){i(t),r.unsubscribe()}},error:i,complete:e});n.subscribe(r)}))},t.prototype._subscribe=function(t){var e;return null===(e=this.source)||void 0===e?void 0:e.subscribe(t)},t.prototype[V]=function(){return this},t.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return(0===(n=t).length?Y:1===n.length?n[0]:function(t){return n.reduce((function(t,e){return e(t)}),t)})(this);var n},t.prototype.toPromise=function(t){var e=this;return new(t=$(t))((function(t,n){var i;e.subscribe((function(t){return i=t}),(function(t){return n(t)}),(function(){return t(i)}))}))},t.create=function(e){return new t(e)},t}();function $(t){var e;return null!==(e=null!=t?t:P.Promise)&&void 0!==e?e:Promise}var W=v((function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),X=function(t){function e(){var e=t.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return p(e,t),e.prototype.lift=function(t){var e=new G(this,this);return e.operator=t,e},e.prototype._throwIfClosed=function(){if(this.closed)throw new W},e.prototype.next=function(t){var e=this;L((function(){var n,i;if(e._throwIfClosed(),!e.isStopped){e.currentObservers||(e.currentObservers=Array.from(e.observers));try{for(var r=d(e.currentObservers),s=r.next();!s.done;s=r.next())s.value.next(t)}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=r.return)&&i.call(r)}finally{if(n)throw n.error}}}}))},e.prototype.error=function(t){var e=this;L((function(){if(e._throwIfClosed(),!e.isStopped){e.hasError=e.isStopped=!0,e.thrownError=t;for(var n=e.observers;n.length;)n.shift().error(t)}}))},e.prototype.complete=function(){var t=this;L((function(){if(t._throwIfClosed(),!t.isStopped){t.isStopped=!0;for(var e=t.observers;e.length;)e.shift().complete()}}))},e.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(e.prototype,"observed",{get:function(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(e){return this._throwIfClosed(),t.prototype._trySubscribe.call(this,e)},e.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},e.prototype._innerSubscribe=function(t){var e=this,n=this,i=n.hasError,r=n.isStopped,s=n.observers;return i||r?_:(this.currentObservers=null,s.push(t),new S((function(){e.currentObservers=null,x(s,t)})))},e.prototype._checkFinalizedStatuses=function(t){var e=this,n=e.hasError,i=e.thrownError,r=e.isStopped;n?t.error(i):r&&t.complete()},e.prototype.asObservable=function(){var t=new z;return t.source=this,t},e.create=function(t,e){return new G(t,e)},e}(z),G=function(t){function e(e,n){var i=t.call(this)||this;return i.destination=e,i.source=n,i}return p(e,t),e.prototype.next=function(t){var e,n;null===(n=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===n||n.call(e,t)},e.prototype.error=function(t){var e,n;null===(n=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===n||n.call(e,t)},e.prototype.complete=function(){var t,e;null===(e=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===e||e.call(t)},e.prototype._subscribe=function(t){var e,n;return null!==(n=null===(e=this.source)||void 0===e?void 0:e.subscribe(t))&&void 0!==n?n:_},e}(X),H=function(t){function e(e){var n=t.call(this)||this;return n._value=e,n}return p(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),e.prototype._subscribe=function(e){var n=t.prototype._subscribe.call(this,e);return!n.closed&&e.next(this._value),n},e.prototype.getValue=function(){var t=this,e=t.hasError,n=t.thrownError,i=t._value;if(e)throw n;return this._throwIfClosed(),i},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)},e}(X),J={now:function(){return(J.delegate||Date).now()},delegate:void 0},K=function(t){function e(e,n,i){void 0===e&&(e=1/0),void 0===n&&(n=1/0),void 0===i&&(i=J);var r=t.call(this)||this;return r._bufferSize=e,r._windowTime=n,r._timestampProvider=i,r._buffer=[],r._infiniteTimeWindow=!0,r._infiniteTimeWindow=n===1/0,r._bufferSize=Math.max(1,e),r._windowTime=Math.max(1,n),r}return p(e,t),e.prototype.next=function(e){var n=this,i=n.isStopped,r=n._buffer,s=n._infiniteTimeWindow,o=n._timestampProvider,a=n._windowTime;i||(r.push(e),!s&&r.push(o.now()+a)),this._trimBuffer(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var e=this._innerSubscribe(t),n=this._infiniteTimeWindow,i=this._buffer.slice(),r=0;r<i.length&&!t.closed;r+=n?1:2)t.next(i[r]);return this._checkFinalizedStatuses(t),e},e.prototype._trimBuffer=function(){var t=this,e=t._bufferSize,n=t._timestampProvider,i=t._buffer,r=t._infiniteTimeWindow,s=(r?1:2)*e;if(e<1/0&&s<i.length&&i.splice(0,i.length-s),!r){for(var o=n.now(),a=0,c=1;c<i.length&&i[c]<=o;c+=2)a=c;a&&i.splice(0,a+1)}},e}(X);function Q(t){return function(e){if(function(t){return b(null==t?void 0:t.lift)}(e))return e.lift((function(e){try{return t(e,this)}catch(t){this.error(t)}}));throw new TypeError("Unable to lift unknown Observable type")}}function Z(t,e,n,i,r){return new tt(t,e,n,i,r)}var tt=function(t){function e(e,n,i,r,s,o){var a=t.call(this,e)||this;return a.onFinalize=s,a.shouldUnsubscribe=o,a._next=n?function(t){try{n(t)}catch(t){e.error(t)}}:t.prototype._next,a._error=r?function(t){try{r(t)}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._error,a._complete=i?function(){try{i()}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._complete,a}return p(e,t),e.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;t.prototype.unsubscribe.call(this),!n&&(null===(e=this.onFinalize)||void 0===e||e.call(this))}},e}(B);function et(){return Q((function(t,e){var n,i=!1;t.subscribe(Z(e,(function(t){var r=n;n=t,i&&e.next([r,t]),i=!0})))}))}function nt(t,e){return Q((function(n,i){var r=0;n.subscribe(Z(i,(function(n){return t.call(e,n,r++)&&i.next(n)})))}))}function it(t,e){return Q((function(n,i){var r=0;n.subscribe(Z(i,(function(n){i.next(t.call(e,n,r++))})))}))}var rt=function(t){return t&&"number"==typeof t.length&&"function"!=typeof t},st="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator";function ot(t){if(t instanceof z)return t;if(null!=t){if(function(t){return b(t[V])}(t))return r=t,new z((function(t){var e=r[V]();if(b(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")}));if(rt(t))return i=t,new z((function(t){for(var e=0;e<i.length&&!t.closed;e++)t.next(i[e]);t.complete()}));if(function(t){return b(null==t?void 0:t.then)}(t))return n=t,new z((function(t){n.then((function(e){t.closed||(t.next(e),t.complete())}),(function(e){return t.error(e)})).then(null,M)}));if(function(t){return Symbol.asyncIterator&&b(null==t?void 0:t[Symbol.asyncIterator])}(t))return at(t);if(function(t){return b(null==t?void 0:t[st])}(t))return e=t,new z((function(t){var n,i;try{for(var r=d(e),s=r.next();!s.done;s=r.next()){var o=s.value;if(t.next(o),t.closed)return}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=r.return)&&i.call(r)}finally{if(n)throw n.error}}t.complete()}));if(function(t){return b(null==t?void 0:t.getReader)}(t))return at(function(t){return function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,r=n.apply(t,e||[]),s=[];return i=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",(function(t){return function(e){return Promise.resolve(e).then(t,h)}})),i[Symbol.asyncIterator]=function(){return this},i;function o(t,e){r[t]&&(i[t]=function(e){return new Promise((function(n,i){s.push([t,e,n,i])>1||a(t,e)}))},e&&(i[t]=e(i[t])))}function a(t,e){try{(n=r[t](e)).value instanceof m?Promise.resolve(n.value.v).then(c,h):u(s[0][2],n)}catch(t){u(s[0][3],t)}var n}function c(t){a("next",t)}function h(t){a("throw",t)}function u(t,e){t(e),s.shift(),s.length&&a(s[0][0],s[0][1])}}(this,arguments,(function(){var e,n,i;return f(this,(function(r){switch(r.label){case 0:e=t.getReader(),r.label=1;case 1:r.trys.push([1,,9,10]),r.label=2;case 2:return[4,m(e.read())];case 3:return n=r.sent(),i=n.value,n.done?[4,m(void 0)]:[3,5];case 4:return[2,r.sent()];case 5:return[4,m(i)];case 6:return[4,r.sent()];case 7:return r.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}}))}))}(t))}var e,n,i,r;throw function(t){return new TypeError("You provided "+(null!==t&&"object"==typeof t?"an invalid object":"'"+t+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}(t)}function at(t){return new z((function(e){(function(t,e){var n,i,r,s,o,a,c,h;return o=this,a=void 0,h=function(){var o,a;return f(this,(function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),n=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=d(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(n){e[n]=t[n]&&function(e){return new Promise((function(i,r){!function(t,e,n,i){Promise.resolve(i).then((function(e){t({value:e,done:n})}),e)}(i,r,(e=t[n](e)).done,e.value)}))}}}(t),c.label=1;case 1:return[4,n.next()];case 2:if((i=c.sent()).done)return[3,4];if(o=i.value,e.next(o),e.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=c.sent(),r={error:a},[3,11];case 6:return c.trys.push([6,,9,10]),i&&!i.done&&(s=n.return)?[4,s.call(n)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(r)throw r.error;return[7];case 10:return[7];case 11:return e.complete(),[2]}}))},new((c=void 0)||(c=Promise))((function(t,e){function n(t){try{r(h.next(t))}catch(t){e(t)}}function i(t){try{r(h.throw(t))}catch(t){e(t)}}function r(e){e.done?t(e.value):function(t){return t instanceof c?t:new c((function(e){e(t)}))}(e.value).then(n,i)}r((h=h.apply(o,a||[])).next())}))})(t,e).catch((function(t){return e.error(t)}))}))}function ct(t){void 0===t&&(t={});var e=t.connector,n=void 0===e?function(){return new X}:e,i=t.resetOnError,r=void 0===i||i,s=t.resetOnComplete,o=void 0===s||s,a=t.resetOnRefCountZero,c=void 0===a||a;return function(t){var e,i,s,a=0,h=!1,u=!1,l=function(){null==i||i.unsubscribe(),i=void 0},p=function(){l(),e=s=void 0,h=u=!1},f=function(){var t=e;p(),null==t||t.unsubscribe()};return Q((function(t,d){a++,u||h||l();var g=s=null!=s?s:n();d.add((function(){0!=--a||u||h||(i=ht(f,c))})),g.subscribe(d),!e&&a>0&&(e=new q({next:function(t){return g.next(t)},error:function(t){u=!0,l(),i=ht(p,r,t),g.error(t)},complete:function(){h=!0,l(),i=ht(p,o),g.complete()}}),ot(t).subscribe(e))}))(t)}}function ht(t,e){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];if(!0!==e){if(!1!==e){var r=new q({next:function(){r.unsubscribe(),t()}});return ot(e.apply(void 0,y([],g(n)))).subscribe(r)}}else t()}function ut(t,e,n){return void 0===n&&(n=1/0),b(e)?ut((function(n,i){return it((function(t,r){return e(n,t,i,r)}))(ot(t(n,i)))}),n):("number"==typeof e&&(n=e),Q((function(e,i){return function(t,e,n,i,r,s,o,a){var c=[],h=0,u=0,l=!1,p=function(){!l||c.length||h||e.complete()},f=function(t){return h<i?d(t):c.push(t)},d=function(t){h++;var r=!1;ot(n(t,u++)).subscribe(Z(e,(function(t){e.next(t)}),(function(){r=!0}),void 0,(function(){if(r)try{h--;for(var t=function(){var t=c.shift();d(t)};c.length&&h<i;)t();p()}catch(t){e.error(t)}})))};return t.subscribe(Z(e,f,(function(){l=!0,p()}))),function(){}}(e,i,t,n)})))}function lt(t,e){return t===e}function pt(t,e,n={}){const i={type:"Feature"};return(0===n.id||n.id)&&(i.id=n.id),n.bbox&&(i.bbox=n.bbox),i.properties=e||{},i.geometry=t,i}function ft(t,e,n={}){for(const e of t){if(e.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(e[e.length-1].length!==e[0].length)throw new Error("First and last Position are not equivalent.");for(let t=0;t<e[e.length-1].length;t++)if(e[e.length-1][t]!==e[0][t])throw new Error("First and last Position are not equivalent.")}return pt({type:"Polygon",coordinates:t},e,n)}function dt(t,e={}){const n={type:"FeatureCollection"};return e.id&&(n.id=e.id),e.bbox&&(n.bbox=e.bbox),n.features=t,n}function gt(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}function yt(t,e,n){if(null!==t)for(var i,r,s,o,a,c,h,u,l=0,p=0,f=t.type,d="FeatureCollection"===f,g="Feature"===f,y=d?t.features.length:1,m=0;m<y;m++){a=(u=!!(h=d?t.features[m].geometry:g?t.geometry:t)&&"GeometryCollection"===h.type)?h.geometries.length:1;for(var b=0;b<a;b++){var v=0,w=0;if(null!==(o=u?h.geometries[b]:h)){c=o.coordinates;var x=o.type;switch(l=!n||"Polygon"!==x&&"MultiPolygon"!==x?0:1,x){case null:break;case"Point":if(!1===e(c,p,m,v,w))return!1;p++,v++;break;case"LineString":case"MultiPoint":for(i=0;i<c.length;i++){if(!1===e(c[i],p,m,v,w))return!1;p++,"MultiPoint"===x&&v++}"LineString"===x&&v++;break;case"Polygon":case"MultiLineString":for(i=0;i<c.length;i++){for(r=0;r<c[i].length-l;r++){if(!1===e(c[i][r],p,m,v,w))return!1;p++}"MultiLineString"===x&&v++,"Polygon"===x&&w++}"Polygon"===x&&v++;break;case"MultiPolygon":for(i=0;i<c.length;i++){for(w=0,r=0;r<c[i].length;r++){for(s=0;s<c[i][r].length-l;s++){if(!1===e(c[i][r][s],p,m,v,w))return!1;p++}w++}v++}break;case"GeometryCollection":for(i=0;i<o.geometries.length;i++)if(!1===yt(o.geometries[i],e,n))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function mt(t,e){var n,i,r,s,o,a,c,h,u,l,p=0,f="FeatureCollection"===t.type,d="Feature"===t.type,g=f?t.features.length:1;for(n=0;n<g;n++){for(a=f?t.features[n].geometry:d?t.geometry:t,h=f?t.features[n].properties:d?t.properties:{},u=f?t.features[n].bbox:d?t.bbox:void 0,l=f?t.features[n].id:d?t.id:void 0,o=(c=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,r=0;r<o;r++)if(null!==(s=c?a.geometries[r]:a))switch(s.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===e(s,p,h,u,l))return!1;break;case"GeometryCollection":for(i=0;i<s.geometries.length;i++)if(!1===e(s.geometries[i],p,h,u,l))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===e(null,p,h,u,l))return!1;p++}}function bt(t,e){mt(t,(function(t,n,i,r,s){var o,a=null===t?null:t.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==e(pt(t,i,{bbox:r,id:s}),n,0)&&void 0}switch(a){case"MultiPoint":o="Point";break;case"MultiLineString":o="LineString";break;case"MultiPolygon":o="Polygon"}for(var c=0;c<t.coordinates.length;c++){var h=t.coordinates[c];if(!1===e(pt({type:o,coordinates:h},i),n,c))return!1}}))}function vt(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const n=[1/0,1/0,-1/0,-1/0];return yt(t,(t=>{n[0]>t[0]&&(n[0]=t[0]),n[1]>t[1]&&(n[1]=t[1]),n[2]<t[0]&&(n[2]=t[0]),n[3]<t[1]&&(n[3]=t[1])})),n}function wt(t,e={}){const n=Number(t[0]),i=Number(t[1]),r=Number(t[2]),s=Number(t[3]);if(6===t.length)throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");const o=[n,i];return ft([[o,[r,i],[r,s],[n,s],o]],e.properties,{bbox:t,id:e.id})}Math.PI;var xt=n(73);function St(t,e={}){const n=[];if(mt(t,(t=>{n.push(t.coordinates)})),n.length<2)throw new Error("Must have at least 2 geometries");const i=xt.union(n[0],...n.slice(1));return 0===i.length?null:1===i.length?ft(i[0],e.properties):function(t,e,n={}){return pt({type:"MultiPolygon",coordinates:t},e,n)}(i,e.properties)}function _t(t,e,n=0,i=t.length-1,r=kt){for(;i>n;){if(i-n>600){const s=i-n+1,o=e-n+1,a=Math.log(s),c=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*c*(s-c)/s)*(o-s/2<0?-1:1);_t(t,e,Math.max(n,Math.floor(e-o*c/s+h)),Math.min(i,Math.floor(e+(s-o)*c/s+h)),r)}const s=t[e];let o=n,a=i;for(Et(t,n,e),r(t[i],s)>0&&Et(t,n,i);o<a;){for(Et(t,o,a),o++,a--;r(t[o],s)<0;)o++;for(;r(t[a],s)>0;)a--}0===r(t[n],s)?Et(t,n,a):(a++,Et(t,a,i)),a<=e&&(n=a+1),e<=a&&(i=a-1)}}function Et(t,e,n){const i=t[e];t[e]=t[n],t[n]=i}function kt(t,e){return t<e?-1:t>e?1:0}class Pt{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}all(){return this._all(this.data,[])}search(t){let e=this.data;const n=[];if(!Nt(t,e))return n;const i=this.toBBox,r=[];for(;e;){for(let s=0;s<e.children.length;s++){const o=e.children[s],a=e.leaf?i(o):o;Nt(t,a)&&(e.leaf?n.push(o):jt(t,a)?this._all(o,n):r.push(o))}e=r.pop()}return n}collides(t){let e=this.data;if(!Nt(t,e))return!1;const n=[];for(;e;){for(let i=0;i<e.children.length;i++){const r=e.children[i],s=e.leaf?this.toBBox(r):r;if(Nt(t,s)){if(e.leaf||jt(t,s))return!0;n.push(r)}}e=n.pop()}return!1}load(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(let e=0;e<t.length;e++)this.insert(t[e]);return this}let e=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===e.height)this._splitRoot(this.data,e);else{if(this.data.height<e.height){const t=this.data;this.data=e,e=t}this._insert(e,this.data.height-e.height-1,!0)}else this.data=e;return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=qt([]),this}remove(t,e){if(!t)return this;let n=this.data;const i=this.toBBox(t),r=[],s=[];let o,a,c;for(;n||r.length;){if(n||(n=r.pop(),a=r[r.length-1],o=s.pop(),c=!0),n.leaf){const i=Tt(t,n.children,e);if(-1!==i)return n.children.splice(i,1),r.push(n),this._condense(r),this}c||n.leaf||!jt(n,i)?a?(o++,n=a.children[o],c=!1):n=null:(r.push(n),s.push(o),o=0,a=n,n=n.children[0])}return this}toBBox(t){return t}compareMinX(t,e){return t.minX-e.minX}compareMinY(t,e){return t.minY-e.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,e){const n=[];for(;t;)t.leaf?e.push(...t.children):n.push(...t.children),t=n.pop();return e}_build(t,e,n,i){const r=n-e+1;let s,o=this._maxEntries;if(r<=o)return s=qt(t.slice(e,n+1)),Mt(s,this.toBBox),s;i||(i=Math.ceil(Math.log(r)/Math.log(o)),o=Math.ceil(r/Math.pow(o,i-1))),s=qt([]),s.leaf=!1,s.height=i;const a=Math.ceil(r/o),c=a*Math.ceil(Math.sqrt(o));Ft(t,e,n,c,this.compareMinX);for(let r=e;r<=n;r+=c){const e=Math.min(r+c-1,n);Ft(t,r,e,a,this.compareMinY);for(let n=r;n<=e;n+=a){const r=Math.min(n+a-1,e);s.children.push(this._build(t,n,r,i-1))}}return Mt(s,this.toBBox),s}_chooseSubtree(t,e,n,i){for(;i.push(e),!e.leaf&&i.length-1!==n;){let n,i=1/0,o=1/0;for(let a=0;a<e.children.length;a++){const c=e.children[a],h=Lt(c),u=(r=t,s=c,(Math.max(s.maxX,r.maxX)-Math.min(s.minX,r.minX))*(Math.max(s.maxY,r.maxY)-Math.min(s.minY,r.minY))-h);u<o?(o=u,i=h<i?h:i,n=c):u===o&&h<i&&(i=h,n=c)}e=n||e.children[0]}var r,s;return e}_insert(t,e,n){const i=n?t:this.toBBox(t),r=[],s=this._chooseSubtree(i,this.data,e,r);for(s.children.push(t),Ot(s,i);e>=0&&r[e].children.length>this._maxEntries;)this._split(r,e),e--;this._adjustParentBBoxes(i,r,e)}_split(t,e){const n=t[e],i=n.children.length,r=this._minEntries;this._chooseSplitAxis(n,r,i);const s=this._chooseSplitIndex(n,r,i),o=qt(n.children.splice(s,n.children.length-s));o.height=n.height,o.leaf=n.leaf,Mt(n,this.toBBox),Mt(o,this.toBBox),e?t[e-1].children.push(o):this._splitRoot(n,o)}_splitRoot(t,e){this.data=qt([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Mt(this.data,this.toBBox)}_chooseSplitIndex(t,e,n){let i,r=1/0,s=1/0;for(let o=e;o<=n-e;o++){const e=Rt(t,0,o,this.toBBox),a=Rt(t,o,n,this.toBBox),c=It(e,a),h=Lt(e)+Lt(a);c<r?(r=c,i=o,s=h<s?h:s):c===r&&h<s&&(s=h,i=o)}return i||n-e}_chooseSplitAxis(t,e,n){const i=t.leaf?this.compareMinX:At,r=t.leaf?this.compareMinY:Ct;this._allDistMargin(t,e,n,i)<this._allDistMargin(t,e,n,r)&&t.children.sort(i)}_allDistMargin(t,e,n,i){t.children.sort(i);const r=this.toBBox,s=Rt(t,0,e,r),o=Rt(t,n-e,n,r);let a=Bt(s)+Bt(o);for(let i=e;i<n-e;i++){const e=t.children[i];Ot(s,t.leaf?r(e):e),a+=Bt(s)}for(let i=n-e-1;i>=e;i--){const e=t.children[i];Ot(o,t.leaf?r(e):e),a+=Bt(o)}return a}_adjustParentBBoxes(t,e,n){for(let i=n;i>=0;i--)Ot(e[i],t)}_condense(t){for(let e,n=t.length-1;n>=0;n--)0===t[n].children.length?n>0?(e=t[n-1].children,e.splice(e.indexOf(t[n]),1)):this.clear():Mt(t[n],this.toBBox)}}function Tt(t,e,n){if(!n)return e.indexOf(t);for(let i=0;i<e.length;i++)if(n(t,e[i]))return i;return-1}function Mt(t,e){Rt(t,0,t.children.length,e,t)}function Rt(t,e,n,i,r){r||(r=qt(null)),r.minX=1/0,r.minY=1/0,r.maxX=-1/0,r.maxY=-1/0;for(let s=e;s<n;s++){const e=t.children[s];Ot(r,t.leaf?i(e):e)}return r}function Ot(t,e){return t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),t}function At(t,e){return t.minX-e.minX}function Ct(t,e){return t.minY-e.minY}function Lt(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function Bt(t){return t.maxX-t.minX+(t.maxY-t.minY)}function It(t,e){const n=Math.max(t.minX,e.minX),i=Math.max(t.minY,e.minY),r=Math.min(t.maxX,e.maxX),s=Math.min(t.maxY,e.maxY);return Math.max(0,r-n)*Math.max(0,s-i)}function jt(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function Nt(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function qt(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Ft(t,e,n,i,r){const s=[e,n];for(;s.length;){if((n=s.pop())-(e=s.pop())<=i)continue;const o=e+Math.ceil((n-e)/i/2)*i;_t(t,o,e,n,r),s.push(e,o,o,n)}}function Dt(t){return wt(t)}function Ut(t){return t[0]<t[2]&&t[1]<t[3]}function Vt(t,e){const[n,i,r,s]=t,[o,a,c,h]=e,u=Math.max(n,o),l=Math.max(i,a),p=Math.min(r,c),f=Math.min(s,h);if(p<u||f<l)return 0;const d=(p-u)*(f-l);return d/((r-n)*(s-i)+(c-o)*(h-a)-d)}function Yt(t,e=.01,n=100){if(0===t.length)return[];const i=new Pt,r=t.map((t=>({minX:t.boundingBox[0],minY:t.boundingBox[1],maxX:t.boundingBox[2],maxY:t.boundingBox[3],detection:{...t,id:t.id??Math.random().toString(36).slice(2,9)}})));i.load(r);const s=[],o=new Set;for(const t of r){if(o.has(t.detection.id))continue;const r={...t.detection};let c=r.confidence;const h=[Dt(r.boundingBox)],u=Math.max(n,10),l=i.search({minX:t.minX-u,minY:t.minY-u,maxX:t.maxX+u,maxY:t.maxY+u});for(const i of l){if(i.detection.id===r.id||o.has(i.detection.id)||i.detection.label!==r.label)continue;const s=Vt(r.boundingBox,i.detection.boundingBox),a=Math.abs(t.minX-i.minX)<=n&&Math.abs(t.minY-i.minY)<=n;if(s>e||a){const t=Dt(i.detection.boundingBox);h.push(t),o.add(i.detection.id),c=Math.max(c,i.detection.confidence)}}if(h.length>1){const t=St(dt(h));if(t){const e=(a=vt(t),[Math.max(0,Math.round(a[0])),Math.max(0,Math.round(a[1])),Math.min(1e3,Math.round(a[2])),Math.min(1e3,Math.round(a[3]))]);Ut(e)&&(r.boundingBox=e,r.confidence=c)}}Ut(r.boundingBox)&&s.push(r),o.add(r.id)}var a;return s}const zt=function(t,e){for(var n=0,i=0,r=0,s=0,o=0,a=0,c=0,h=0,u=null,l=null,p=t[0],f=t[1],d=e.length;n<d;n++){i=0;var g=e[n].length-1,y=e[n];if((u=y[0])[0]!==y[g][0]&&u[1]!==y[g][1])throw new Error("First and last coordinates in a ring must be the same");for(o=u[0]-p,a=u[1]-f;i<g;i++)if(h=(l=y[i+1])[1]-f,a<0&&h<0||a>0&&h>0)a=h,o=(u=l)[0]-p;else{if(c=l[0]-t[0],h>0&&a<=0){if((s=o*h-c*a)>0)r+=1;else if(0===s)return 0}else if(a>0&&h<=0){if((s=o*h-c*a)<0)r+=1;else if(0===s)return 0}else if(0===h&&a<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&h<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&0===h){if(c<=0&&o>=0)return 0;if(o<=0&&c>=0)return 0}u=l,a=h,o=c}}return r%2!=0};function $t(t){if(!t)throw new Error("coord is required");if(!Array.isArray(t)){if("Feature"===t.type&&null!==t.geometry&&"Point"===t.geometry.type)return[...t.geometry.coordinates];if("Point"===t.type)return[...t.coordinates]}if(Array.isArray(t)&&t.length>=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return[...t];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Wt(t){return"Feature"===t.type?t.geometry:t}function Xt(t,e,n={}){if(!t)throw new Error("point is required");if(!e)throw new Error("polygon is required");const i=$t(t),r=Wt(e),s=r.type,o=e.bbox;let a=r.coordinates;if(o&&!1===function(t,e){return e[0]<=t[0]&&e[1]<=t[1]&&e[2]>=t[0]&&e[3]>=t[1]}(i,o))return!1;"Polygon"===s&&(a=[a]);let c=!1;for(var h=0;h<a.length;++h){const t=zt(i,a[h]);if(0===t)return!n.ignoreBoundary;t&&(c=!0)}return c}function Gt(t,e,n={}){const i=$t(t),r=function(t){if(Array.isArray(t))return t;if("Feature"===t.type){if(null!==t.geometry)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}(e);for(let t=0;t<r.length-1;t++){let e=!1;if(n.ignoreEndVertices&&(0===t&&(e="start"),t===r.length-2&&(e="end"),0===t&&t+1===r.length-1&&(e="both")),Ht(r[t],r[t+1],i,e,void 0===n.epsilon?null:n.epsilon))return!0}return!1}function Ht(t,e,n,i,r){const s=n[0],o=n[1],a=t[0],c=t[1],h=e[0],u=e[1],l=h-a,p=u-c,f=(n[0]-a)*p-(n[1]-c)*l;if(null!==r){if(Math.abs(f)>r)return!1}else if(0!==f)return!1;return i?"start"===i?Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<=h:h<=s&&s<a:p>0?c<o&&o<=u:u<=o&&o<c:"end"===i?Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<h:h<s&&s<=a:p>0?c<=o&&o<u:u<o&&o<=c:"both"===i&&(Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<h:h<s&&s<a:p>0?c<o&&o<u:u<o&&o<c):Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<=h:h<=s&&s<=a:p>0?c<=o&&o<=u:u<=o&&o<=c}function Jt(t,e){const n=Wt(t),i=Wt(e),r=n.type,s=i.type,o=n.coordinates,a=i.coordinates;switch(r){case"Point":if("Point"===s)return Zt(o,a);throw new Error("feature2 "+s+" geometry not supported");case"MultiPoint":switch(s){case"Point":return function(t,e){let n,i=!1;for(n=0;n<t.coordinates.length;n++)if(Zt(t.coordinates[n],e.coordinates)){i=!0;break}return i}(n,i);case"MultiPoint":return function(t,e){for(const n of e.coordinates){let e=!1;for(const i of t.coordinates)if(Zt(n,i)){e=!0;break}if(!e)return!1}return!0}(n,i);default:throw new Error("feature2 "+s+" geometry not supported")}case"LineString":switch(s){case"Point":return Gt(i,n,{ignoreEndVertices:!0});case"LineString":return function(t,e){let n=!1;for(const i of e.coordinates)if(Gt({type:"Point",coordinates:i},t,{ignoreEndVertices:!0})&&(n=!0),!Gt({type:"Point",coordinates:i},t,{ignoreEndVertices:!1}))return!1;return n}(n,i);case"MultiPoint":return function(t,e){let n=!1;for(const i of e.coordinates)if(Gt(i,t,{ignoreEndVertices:!0})&&(n=!0),!Gt(i,t))return!1;return!!n}(n,i);default:throw new Error("feature2 "+s+" geometry not supported")}case"Polygon":switch(s){case"Point":return Xt(i,n,{ignoreBoundary:!0});case"LineString":return function(t,e){let n=!1,i=0;if(!Qt(vt(t),vt(e)))return!1;for(;i<e.coordinates.length-1;i++)if(Xt({type:"Point",coordinates:(r=e.coordinates[i],s=e.coordinates[i+1],[(r[0]+s[0])/2,(r[1]+s[1])/2])},t,{ignoreBoundary:!0})){n=!0;break}var r,s;return n}(n,i);case"Polygon":return Kt(n,i);case"MultiPoint":return function(t,e){for(const n of e.coordinates)if(!Xt(n,t,{ignoreBoundary:!0}))return!1;return!0}(n,i);default:throw new Error("feature2 "+s+" geometry not supported")}case"MultiPolygon":if("Polygon"===s)return function(t,e){return t.coordinates.some((t=>Kt({type:"Polygon",coordinates:t},e)))}(n,i);throw new Error("feature2 "+s+" geometry not supported");default:throw new Error("feature1 "+r+" geometry not supported")}}function Kt(t,e){if("Feature"===t.type&&null===t.geometry)return!1;if("Feature"===e.type&&null===e.geometry)return!1;if(!Qt(vt(t),vt(e)))return!1;const n=Wt(e).coordinates;for(const e of n)for(const n of e)if(!Xt(n,t))return!1;return!0}function Qt(t,e){return!(t[0]>e[0]||t[2]<e[2]||t[1]>e[1]||t[3]<e[3])}function Zt(t,e){return t[0]===e[0]&&t[1]===e[1]}class te{constructor(t=[],e=ee){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(t){this.data.push(t),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:n}=this,i=e[t];for(;t>0;){const r=t-1>>1,s=e[r];if(n(i,s)>=0)break;e[t]=s,t=r}e[t]=i}_down(t){const{data:e,compare:n}=this,i=this.length>>1,r=e[t];for(;t<i;){let i=1+(t<<1),s=e[i];const o=i+1;if(o<this.length&&n(e[o],s)<0&&(i=o,s=e[o]),n(s,r)>=0)break;e[t]=s,t=i}e[t]=r}}function ee(t,e){return t<e?-1:t>e?1:0}function ne(t,e){return t.p.x>e.p.x?1:t.p.x<e.p.x?-1:t.p.y!==e.p.y?t.p.y>e.p.y?1:-1:1}function ie(t,e){return t.rightSweepEvent.p.x>e.rightSweepEvent.p.x?1:t.rightSweepEvent.p.x<e.rightSweepEvent.p.x?-1:t.rightSweepEvent.p.y!==e.rightSweepEvent.p.y?t.rightSweepEvent.p.y<e.rightSweepEvent.p.y?1:-1:1}class re{constructor(t,e,n,i){this.p={x:t[0],y:t[1]},this.featureId=e,this.ringId=n,this.eventId=i,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(t){return this.p.x===t.p.x&&this.p.y===t.p.y}}let se=0,oe=0,ae=0;function ce(t,e){const n="Feature"===t.type?t.geometry:t;let i=n.coordinates;"Polygon"!==n.type&&"MultiLineString"!==n.type||(i=[i]),"LineString"===n.type&&(i=[[i]]);for(let t=0;t<i.length;t++)for(let n=0;n<i[t].length;n++){let r=i[t][n][0],s=null;oe+=1;for(let o=0;o<i[t][n].length-1;o++){s=i[t][n][o+1];const a=new re(r,se,oe,ae),c=new re(s,se,oe,ae+1);a.otherEvent=c,c.otherEvent=a,ne(a,c)>0?(c.isLeftEndpoint=!0,a.isLeftEndpoint=!1):(a.isLeftEndpoint=!0,c.isLeftEndpoint=!1),e.push(a),e.push(c),r=s,ae+=1}}se+=1}class he{constructor(t){this.leftSweepEvent=t,this.rightSweepEvent=t.otherEvent}}function ue(t,e){if(null===t||null===e)return!1;if(t.leftSweepEvent.ringId===e.leftSweepEvent.ringId&&(t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.rightSweepEvent)||t.leftSweepEvent.isSamePoint(e.leftSweepEvent)||t.leftSweepEvent.isSamePoint(e.rightSweepEvent)))return!1;const n=t.leftSweepEvent.p.x,i=t.leftSweepEvent.p.y,r=t.rightSweepEvent.p.x,s=t.rightSweepEvent.p.y,o=e.leftSweepEvent.p.x,a=e.leftSweepEvent.p.y,c=e.rightSweepEvent.p.x,h=e.rightSweepEvent.p.y,u=(h-a)*(r-n)-(c-o)*(s-i);if(0===u)return!1;const l=((c-o)*(i-a)-(h-a)*(n-o))/u,p=((r-n)*(i-a)-(s-i)*(n-o))/u;return l>=0&&l<=1&&p>=0&&p<=1&&[n+l*(r-n),i+l*(s-i)]}var le=function(t,e){const n=new te([],ne);return function(t,e){if("FeatureCollection"===t.type){const n=t.features;for(let t=0;t<n.length;t++)ce(n[t],e)}else ce(t,e)}(t,n),function(t,e){e=e||!1;const n=[],i=new te([],ie);for(;t.length;){const r=t.pop();if(r.isLeftEndpoint){const t=new he(r);for(let s=0;s<i.data.length;s++){const o=i.data[s];if(e&&o.leftSweepEvent.featureId===r.featureId)continue;const a=ue(t,o);!1!==a&&n.push(a)}i.push(t)}else!1===r.isLeftEndpoint&&i.pop()}return n}(n,e)};function pe(t,e,n={}){const{removeDuplicates:i=!0,ignoreSelfIntersections:r=!1}=n;let s=[];"FeatureCollection"===t.type?s=s.concat(t.features):"Feature"===t.type?s.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||s.push(pt(t)),"FeatureCollection"===e.type?s=s.concat(e.features):"Feature"===e.type?s.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||s.push(pt(e));const o=le(dt(s),r);let a=[];if(i){const t={};o.forEach((e=>{const n=e.join(",");t[n]||(t[n]=!0,a.push(e))}))}else a=o;return dt(a.map((t=>function(t,e,n={}){if(!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!gt(t[0])||!gt(t[1]))throw new Error("coordinates must contain numbers");return pt({type:"Point",coordinates:t},e,n)}(t))))}function fe(t,e={}){const n=Wt(t);switch(e.properties||"Feature"!==t.type||(e.properties=t.properties),n.type){case"Polygon":return function(t,e={}){return de(Wt(t).coordinates,e.properties?e.properties:"Feature"===t.type?t.properties:{})}(n,e);case"MultiPolygon":return function(t,e={}){const n=Wt(t).coordinates,i=e.properties?e.properties:"Feature"===t.type?t.properties:{},r=[];return n.forEach((t=>{r.push(de(t,i))})),dt(r)}(n,e);default:throw new Error("invalid poly")}}function de(t,e){return t.length>1?function(t,e,n={}){return pt({type:"MultiLineString",coordinates:t},e,n)}(t,e):function(t,e,n={}){if(t.length<2)throw new Error("coordinates must be an array of two or more positions");return pt({type:"LineString",coordinates:t},e,n)}(t[0],e)}function ge(t,e){for(let n=0;n<t.coordinates.length-1;n++)if(me(t.coordinates[n],t.coordinates[n+1],e.coordinates))return!0;return!1}function ye(t,e,n){for(const n of e.coordinates)if(Xt(n,t))return!0;return pe(e,fe(t),{ignoreSelfIntersections:n}).features.length>0}function me(t,e,n){const i=n[0]-t[0],r=n[1]-t[1],s=e[0]-t[0],o=e[1]-t[1];return 0==i*o-r*s&&(Math.abs(s)>=Math.abs(o)?s>0?t[0]<=n[0]&&n[0]<=e[0]:e[0]<=n[0]&&n[0]<=t[0]:o>0?t[1]<=n[1]&&n[1]<=e[1]:e[1]<=n[1]&&n[1]<=t[1])}function be(t,e,n={}){var i;const r=null!=(i=n.ignoreSelfIntersections)&&i;let s=!1;return bt(t,(t=>{bt(e,(e=>{if(!0===s)return!0;s=!function(t,e,n={}){var i;const r=null!=(i=n.ignoreSelfIntersections)&&i;let s=!0;return bt(t,(t=>{bt(e,(e=>{if(!1===s)return!1;s=function(t,e,n){switch(t.type){case"Point":switch(e.type){case"Point":return i=t.coordinates,r=e.coordinates,!(i[0]===r[0]&&i[1]===r[1]);case"LineString":return!ge(e,t);case"Polygon":return!Xt(t,e)}break;case"LineString":switch(e.type){case"Point":return!ge(t,e);case"LineString":return!function(t,e,n){return pe(t,e,{ignoreSelfIntersections:n}).features.length>0}(t,e,n);case"Polygon":return!ye(e,t,n)}break;case"Polygon":switch(e.type){case"Point":return!Xt(e,t);case"LineString":return!ye(t,e,n);case"Polygon":return!function(t,e,n){for(const n of t.coordinates[0])if(Xt(n,e))return!0;for(const n of e.coordinates[0])if(Xt(n,t))return!0;return pe(fe(t),fe(e),{ignoreSelfIntersections:n}).features.length>0}(e,t,n)}}var i,r;return!1}(t.geometry,e.geometry,r)}))})),s}(t.geometry,e.geometry,{ignoreSelfIntersections:r})}))})),s}const ve=(t,e)=>{const{origWidth:n,origHeight:i}=e,r=t.points.map((([t,e])=>[t*n/100,e*i/100]));return r.length>0&&!we(r[0],r[r.length-1])&&r.push(r[0]),{...t,points:r}},we=(t,e)=>t[0]===e[0]&&t[1]===e[1],xe=t=>{const{origWidth:e,origHeight:n,inputWidth:i,inputHeight:r}=t;let[s,o,a,c]=t.boundingBox;return s=s*e/i,o=o*n/r,a=a*e/i,c=c*n/r,s=Math.max(0,Math.min(s,e)),o=Math.max(0,Math.min(o,n)),a=Math.max(0,Math.min(a,e)),c=Math.max(0,Math.min(c,n)),{...t,boundingBox:[s,o,a,c]}},Se=(t,e,n)=>{const i=[];for(const r of t)_e(xe(r),e,n)&&e.some((t=>!t.classes.length||t.classes.includes(r.label)))&&i.push(r);return i},_e=(t,e,n)=>{if(t.confidence<n.object.confidence)return!1;if(0===e.length)return!0;const[i,r,s,o]=t.boundingBox,a=wt([i,r,s,o]);for(const n of e){const e=ve(n,t),i=ft([e.points]);if(e.classes.length>0&&!e.classes.includes(t.label))continue;const r=be(a,i),s=Jt(i,a);if(e.isPrivacyMask){if(r||s)return!1}else if("include"===e.filter){if("contain"===e.type){if(s)return!0}else if("intersect"===e.type&&(r||s))return!0}else if("exclude"===e.filter)if("contain"===e.type){if(!s)return!0}else if("intersect"===e.type&&!r&&!s)return!0}return!1};class Ee extends o{logger;snapshotCache;cameraSubject;cameraState=new H(!1);lightState=new H(this.getLightState({state:!1},!0));motionState=new H(this.getMotionState({detections:[],state:!1},!0));audioState=new H(this.getAudioState({state:!1,db:0},!0));objectState=new H(this.getObjectState({detections:[]},!0));doorbellState=new H(this.getDoorbellState({state:!1},!0));sirenState=new H(this.getSirenState({state:!1,level:0},!0));batteryState=new H(this.getBatteryState({level:100,charging:!1,lowBattery:!1},!0));onConnected=this.createStateObservable(this.cameraState);onLightSwitched=this.createStateObservable(this.lightState);onMotionDetected=this.createStateObservable(this.motionState);onAudioDetected=this.createStateObservable(this.audioState);onObjectDetected=this.createStateObservable(this.objectState);onDoorbellPressed=this.createStateObservable(this.doorbellState);onSirenDetected=this.createStateObservable(this.sirenState);onBatteryChanged=this.createStateObservable(this.batteryState);get cameraObject(){return c(this.cameraSubject.getValue())}get id(){return this.cameraSubject.getValue()._id}get nativeId(){return this.cameraSubject.getValue().nativeId}get pluginId(){return this.cameraSubject.getValue().pluginId}get connected(){return this.cameraState.getValue()}get disabled(){return this.cameraSubject.getValue().disabled}get name(){return this.cameraSubject.getValue().name}get type(){return this.cameraSubject.getValue().type}get info(){return c(this.cameraSubject.getValue().info)}get isCloud(){return this.cameraSubject.getValue().isCloud}get hasLight(){return this.cameraSubject.getValue().hasLight}get hasSiren(){return this.cameraSubject.getValue().hasSiren}get hasBinarySensor(){return this.cameraSubject.getValue().hasBinarySensor}get hasBattery(){return this.cameraSubject.getValue().hasBattery}get hasMotionDetector(){return this.cameraSubject.getValue().hasMotionDetector}get extendedMotionDetector(){return this.cameraSubject.getValue().extendedMotionDetector}get hasAudioDetector(){return this.cameraSubject.getValue().hasAudioDetector}get hasObjectDetector(){return this.cameraSubject.getValue().hasObjectDetector}get hasPtz(){return this.cameraSubject.getValue().hasPtz}get snapshotTTL(){return this.cameraSubject.getValue().snapshotTTL}get activityZones(){return c(this.cameraSubject.getValue().activityZones)}get activitySettings(){return c(this.cameraSubject.getValue().activitySettings)}get frameWorkerSettings(){return c(this.cameraSubject.getValue().frameWorkerSettings)}get streamSource(){return this.highResolutionSource??this.midResolutionSource??this.lowResolutionSource}get snapshotSource(){const t=this.sources.find((t=>t.roles.includes("snapshot")&&!t.internal));if(t)return{_id:t._id,name:t.name,roles:t.roles,urls:t.urls,internal:t.internal}}get highResolutionSource(){return this.sources.find((t=>t.roles.includes("high-resolution")&&!t.internal))}get midResolutionSource(){return this.sources.find((t=>t.roles.includes("mid-resolution")&&!t.internal))}get lowResolutionSource(){return this.sources.find((t=>t.roles.includes("low-resolution")&&!t.internal))}get ptz(){return this.ptzDelegate}constructor(t,e){super(),this.logger=e,this.cameraSubject=new H(t),this.updateCamera(t),this.snapshotCache=new(u())({max:100,ttl:1e3*this.snapshotTTL}),"native"===t.pluginId&&this.cameraState.next(!0)}getValue(t){switch(t){case"light":return c(this.lightState.getValue());case"motion":return c(this.motionState.getValue());case"audio":return c(this.audioState.getValue());case"object":return c(this.objectState.getValue());case"doorbell":return c(this.doorbellState.getValue());case"siren":return c(this.sirenState.getValue());case"battery":return c(this.batteryState.getValue());default:throw new Error(`Unknown state: ${t}`)}}async snapshot(t){this.snapshotCache.purgeStale();const e=this.snapshotSource??this.streamSource,n=e.urls.www.jpegSnapshot,i=this.snapshotCache.get(e._id);if(!t&&i)return i;try{if("native"!==this.cameraObject.pluginId){const t=await this.cameraDelegate.snapshot();if(t&&t.byteLength>0)return this.snapshotCache.set(e._id,t),t}const t=new AbortController,i=setTimeout((()=>t.abort()),5e3),r=await fetch(n,{signal:t.signal});if(clearTimeout(i),!r.ok)throw new Error("Status Code: "+r.status);const s=await r.arrayBuffer();return s.byteLength>0&&this.snapshotCache.set(e._id,s),s}catch{return}}onStateChange(t){return this[`${t}State`].pipe(et(),nt((([e,n])=>this.stateChanged(e,n,t))),it((([t,e])=>({oldState:t,newState:e}))),ct({connector:()=>new K(1)}))}onPropertyChange(t){return this.cameraSubject.pipe(et(),ut((([e,n])=>(Array.isArray(t)?t:[t]).map((t=>({property:t,oldData:e[t],newData:n[t]}))))),nt((({oldData:t,newData:e})=>!a(t,e,!0))),ct({connector:()=>new K(1)}))}removeAllListeners(){this.lightState.complete(),this.motionState.complete(),this.audioState.complete(),this.objectState.complete(),this.doorbellState.complete(),this.sirenState.complete(),this.batteryState.complete(),this.cameraSubject.complete(),this.cameraState.complete()}updateCamera(t){t.snapshotTTL!==this.snapshotTTL&&this.snapshotCache.clear(),this.cameraSubject.next(t)}updateCameraState(t){this.cameraState.next(t)}updateStateInternal(t,e,n,i){let r,s=!1;if(n)s=!0,r=e;else{const n=this.checkStateInternal(t,e,i);s=n.changed,r=n.event}if(s)switch(t){case"light":this.lightState.next(this.getLightState(r));break;case"motion":this.motionState.next(this.getMotionState(r));break;case"audio":this.audioState.next(this.getAudioState(r));break;case"object":this.objectState.next(this.getObjectState(r));break;case"doorbell":this.doorbellState.next(this.getDoorbellState(r));break;case"siren":this.sirenState.next(this.getSirenState(r));break;case"battery":this.batteryState.next(this.getBatteryState(r));break;default:throw new Error(`Unknown state: ${t}`)}}checkStateInternal(t,e,n){let i,r=!1;switch(t){case"audio":const s=e;i=this.getAudioState(s),r=this.stateChanged(this.getValue("audio"),i,"audio");break;case"light":const o=e;i=this.getLightState(o),r=this.stateChanged(this.getValue("light"),i,"light");break;case"motion":const a=e;a.state||(a.detections=[]),!n&&a.detections&&(a.detections=Yt(a.detections),a.detections=Se(a.detections,this.activityZones,this.activitySettings)),i=this.getMotionState(a),r=this.stateChanged(this.getValue("motion"),i,"motion");break;case"object":const c=e;n||(c.detections=Yt(c.detections),c.detections=Se(c.detections,this.activityZones,this.activitySettings)),i=this.getObjectState(c),r=this.stateChanged(this.getValue("object"),i,"object");break;case"doorbell":const h=e;i=this.getDoorbellState(h),r=this.stateChanged(this.getValue("doorbell"),i,"doorbell");break;case"siren":const u=e;i=this.getSirenState(u),r=this.stateChanged(this.getValue("siren"),i,"siren");break;case"battery":const l=e;i=this.getBatteryState(l),r=this.stateChanged(this.getValue("battery"),i,"battery");break;default:throw new Error(`Unknown state: ${t}`)}return{changed:r,event:i}}stateChanged(t,e,n){return void 0!==t&&void 0!==e&&void 0!==n&&(!("audio"===n&&!this.hasAudioDetector)&&(!("motion"===n&&!this.hasMotionDetector)&&(!("object"===n&&!this.hasObjectDetector)&&(!("siren"===n&&!this.hasSiren)&&(!("battery"===n&&!this.hasBattery)&&(!("doorbell"===n&&!this.hasBinarySensor)&&(!("light"===n&&!this.hasLight)&&!a(this.cleanState(t),this.cleanState(e),!0))))))))}getAudioState(t,e=!1){let n,i;if(e||(n=this.getValue("audio"),n&&n.lastEvent&&delete n.lastEvent),this.isStateEvent(t))i=t;else{const e={...t,timestamp:Date.now()};i={...e,db:e.db??n?.db??0,lastEvent:n}}return i}getMotionState(t,e=!1){let n,i;return e||(n=this.getValue("motion"),n&&n.lastEvent&&delete n.lastEvent),i=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},i}getObjectState(t,e=!1){let n,i;return e||(n=this.getValue("object"),n&&n.lastEvent&&delete n.lastEvent),i=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},i}getDoorbellState(t,e=!1){let n,i;return e||(n=this.getValue("doorbell"),n&&n.lastEvent&&delete n.lastEvent),i=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},i}getLightState(t,e=!1){let n,i;return e||(n=this.getValue("light"),n&&n.lastEvent&&delete n.lastEvent),i=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},i}getSirenState(t,e=!1){let n,i;if(e||(n=this.getValue("siren"),n&&n.lastEvent&&delete n.lastEvent),this.isStateEvent(t))i=t;else{const e={...t,timestamp:Date.now()};i={...e,level:e.level??n?.level??0,lastEvent:n}}return i}getBatteryState(t,e=!1){let n,i;return e||(n=this.getValue("battery"),n&&n.lastEvent&&delete n.lastEvent),i=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},charging:t.charging??n?.charging??!1,lowBattery:t.lowBattery??n?.lowBattery??!1,lastEvent:n},i}cleanState(t){const e=c(t);return"timestamp"in e&&delete e.timestamp,"lastEvent"in e&&delete e.lastEvent,e}isStateEvent(t){return"timestamp"in t}createStateObservable(t){return t.pipe((void 0===n&&(n=Y),e=null!=e?e:lt,Q((function(t,i){var r,s=!0;t.subscribe(Z(i,(function(t){var o=n(t);!s&&e(r,o)||(s=!1,r=o,i.next(t))})))}))),ct({connector:()=>new K(1)}));var e,n}}class ke{delegate;onRequest;constructor(t){this.onRequest=t}async snapshot(){return this.delegate?this.delegate.snapshot():this._onRequest("snapshot",[],5e3)}_onRequest(t,e,n){return this.onRequest("cameraDelegate",t,e,n)}}class Pe{delegate;onRequest;constructor(t){this.onRequest=t}async moveAbsolute(t,e,n){return this.delegate?this.delegate.moveAbsolute(t,e,n):this._onRequest("moveAbsolute",[t,e,n])}async moveRelative(t,e,n){return this.delegate?this.delegate.moveRelative(t,e,n):this._onRequest("moveRelative",[t,e,n])}async moveContinuous(t,e,n){return this.delegate?this.delegate.moveContinuous(t,e,n):this._onRequest("moveContinuous",[t,e,n])}async stop(){return this.delegate?this.delegate.stop():this._onRequest("stop",[])}_onRequest(t,e,n){return this.onRequest("ptzDelegate",t,e,n)}}const Te=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}));class Me extends EventTarget{cameraDevice;socketService;logger;options;videoPlayer;socket;streamId;hasBackchannel=!1;hasAudio=!0;closed=!1;pc=null;micTransceiver=null;buf=new Uint8Array(2097152);mediaSource=null;sourceBuffer=null;bufLen=0;mseCodecs="";videoPlayerMp4;media=["video","audio","microphone"];codecList=[];wsReconnectTimeout;webrtcConnectTimeout;webrtcReconnectTimeout;wsReconnectTimer;webrtcReconnectTimer=1e3;webrtcTimeoutTimer=2e3;_finishLoading=!1;_firstFrameReceived=!1;animationFrameId;isAutoSwitching=!1;get mode(){return this.options.mode}get logPrefix(){return"auto"===this.options.mode||this.isAutoSwitching?`[${this.cameraDevice.name}] [auto]`:`[${this.cameraDevice.name}] [${this.options.mode}]`}constructor(t,e,n,i){super(),this.options=i,this.videoPlayer=i.videoElement,this.cameraDevice=t,this.socketService=e,this.logger=n,this.webrtcTimeoutTimer=i.webrtcConnectTimeout??this.webrtcTimeoutTimer;const{socket:r}=this.socketService.getSocket(`${t.id}-go2rtcSession`,!0);this.socket=r,this.socket.connect(),this.streamId=Te(),this.createCodecsList()}connect(t){t&&this.setMode(t),"auto"===this.options.mode&&(this.isAutoSwitching=!0),console.log(this.logPrefix,"Connecting..."),this.socket.on("ws-open",this.onWsOpen.bind(this)),this.socket.on("ws-close",this.onWsClose.bind(this)),this.socket.on("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-open",{id:this.streamId,cameraSource:this.options.sourceName,mode:this.options.mode})}disconnect(){console.log(this.logPrefix,"Disconnecting..."),this.socket.removeListener("ws-open",this.onWsOpen.bind(this)),this.socket.removeListener("ws-close",this.onWsClose.bind(this)),this.socket.removeListener("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-close",{id:this.streamId})}async reconnect(t){console.log(this.logPrefix,"Reconnecting..."),this.dispatchEvent(new Event("reconnect")),this.close(),await new Promise((t=>setTimeout(t,100))),this.connect(t)}reset(){this._finishLoading=!1,this._firstFrameReceived=!1,clearTimeout(this.wsReconnectTimeout),clearTimeout(this.webrtcConnectTimeout),clearTimeout(this.webrtcReconnectTimeout),this.micTransceiver?.sender.replaceTrack(null).catch((()=>{})),this.micTransceiver=null,this.pc?.getTransceivers().forEach((t=>t.sender?.track?.stop())),this.pc?.close(),this.pc=null,this.videoPlayerMp4?.remove(),this.videoPlayerMp4=void 0,this.videoPlayer.srcObject=null,this.videoPlayer.src="",this.videoPlayer.poster="",void 0!==this.animationFrameId&&("cancelVideoFrameCallback"in this.videoPlayer?this.videoPlayer.cancelVideoFrameCallback(this.animationFrameId):cancelAnimationFrame(this.animationFrameId),this.animationFrameId=void 0)}close(){console.log(this.logPrefix,"Closing..."),this.closed=!0,this.reset(),this.disconnect(),this.socket.emit("end"),this.socket.removeAllListeners()}async toggleMicrophone(t){if(this.micTransceiver)try{await this.micTransceiver.sender.replaceTrack(t)}catch(e){if(!this.micTransceiver||!t)return;console.log(this.logPrefix,"Microphone error:",e)}}onWsOpen({id:t}){if(t===this.streamId)switch(console.log(this.logPrefix,"Connected"),this.options.mode){case"webrtc":case"webrtc/tcp":console.log(this.logPrefix,"Requesting WebRTC session..."),this.requestWebrtc();break;case"mse":console.log(this.logPrefix,"Requesting MSE session..."),this.requestMse();break;case"auto":console.log(this.logPrefix,"Requesting auto session..."),this.requestAuto();break;case"hls":console.log(this.logPrefix,"Requesting HLS session..."),this.requestHls();break;case"mp4":console.log(this.logPrefix,"Requesting MP4 session..."),this.requestMp4();break;case"mjpeg":console.log(this.logPrefix,"Requesting MJPEG session..."),this.requestMjpeg();break;default:console.error(this.logPrefix,"Unknown mode!"),this.dispatchEvent(new ErrorEvent("error",{message:"Unknown mode!"}))}}onWsClose({id:t}){t===this.streamId&&(this.closed||void 0===this.wsReconnectTimer||(clearTimeout(this.wsReconnectTimeout),this.wsReconnectTimeout=setTimeout((()=>{this.reconnect()}),this.wsReconnectTimer)))}onWsMessage({id:t,data:e}){if(t===this.streamId&&e.type){switch(e.type){case"mse":this.onMseData(e);break;case"hls":this.onHlsData(e);break;case"webrtc/candidate":case"webrtc/answer":this.onWebrtcData(e);break;case"mse-binary":this.onMseBuffer(e);break;case"mjpeg-binary":this.onMjpegBuffer(e);break;case"mp4-binary":this.onMp4Buffer(e);break;case"stream-info":this.onStreamInfo(e);break;case"error":this.isAutoSwitching||this.dispatchEvent(new ErrorEvent("error",{error:e,message:e.value}))}["mse-binary","mjpeg-binary","mp4-binary"].includes(e.type)&&this.onFirstFrame()}}async requestWebrtc(t){t||this.reset(),t&&this.mediaSource||(this.webrtcConnectTimeout=setTimeout((()=>{console.log(this.logPrefix,"WebRTC connection timeout - switching to MSE"),this.pc&&"connected"!==this.pc.connectionState&&(this.pc.close(),this.pc=null,t||this.reconnect("mse"))}),this.webrtcTimeoutTimer)),this.pc=new RTCPeerConnection({bundlePolicy:"max-bundle",iceServers:[{urls:"stun:stun.l.google.com:19302"}],sdpSemantics:"unified-plan"}),this.pc.onicecandidate=t=>{if(console.log(this.logPrefix,"onicecandidate",t.candidate),"webrtc/tcp"===this.options.mode&&"udp"===t.candidate?.protocol)return;const e=t.candidate?.toJSON().candidate??"";this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/candidate",value:e}})},this.pc.onconnectionstatechange=async()=>{if(console.log(this.logPrefix,"onconnectionstatechange:",this.pc?.connectionState),"connected"===this.pc?.connectionState){clearTimeout(this.webrtcConnectTimeout);const t=new MediaStream(this.pc.getTransceivers().filter((t=>"recvonly"===t.currentDirection)).map((t=>t.receiver.track)));this.isAutoSwitching?await this.handleAutoMode(t):(this.videoPlayer.srcObject=t,this.onFinishLoading(),this.onFirstFrameWebrtc(t),this.play())}else"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||(clearTimeout(this.webrtcConnectTimeout),clearTimeout(this.webrtcReconnectTimeout),this.webrtcReconnectTimeout=setTimeout((()=>{"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||(this.isAutoSwitching&&this.mediaSource?this.pc&&(this.pc.close(),this.pc=null):"webrtc"===this.options.mode?(console.log(this.logPrefix,"WebRTC failed - switching to MSE"),this.reconnect("mse")):this.reconnect())}),this.webrtcReconnectTimer))},this.pc.oniceconnectionstatechange=()=>{console.log(this.logPrefix,"iceconnectionstatechange",this.pc?.iceConnectionState)},this.pc.onicecandidateerror=t=>{console.log(this.logPrefix,"onicecandidateerror",t)},this.pc.onsignalingstatechange=()=>{console.log(this.logPrefix,"onsignalingstatechange",this.pc?.signalingState)},this.pc.onicegatheringstatechange=()=>{console.log(this.logPrefix,"onicegatheringstatechange",this.pc?.iceGatheringState)},this.pc.onnegotiationneeded=t=>{console.log(this.logPrefix,"onnegotiationneeded",t)},this.pc.addTransceiver("video",{direction:"recvonly"}),this.pc.addTransceiver("audio",{direction:"recvonly"}),this.micTransceiver=this.pc.addTransceiver("audio",{direction:"sendonly"});const e=await this.pc.createOffer();await this.pc.setLocalDescription(e),console.log(this.logPrefix,"Offer:",e.sdp),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/offer",value:e.sdp}})}async onWebrtcData(t){try{switch(t.type){case"webrtc/candidate":if(console.log(this.logPrefix,"remote candidate:",t.value),"webrtc/tcp"===this.options.mode&&t.value.indexOf(" udp ")>0)return;await(this.pc?.addIceCandidate({candidate:t.value,sdpMid:"0"}));break;case"webrtc/answer":console.log(this.logPrefix,"Answer:",t.value),await(this.pc?.setRemoteDescription({type:"answer",sdp:t.value}));break;case"error":if(console.log(this.logPrefix,"WebRTC Error:",t.value),t.value.indexOf("webrtc/offer")<0)return;this.pc?.close()}}catch(t){this.dispatchEvent(new ErrorEvent("error",{error:t,message:t.message}))}}requestMse(){if(this.reset(),"ManagedMediaSource"in window){console.log(this.logPrefix,"Using ManagedMediaSource");const t=window.ManagedMediaSource;this.mediaSource=new t,this.mediaSource.addEventListener("sourceopen",(()=>{this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(t.isTypeSupported.bind(this))}})}),{once:!0}),this.videoPlayer.disableRemotePlayback=!0,this.videoPlayer.srcObject=this.mediaSource}else console.log(this.logPrefix,"Using MediaSource"),this.mediaSource=new MediaSource,this.mediaSource.addEventListener("sourceopen",(()=>{URL.revokeObjectURL(this.videoPlayer.src),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(MediaSource.isTypeSupported.bind(this))}})}),{once:!0}),this.videoPlayer.src=URL.createObjectURL(this.mediaSource),this.videoPlayer.srcObject=null;this.play(),this.mseCodecs=""}onMseData(t){this.mediaSource&&(this.setMode("mse"),this.mseCodecs=t.value,this.bufLen=0,this.buf=new Uint8Array(2097152),this.sourceBuffer=this.mediaSource.addSourceBuffer(t.value),this.sourceBuffer.mode="segments",this.sourceBuffer.addEventListener("updateend",(()=>{if(!this.sourceBuffer?.updating)try{if(this.bufLen>0){const t=this.buf.slice(0,this.bufLen);this.bufLen=0,this.sourceBuffer?.appendBuffer(t)}else if(this.sourceBuffer?.buffered?.length){const t=this.sourceBuffer.buffered.end(this.sourceBuffer.buffered.length-1)-15,e=this.sourceBuffer.buffered.start(0);t>e&&(this.sourceBuffer.remove(e,t),this.mediaSource?.setLiveSeekableRange(t,t+15))}}catch{}})),this.onFinishLoading())}async onMseBuffer(t){if("closed"!==this.mediaSource?.readyState)if(this.sourceBuffer?.updating||this.bufLen>0){const e=new Uint8Array(t.value);this.buf.set(e,this.bufLen),this.bufLen+=e.byteLength}else try{this.sourceBuffer?.appendBuffer(t.value)}catch{}else this.closed||this.isAutoSwitching||(this.closed=!0,this.dispatchEvent(new ErrorEvent("error",{message:"MediaSource closed"})),this.requestWebrtc())}requestAuto(){this.requestMse(),this.requestWebrtc(!0)}requestMjpeg(){this.reset(),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mjpeg"}})}onMjpegBuffer(t){this.setMode("mjpeg"),this.videoPlayer.controls=!1,this.videoPlayer.poster="data:image/jpeg;base64,"+this.btoaBinary(t.value),this.onFinishLoading()}requestMp4(){this.reset();const t=document.createElement("canvas");let e=null;this.videoPlayerMp4=document.createElement("video"),this.videoPlayerMp4.autoplay=!0,this.videoPlayerMp4.playsInline=!0,this.videoPlayerMp4.muted=!0,this.videoPlayerMp4.addEventListener("loadeddata",(()=>{this.videoPlayerMp4&&(e||(t.width=this.videoPlayerMp4.videoWidth,t.height=this.videoPlayerMp4.videoHeight,e=t.getContext("2d")),e?.drawImage(this.videoPlayerMp4,0,0,t.width,t.height),this.videoPlayer.controls=!1,this.videoPlayer.poster=t.toDataURL("image/jpeg"))}));const n=this.codecList.filter((t=>this.media.includes(t.indexOf("vc1")>0?"video":"audio"))).filter((t=>this.videoPlayer.canPlayType(`video/mp4; codecs="${t}"`))).join();console.log(this.logPrefix,"Playable codecs (MP4):",n),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mp4",value:n}})}onMp4Buffer(t){this.setMode("mp4"),this.videoPlayerMp4&&(this.videoPlayerMp4.src="data:video/mp4;base64,"+this.btoaBinary(t.value)),this.onFinishLoading()}requestHls(){this.reset();const t=this.parseCodecs((t=>this.videoPlayer.canPlayType(t)));console.log(this.logPrefix,"Playable codecs (HLS):",t),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"hls",value:t}})}onHlsData(t){this.setMode("hls");const e="http"+t.wsURL.substring(2,t.wsURL.indexOf("/ws"))+"/hls/",n=t.value.replace("hls/",e),i="data:application/vnd.apple.mpegurl;base64,"+btoa(n.toString());this.videoPlayer.src=i,this.onFinishLoading(),this.play()}async handleAutoMode(t){if(!this.isAutoSwitching)return;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0],i=this.evaluateStreamQuality(e,n),r=this.evaluateMSEQuality();console.log(this.logPrefix,"Stream quality comparison:",{rtcPriority:i,msePriority:r,hasVideo:!!e,hasAudio:!!n,mseCodecs:this.mseCodecs}),i>=r?((this._finishLoading||this._firstFrameReceived||"webrtc"!==this.options.mode)&&this.dispatchEvent(new Event("onModeChange")),this.setMode("webrtc"),this.videoPlayer.srcObject=t,this.onFinishLoading(!0),this.onFirstFrameWebrtc(t),this.play(),this.disconnect(),this.mediaSource&&("open"===this.mediaSource.readyState&&this.mediaSource.endOfStream(),this.mediaSource=null,this.sourceBuffer=null)):this.pc&&(this.pc.close(),this.pc=null),this.isAutoSwitching=!1}evaluateStreamQuality(t,e){let n=0;return t&&(n+=544),e&&(n+=258),n}evaluateMSEQuality(){let t=0;return this.mseCodecs.includes("hvc1.")&&(t+=560),this.mseCodecs.includes("avc1.")&&(t+=528),this.mseCodecs.includes("mp4a.")&&(t+=257),t}onStreamInfo(t){const e=t.value,n=e?.producers[0];n&&(this.hasBackchannel=n.senders?.some((t=>"audio"===t.codec.codec_type))??!1,this.hasAudio=n.receivers?.some((t=>"audio"===t.codec.codec_type))??!1)}async play(){try{await this.videoPlayer.play()}catch(t){if(!this.videoPlayer.muted)return this.videoPlayer.muted=!0,this.play();this.logger.warn(this.cameraDevice.name,t)}}onFirstFrameWebrtc(t){const e=this.isAutoSwitching,n=t.getVideoTracks()[0];if((!this._firstFrameReceived||e)&&n)if("requestVideoFrameCallback"in n)this.animationFrameId=n.requestVideoFrameCallback((()=>{this.onFirstFrame(e)}));else{const t=()=>{this.videoPlayer.readyState>=2&&this.videoPlayer.videoWidth>0?this.onFirstFrame(e):this.animationFrameId=requestAnimationFrame(t)};this.animationFrameId=requestAnimationFrame(t)}}onFirstFrame(t){this._firstFrameReceived&&!t||(console.log(this.logPrefix,"First frame received"),this._firstFrameReceived=!0,this.dispatchEvent(new Event("onFirstFrame")))}onFinishLoading(t){this._finishLoading&&!t||(this._finishLoading=!0,this.dispatchEvent(new Event("onFinishLoading")))}setMode(t){this.options.mode!==t&&(console.log(this.logPrefix,`Mode changed: ${this.options.mode} -> ${t}`),this.options.mode=t)}createCodecsList(){const t=["avc1.640029","avc1.64002A","avc1.640033","hvc1.1.6.L153.B0","mp4a.40.2","mp4a.40.5","flac","opus"],e="undefined"==typeof window?null:/Version\/(\d+).+Safari/.exec(navigator.userAgent);if(e?.[1]){const n=e[1]<"13"?"mp4a.40.2":e[1]<"14"?"flac":"opus";t.splice(t.indexOf(n))}this.codecList=t}parseCodecs(t){return this.codecList.filter((t=>this.media.includes(t.indexOf("vc1")>0?"video":"audio"))).filter((e=>t(`video/mp4; codecs="${e}"`))).join()}btoaBinary(t){const e=new Uint8Array(t),n=e.byteLength;let i="";for(let t=0;t<n;t++)i+=String.fromCharCode(e[t]);return window.btoa(i)}}class Re extends Ee{socketService;socket;pluginName="@camera.ui/client";subject;_started=!1;get started(){return this._started}cameraDelegate=new ke(this.onRequest.bind(this));ptzDelegate=new Pe(this.onRequest.bind(this));get sources(){return JSON.parse(JSON.stringify(this.cameraSubject.getValue().sources)).filter((t=>!t.internal)).map((t=>({...t,probeStream:(e,n=!1)=>this.onRequest("cameraFn","probeStream",[t._id,e,n]),getInternalSource:e=>this.internalSources.find((n=>n._id===`${t._id}-${e}`))})))}get internalSources(){return JSON.parse(JSON.stringify(this.cameraSubject.getValue().sources)).filter((t=>t.internal)).map((t=>({...t,probeStream:(e,n=!1)=>this.onRequest("cameraFn","probeStream",[t._id,e,n]),type:t.name.endsWith(" AAC")?"aac":t.name.endsWith(" OPUS")?"opus":"pcma"})))}constructor(t,e,n){super(t,n),this.socketService=e;const{socket:i}=this.socketService.getSocket(this.id,!0);this.socket=i,this.socket.connect(),this.subject=`${this.pluginName}.camera.${this.id}`,this.listenToMessages()}async start(){this._started||(this._started=!0,await this.refreshStates(),this.socket.emit("joinRoomStates",this.id))}stop(){this._started=!1,this.socket.emit("leaveRoomStates",this.id)}close(){this.cleanup()}connect(){return this.onRequest("cameraFn","connect")}disconnect(){return this.onRequest("cameraFn","disconnect")}createWebRTCSession(t){return new Me(this,this.socketService,this.logger,t)}async refreshStates(){const t=await this.onRequest("cameraFn","refreshStates");super.updateCamera(t.camera),super.updateCameraState(t.cameraState);for(const[e,n]of Object.entries(t.states))super.updateStateInternal(e,n,!0)}async cleanup(){this.stop(),this.removeAllListeners(),this.unsubscribe(),this.socket.removeAllListeners()}listenToMessages(){this.socket.emit("joinRoomDevice",this.id),this.socket.on("updateState",(t=>{t.cameraId===this.id&&super.updateStateInternal(t.stateName,t.data.newEvent,!0)})),this.socket.on("updateDevice",(t=>{if(t.cameraId===this.id)switch(t.type){case"removed":this.cleanup();break;case"updated":super.updateCamera(t.data);break;case"cameraState":super.updateCameraState(t.data)}}))}onRequest(t,e,n=[]){const i={requestId:Te(),targetId:this.subject,targetName:this.name,pluginId:this.pluginName,cameraId:this.id,type:"request",proxy:"camera",client:t,fn:e,args:n,timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",i,(n=>{n.error?e(n.error):t(n.response)}))}))}}class Oe{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(t,e){this.socketService=t,this.socket=t.socket,this.logger=e,this.subject=`${this.pluginName}.coreManager`}async getFFmpegPath(){return this.onRequest("getFFmpegPath")}async getHwaccelInfo(t){return this.onRequest("getHwaccelInfo",[t])}async getServerAddresses(){return this.onRequest("getServerAddresses")}async getIceServers(){return this.onRequest("getIceServers")}onRequest(t,e){const n={requestId:Te(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"core",client:"coreFn",fn:t,args:e??[],timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",n,(n=>{n.error?e(n.error):t(n.response)}))}))}}class Ae{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(t,e){this.socketService=t,this.socket=t.socket,this.logger=e,this.subject=`${this.pluginName}.deviceManager`}async getCameraById(t){const e=await this.onRequest("getCameraById",[t]);if(e){const t=new Re(e,this.socketService,this.logger);return await t.refreshStates(),t}}async getCameraByName(t){const e=await this.onRequest("getCameraByName",[t]);if(e){const t=new Re(e,this.socketService,this.logger);return await t.refreshStates(),t}}onRequest(t,e){const n={requestId:Te(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"device",client:"deviceFn",fn:t,args:e??[],timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",n,(n=>{n.error?e(n.error):t(n.response)}))}))}}const Ce=Object.create(null);Ce.open="0",Ce.close="1",Ce.ping="2",Ce.pong="3",Ce.message="4",Ce.upgrade="5",Ce.noop="6";const Le=Object.create(null);Object.keys(Ce).forEach((t=>{Le[Ce[t]]=t}));const Be={type:"error",data:"parser error"},Ie="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),je="function"==typeof ArrayBuffer,Ne=t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer,qe=({type:t,data:e},n,i)=>Ie&&e instanceof Blob?n?i(e):Fe(e,i):je&&(e instanceof ArrayBuffer||Ne(e))?n?i(e):Fe(new Blob([e]),i):i(Ce[t]+(e||"")),Fe=(t,e)=>{const n=new FileReader;return n.onload=function(){const t=n.result.split(",")[1];e("b"+(t||""))},n.readAsDataURL(t)};function De(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}let Ue;const Ve="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let t=0;t<64;t++)Ve["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(t)]=t;const Ye="function"==typeof ArrayBuffer,ze=(t,e)=>{if("string"!=typeof t)return{type:"message",data:We(t,e)};const n=t.charAt(0);return"b"===n?{type:"message",data:$e(t.substring(1),e)}:Le[n]?t.length>1?{type:Le[n],data:t.substring(1)}:{type:Le[n]}:Be},$e=(t,e)=>{if(Ye){const n=(t=>{let e,n,i,r,s,o=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);const h=new ArrayBuffer(o),u=new Uint8Array(h);for(e=0;e<a;e+=4)n=Ve[t.charCodeAt(e)],i=Ve[t.charCodeAt(e+1)],r=Ve[t.charCodeAt(e+2)],s=Ve[t.charCodeAt(e+3)],u[c++]=n<<2|i>>4,u[c++]=(15&i)<<4|r>>2,u[c++]=(3&r)<<6|63&s;return h})(t);return We(n,e)}return{base64:!0,data:t}},We=(t,e)=>"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer,Xe=String.fromCharCode(30);let Ge;function He(t){return t.reduce(((t,e)=>t+e.length),0)}function Je(t,e){if(t[0].length===e)return t.shift();const n=new Uint8Array(e);let i=0;for(let r=0;r<e;r++)n[r]=t[0][i++],i===t[0].length&&(t.shift(),i=0);return t.length&&i<t[0].length&&(t[0]=t[0].slice(i)),n}function Ke(t){if(t)return function(t){for(var e in Ke.prototype)t[e]=Ke.prototype[e];return t}(t)}Ke.prototype.on=Ke.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},Ke.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},Ke.prototype.off=Ke.prototype.removeListener=Ke.prototype.removeAllListeners=Ke.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,i=this._callbacks["$"+t];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r=0;r<i.length;r++)if((n=i[r])===e||n.fn===e){i.splice(r,1);break}return 0===i.length&&delete this._callbacks["$"+t],this},Ke.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],i=1;i<arguments.length;i++)e[i-1]=arguments[i];if(n){i=0;for(var r=(n=n.slice(0)).length;i<r;++i)n[i].apply(this,e)}return this},Ke.prototype.emitReserved=Ke.prototype.emit,Ke.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},Ke.prototype.hasListeners=function(t){return!!this.listeners(t).length};const Qe="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),Ze="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function tn(t,...e){return e.reduce(((e,n)=>(t.hasOwnProperty(n)&&(e[n]=t[n]),e)),{})}const en=Ze.setTimeout,nn=Ze.clearTimeout;function rn(t,e){e.useNativeTimers?(t.setTimeoutFn=en.bind(Ze),t.clearTimeoutFn=nn.bind(Ze)):(t.setTimeoutFn=Ze.setTimeout.bind(Ze),t.clearTimeoutFn=Ze.clearTimeout.bind(Ze))}function sn(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}class on extends Error{constructor(t,e,n){super(t),this.description=e,this.context=n,this.type="TransportError"}}class an extends Ke{constructor(t){super(),this.writable=!1,rn(this,t),this.opts=t,this.query=t.query,this.socket=t.socket,this.supportsBinary=!t.forceBase64}onError(t,e,n){return super.emitReserved("error",new on(t,e,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const e=ze(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,e={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(e)}_hostname(){const t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(t){const e=function(t){let e="";for(let n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}(t);return e.length?"?"+e:""}}class cn extends an{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(t){this.readyState="pausing";const e=()=>{this.readyState="paused",t()};if(this._polling||!this.writable){let t=0;this._polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){((t,e)=>{const n=t.split(Xe),i=[];for(let t=0;t<n.length;t++){const r=ze(n[t],e);if(i.push(r),"error"===r.type)break}return i})(t,this.socket.binaryType).forEach((t=>{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};"open"===this.readyState?t():this.once("open",t)}write(t){this.writable=!1,((t,e)=>{const n=t.length,i=new Array(n);let r=0;t.forEach(((t,s)=>{qe(t,!1,(t=>{i[s]=t,++r===n&&e(i.join(Xe))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const t=this.opts.secure?"https":"http",e=this.query||{};return!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=sn()),this.supportsBinary||e.sid||(e.b64=1),this.createUri(t,e)}}let hn=!1;try{hn="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}const un=hn;function ln(){}class pn extends cn{constructor(t){if(super(t),"undefined"!=typeof location){const e="https:"===location.protocol;let n=location.port;n||(n=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||n!==t.port}}doWrite(t,e){const n=this.request({method:"POST",data:t});n.on("success",e),n.on("error",((t,e)=>{this.onError("xhr post error",t,e)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",((t,e)=>{this.onError("xhr poll error",t,e)})),this.pollXhr=t}}class fn extends Ke{constructor(t,e,n){super(),this.createRequest=t,rn(this,n),this._opts=n,this._method=n.method||"GET",this._uri=e,this._data=void 0!==n.data?n.data:null,this._create()}_create(){var t;const e=tn(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(e);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let t in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(t)&&n.setRequestHeader(t,this._opts.extraHeaders[t])}}catch(t){}if("POST"===this._method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}null===(t=this._opts.cookieJar)||void 0===t||t.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var t;3===n.readyState&&(null===(t=this._opts.cookieJar)||void 0===t||t.parseCookies(n.getResponseHeader("set-cookie"))),4===n.readyState&&(200===n.status||1223===n.status?this._onLoad():this.setTimeoutFn((()=>{this._onError("number"==typeof n.status?n.status:0)}),0))},n.send(this._data)}catch(t){return void this.setTimeoutFn((()=>{this._onError(t)}),0)}"undefined"!=typeof document&&(this._index=fn.requestsCount++,fn.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=ln,t)try{this._xhr.abort()}catch(t){}"undefined"!=typeof document&&delete fn.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function dn(){for(let t in fn.requests)fn.requests.hasOwnProperty(t)&&fn.requests[t].abort()}fn.requestsCount=0,fn.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",dn):"function"==typeof addEventListener&&addEventListener("onpagehide"in Ze?"pagehide":"unload",dn,!1));const gn=function(){const t=yn({xdomain:!1});return t&&null!==t.responseType}();function yn(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||un))return new XMLHttpRequest}catch(t){}if(!e)try{return new(Ze[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}const mn="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class bn extends an{get name(){return"websocket"}doOpen(){const t=this.uri(),e=this.opts.protocols,n=mn?{}:tn(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,e,n)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e<t.length;e++){const n=t[e],i=e===t.length-1;qe(n,this.supportsBinary,(t=>{try{this.doWrite(n,t)}catch(t){}i&&Qe((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",e=this.query||{};return this.opts.timestampRequests&&(e[this.opts.timestampParam]=sn()),this.supportsBinary||(e.b64=1),this.createUri(t,e)}}const vn=Ze.WebSocket||Ze.MozWebSocket,wn={websocket:class extends bn{createSocket(t,e,n){return mn?new vn(t,e,n):e?new vn(t,e):new vn(t)}doWrite(t,e){this.ws.send(e)}},webtransport:class extends an{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then((()=>{this.onClose()})).catch((t=>{this.onError("webtransport error",t)})),this._transport.ready.then((()=>{this._transport.createBidirectionalStream().then((t=>{const e=function(t,e){Ge||(Ge=new TextDecoder);const n=[];let i=0,r=-1,s=!1;return new TransformStream({transform(o,a){for(n.push(o);;){if(0===i){if(He(n)<1)break;const t=Je(n,1);s=!(128&~t[0]),r=127&t[0],i=r<126?3:126===r?1:2}else if(1===i){if(He(n)<2)break;const t=Je(n,2);r=new DataView(t.buffer,t.byteOffset,t.length).getUint16(0),i=3}else if(2===i){if(He(n)<8)break;const t=Je(n,8),e=new DataView(t.buffer,t.byteOffset,t.length),s=e.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(Be);break}r=s*Math.pow(2,32)+e.getUint32(4),i=3}else{if(He(n)<r)break;const t=Je(n,r);a.enqueue(ze(s?t:Ge.decode(t),e)),i=0}if(0===r||r>t){a.enqueue(Be);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=t.readable.pipeThrough(e).getReader(),i=new TransformStream({transform(t,e){!function(t,e){Ie&&t.data instanceof Blob?t.data.arrayBuffer().then(De).then(e):je&&(t.data instanceof ArrayBuffer||Ne(t.data))?e(De(t.data)):qe(t,!1,(t=>{Ue||(Ue=new TextEncoder),e(Ue.encode(t))}))}(t,(n=>{const i=n.length;let r;if(i<126)r=new Uint8Array(1),new DataView(r.buffer).setUint8(0,i);else if(i<65536){r=new Uint8Array(3);const t=new DataView(r.buffer);t.setUint8(0,126),t.setUint16(1,i)}else{r=new Uint8Array(9);const t=new DataView(r.buffer);t.setUint8(0,127),t.setBigUint64(1,BigInt(i))}t.data&&"string"!=typeof t.data&&(r[0]|=128),e.enqueue(r),e.enqueue(n)}))}});i.readable.pipeTo(t.writable),this._writer=i.writable.getWriter();const r=()=>{n.read().then((({done:t,value:e})=>{t||(this.onPacket(e),r())})).catch((t=>{}))};r();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this._writer.write(s).then((()=>this.onOpen()))}))}))}write(t){this.writable=!1;for(let e=0;e<t.length;e++){const n=t[e],i=e===t.length-1;this._writer.write(n).then((()=>{i&&Qe((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var t;null===(t=this._transport)||void 0===t||t.close()}},polling:class extends pn{constructor(t){super(t);const e=t&&t.forceBase64;this.supportsBinary=gn&&!e}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new fn(yn,this.uri(),t)}}},xn=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Sn=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function _n(t){if(t.length>8e3)throw"URI too long";const e=t,n=t.indexOf("["),i=t.indexOf("]");-1!=n&&-1!=i&&(t=t.substring(0,n)+t.substring(n,i).replace(/:/g,";")+t.substring(i,t.length));let r=xn.exec(t||""),s={},o=14;for(;o--;)s[Sn[o]]=r[o]||"";return-1!=n&&-1!=i&&(s.source=e,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(t,e){const n=e.replace(/\/{2,9}/g,"/").split("/");return"/"!=e.slice(0,1)&&0!==e.length||n.splice(0,1),"/"==e.slice(-1)&&n.splice(n.length-1,1),n}(0,s.path),s.queryKey=function(t,e){const n={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,i){e&&(n[e]=i)})),n}(0,s.query),s}const En="function"==typeof addEventListener&&"function"==typeof removeEventListener,kn=[];En&&addEventListener("offline",(()=>{kn.forEach((t=>t()))}),!1);class Pn extends Ke{constructor(t,e){if(super(),this.binaryType="arraybuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&"object"==typeof t&&(e=t,t=null),t){const n=_n(t);e.hostname=n.host,e.secure="https"===n.protocol||"wss"===n.protocol,e.port=n.port,n.query&&(e.query=n.query)}else e.host&&(e.hostname=_n(e.host).host);rn(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},e.transports.forEach((t=>{const e=t.prototype.name;this.transports.push(e),this._transportsByName[e]=t})),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},e),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(t){let e={},n=t.split("&");for(let t=0,i=n.length;t<i;t++){let i=n[t].split("=");e[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return e}(this.opts.query)),En&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},kn.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const e=Object.assign({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);const n=Object.assign({},this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](n)}_open(){if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);const t=this.opts.rememberUpgrade&&Pn.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";const e=this.createTransport(t);e.open(),this.setTransport(e)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",(t=>this._onClose("transport close",t)))}onOpen(){this.readyState="open",Pn.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const e=new Error("server error");e.code=t.data,this._onError(e);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data)}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn((()=>{this._onClose("ping timeout")}),t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let n=0;n<this.writeBuffer.length;n++){const i=this.writeBuffer[n].data;if(i&&(t+="string"==typeof(e=i)?function(t){let e=0,n=0;for(let i=0,r=t.length;i<r;i++)e=t.charCodeAt(i),e<128?n+=1:e<2048?n+=2:e<55296||e>=57344?n+=3:(i++,n+=4);return n}(e):Math.ceil(1.33*(e.byteLength||e.size))),n>0&&t>this._maxPayload)return this.writeBuffer.slice(0,n);t+=2}var e;return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,Qe((()=>{this._onClose("ping timeout")}),this.setTimeoutFn)),t}write(t,e,n){return this._sendPacket("message",t,e,n),this}send(t,e,n){return this._sendPacket("message",t,e,n),this}_sendPacket(t,e,n,i){if("function"==typeof e&&(i=e,e=void 0),"function"==typeof n&&(i=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const r={type:t,data:e,options:n};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),i&&this.once("flush",i),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},e=()=>{this.off("upgrade",e),this.off("upgradeError",e),t()},n=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():t()})):this.upgrading?n():t()),this}_onError(t){if(Pn.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),En&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const t=kn.indexOf(this._offlineEventListener);-1!==t&&kn.splice(t,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this._prevBufferLen=0}}}Pn.protocol=4;class Tn extends Pn{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade)for(let t=0;t<this._upgrades.length;t++)this._probe(this._upgrades[t])}_probe(t){let e=this.createTransport(t),n=!1;Pn.priorWebsocketSuccess=!1;const i=()=>{n||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(t=>{if(!n)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",e),!e)return;Pn.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(h(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emitReserved("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{const t=new Error("probe error");t.transport=e.name,this.emitReserved("upgradeError",t)}})))};function r(){n||(n=!0,h(),e.close(),e=null)}const s=t=>{const n=new Error("probe error: "+t);n.transport=e.name,r(),this.emitReserved("upgradeError",n)};function o(){s("transport closed")}function a(){s("socket closed")}function c(t){e&&t.name!==e.name&&r()}const h=()=>{e.removeListener("open",i),e.removeListener("error",s),e.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};e.once("open",i),e.once("error",s),e.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{n||e.open()}),200):e.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const e=[];for(let n=0;n<t.length;n++)~this.transports.indexOf(t[n])&&e.push(t[n]);return e}}class Mn extends Tn{constructor(t,e={}){const n="object"==typeof t?t:e;(!n.transports||n.transports&&"string"==typeof n.transports[0])&&(n.transports=(n.transports||["polling","websocket","webtransport"]).map((t=>wn[t])).filter((t=>!!t))),super(t,n)}}const Rn="function"==typeof ArrayBuffer,On=t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer,An=Object.prototype.toString,Cn="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===An.call(Blob),Ln="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===An.call(File);function Bn(t){return Rn&&(t instanceof ArrayBuffer||On(t))||Cn&&t instanceof Blob||Ln&&t instanceof File}function In(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(In(t[e]))return!0;return!1}if(Bn(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return In(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&In(t[e]))return!0;return!1}function jn(t){const e=[],n=t.data,i=t;return i.data=Nn(n,e),i.attachments=e.length,{packet:i,buffers:e}}function Nn(t,e){if(!t)return t;if(Bn(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}if(Array.isArray(t)){const n=new Array(t.length);for(let i=0;i<t.length;i++)n[i]=Nn(t[i],e);return n}if("object"==typeof t&&!(t instanceof Date)){const n={};for(const i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=Nn(t[i],e));return n}return t}function qn(t,e){return t.data=Fn(t.data,e),delete t.attachments,t}function Fn(t,e){if(!t)return t;if(t&&!0===t._placeholder){if("number"==typeof t.num&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=Fn(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=Fn(t[n],e));return t}const Dn=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],Un=5;var Vn;!function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(Vn||(Vn={}));class Yn{constructor(t){this.replacer=t}encode(t){return t.type!==Vn.EVENT&&t.type!==Vn.ACK||!In(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===Vn.EVENT?Vn.BINARY_EVENT:Vn.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==Vn.BINARY_EVENT&&t.type!==Vn.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=jn(t),n=this.encodeAsString(e.packet),i=e.buffers;return i.unshift(n),i}}function zn(t){return"[object Object]"===Object.prototype.toString.call(t)}class $n extends Ke{constructor(t){super(),this.reviver=t}add(t){let e;if("string"==typeof t){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");e=this.decodeString(t);const n=e.type===Vn.BINARY_EVENT;n||e.type===Vn.BINARY_ACK?(e.type=n?Vn.EVENT:Vn.ACK,this.reconstructor=new Wn(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!Bn(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emitReserved("decoded",e))}}decodeString(t){let e=0;const n={type:Number(t.charAt(0))};if(void 0===Vn[n.type])throw new Error("unknown packet type "+n.type);if(n.type===Vn.BINARY_EVENT||n.type===Vn.BINARY_ACK){const i=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const r=t.substring(i,e);if(r!=Number(r)||"-"!==t.charAt(e))throw new Error("Illegal attachments");n.attachments=Number(r)}if("/"===t.charAt(e+1)){const i=e+1;for(;++e&&","!==t.charAt(e)&&e!==t.length;);n.nsp=t.substring(i,e)}else n.nsp="/";const i=t.charAt(e+1);if(""!==i&&Number(i)==i){const i=e+1;for(;++e;){const n=t.charAt(e);if(null==n||Number(n)!=n){--e;break}if(e===t.length)break}n.id=Number(t.substring(i,e+1))}if(t.charAt(++e)){const i=this.tryParse(t.substr(e));if(!$n.isPayloadValid(n.type,i))throw new Error("invalid payload");n.data=i}return n}tryParse(t){try{return JSON.parse(t,this.reviver)}catch(t){return!1}}static isPayloadValid(t,e){switch(t){case Vn.CONNECT:return zn(e);case Vn.DISCONNECT:return void 0===e;case Vn.CONNECT_ERROR:return"string"==typeof e||zn(e);case Vn.EVENT:case Vn.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===Dn.indexOf(e[0]));case Vn.ACK:case Vn.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Wn{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=qn(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function Xn(t,e,n){return t.on(e,n),function(){t.off(e,n)}}const Gn=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Hn extends Ke{constructor(t,e,n){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=e,n&&n.auth&&(this.auth=n.auth),this._opts=Object.assign({},n),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[Xn(t,"open",this.onopen.bind(this)),Xn(t,"packet",this.onpacket.bind(this)),Xn(t,"error",this.onerror.bind(this)),Xn(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...e){var n,i,r;if(Gn.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(e.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(e),this;const s={type:Vn.EVENT,data:e,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof e[e.length-1]){const t=this.ids++,n=e.pop();this._registerAckCallback(t,n),s.id=t}const o=null===(i=null===(n=this.io.engine)||void 0===n?void 0:n.transport)||void 0===i?void 0:i.writable,a=this.connected&&!(null===(r=this.io.engine)||void 0===r?void 0:r._hasPingExpired());return this.flags.volatile&&!o||(a?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(t,e){var n;const i=null!==(n=this.flags.timeout)&&void 0!==n?n:this._opts.ackTimeout;if(void 0===i)return void(this.acks[t]=e);const r=this.io.setTimeoutFn((()=>{delete this.acks[t];for(let e=0;e<this.sendBuffer.length;e++)this.sendBuffer[e].id===t&&this.sendBuffer.splice(e,1);e.call(this,new Error("operation has timed out"))}),i),s=(...t)=>{this.io.clearTimeoutFn(r),e.apply(this,t)};s.withError=!0,this.acks[t]=s}emitWithAck(t,...e){return new Promise(((n,i)=>{const r=(t,e)=>t?i(t):n(e);r.withError=!0,e.push(r),this.emit(t,...e)}))}_addToQueue(t){let e;"function"==typeof t[t.length-1]&&(e=t.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push(((t,...i)=>{if(n===this._queue[0])return null!==t?n.tryCount>this._opts.retries&&(this._queue.shift(),e&&e(t)):(this._queue.shift(),e&&e(null,...i)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||0===this._queue.length)return;const e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((t=>{this._sendConnectPacket(t)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Vn.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((t=>{if(!this.sendBuffer.some((e=>String(e.id)===t))){const e=this.acks[t];delete this.acks[t],e.withError&&e.call(this,new Error("socket has been disconnected"))}}))}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case Vn.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Vn.EVENT:case Vn.BINARY_EVENT:this.onevent(t);break;case Vn.ACK:case Vn.BINARY_ACK:this.onack(t);break;case Vn.DISCONNECT:this.ondisconnect();break;case Vn.CONNECT_ERROR:this.destroy();const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const n of e)n.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}ack(t){const e=this;let n=!1;return function(...i){n||(n=!0,e.packet({type:Vn.ACK,id:t,data:i}))}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(delete this.acks[t.id],e.withError&&t.data.unshift(null),e.apply(this,t.data))}onconnect(t,e){this.id=t,this.recovered=e&&this._pid===e,this._pid=e,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>{this.notifyOutgoingListeners(t),this.packet(t)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Vn.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let n=0;n<e.length;n++)if(t===e[n])return e.splice(n,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const e=this._anyOutgoingListeners;for(let n=0;n<e.length;n++)if(t===e[n])return e.splice(n,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const e=this._anyOutgoingListeners.slice();for(const n of e)n.apply(this,t.data)}}}function Jn(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}Jn.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=1&Math.floor(10*e)?t+n:t-n}return 0|Math.min(t,this.max)},Jn.prototype.reset=function(){this.attempts=0},Jn.prototype.setMin=function(t){this.ms=t},Jn.prototype.setMax=function(t){this.max=t},Jn.prototype.setJitter=function(t){this.jitter=t};class Kn extends Ke{constructor(t,e){var n;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,rn(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(n=e.randomizationFactor)&&void 0!==n?n:.5),this.backoff=new Jn({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const i=e.parser||r;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new Mn(this.uri,this.opts);const e=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const i=Xn(e,"open",(function(){n.onopen(),t&&t()})),r=e=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",e),t?t(e):this.maybeReconnectOnOpen()},s=Xn(e,"error",r);if(!1!==this._timeout){const t=this._timeout,n=this.setTimeoutFn((()=>{i(),r(new Error("timeout")),e.close()}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(i),this.subs.push(s),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Xn(t,"ping",this.onping.bind(this)),Xn(t,"data",this.ondata.bind(this)),Xn(t,"error",this.onerror.bind(this)),Xn(t,"close",this.onclose.bind(this)),Xn(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}ondecoded(t){Qe((()=>{this.emitReserved("packet",t)}),this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,e){let n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new Hn(this,t,e),this.nsps[t]=n),n}_destroy(t){const e=Object.keys(this.nsps);for(const t of e)if(this.nsps[t].active)return;this._close()}_packet(t){const e=this.encoder.encode(t);for(let n=0;n<e.length;n++)this.engine.write(e[n],t.options)}cleanup(){this.subs.forEach((t=>t())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,e){var n;this.cleanup(),null===(n=this.engine)||void 0===n||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):t.onreconnect()})))}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const Qn={};function Zn(t,e){"object"==typeof t&&(e=t,t=void 0);const n=function(t,e="",n){let i=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),i=_n(t)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const r=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+r+":"+i.port+e,i.href=i.protocol+"://"+r+(n&&n.port===i.port?"":":"+i.port),i}(t,(e=e||{}).path||"/socket.io"),i=n.source,r=n.id,s=n.path,o=Qn[r]&&s in Qn[r].nsps;let a;return e.forceNew||e["force new connection"]||!1===e.multiplex||o?a=new Kn(i,e):(Qn[r]||(Qn[r]=new Kn(i,e)),a=Qn[r]),n.query&&!e.query&&(e.query=n.queryKey),a.socket(n.path,e)}Object.assign(Zn,{Manager:Kn,Socket:Hn,io:Zn,connect:Zn});class ti{socket;token;endpoint;socketList=new Map;constructor(t,e){this.endpoint=t.replace("https://","wss://").replace("http://","ws://"),this.token=e,this.socket=this.getSocket("default").socket,this.socket.connect()}close(){this.socket.emit("end"),this.socket.removeAllListeners(),this.socket.disconnect()}getSocket(t,e){return this.createManager(e)}createManager(t){const e=new Kn(this.endpoint,{reconnection:!0,reconnectionAttempts:1/0,reconnectionDelay:1e3,reconnectionDelayMax:5e3,randomizationFactor:.5,timeout:2e4,autoConnect:!0,transports:["websocket","polling"],rejectUnauthorized:!1,secure:!0,forceNew:t}),n=e.socket("/proxy",{auth:{token:`Bearer ${this.token}`}});return{manager:e,socket:n}}}class ei{api;socketService;config;logger;token;deviceManager;coreManager;constructor(t){this.config=t,this.logger=t.logger??{...console,attention:console.warn,success:console.log},this.api=new s(t.endpoint)}async connect(){return this.deviceManager&&this.coreManager||(this.cleanUpClient(),await this.login(),this.token=this.token??this.config.token,this.socketService=new ti(this.config.endpoint,this.token),this.coreManager=new Oe(this.socketService,this.logger),this.deviceManager=new Ae(this.socketService,this.logger),this.checkSession()),{coreManager:this.coreManager,deviceManager:this.deviceManager}}async disconnect(){this.socketService?.close(),this.cleanUpClient(),this.config.username&&this.config.password&&await this.api.post("/auth/logout",void 0,{headers:{Authorization:`Bearer ${this.token}`}})}async updateCredentials(t){this.config={...this.config,...t},this.socketService&&await this.disconnect(),await this.connect()}async login(){if(this.config.username&&this.config.password)try{const t=await this.api.post("/auth/login",{username:this.config.username,password:this.config.password}),e=await t.json();this.token=e.access_token}catch(t){throw 401===t.response?.status?new Error("Invalid credentials"):new Error(`Failed to get token: ${t.message}`)}else if(this.config.token&&!this.config.skipCheck)try{await this.api.get("/auth/check",{headers:{Authorization:`Bearer ${this.config.token}`}})}catch(t){throw new Error(`Invalid token: ${t.message}`)}this.token=this.token??this.config.token}getDeviceManager(){return this.deviceManager}checkSession(){this.socketService?.socket.removeListener("invalidToken"),this.socketService?.socket.on("invalidToken",(async t=>{t===this.token&&await this.disconnect()}))}cleanUpClient(){this.deviceManager=void 0}}var ni=i.j;export{ni as CameraUiClient};
|
|
2
|
+
var t={855:t=>{const e="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,n=()=>e.now(),r=t=>t===1/0||(t=>t&&t===Math.floor(t)&&t>0&&isFinite(t))(t);class i{constructor({max:t=1/0,ttl:e,updateAgeOnGet:n=!1,checkAgeOnGet:i=!1,noUpdateTTL:s=!1,dispose:o,noDisposeOnSet:a=!1}={}){if(this.expirations=Object.create(null),this.data=new Map,this.expirationMap=new Map,void 0!==e&&!r(e))throw new TypeError("ttl must be positive integer or Infinity if set");if(!r(t))throw new TypeError("max must be positive integer or Infinity");if(this.ttl=e,this.max=t,this.updateAgeOnGet=!!n,this.checkAgeOnGet=!!i,this.noUpdateTTL=!!s,this.noDisposeOnSet=!!a,void 0!==o){if("function"!=typeof o)throw new TypeError("dispose must be function if set");this.dispose=o}this.timer=void 0,this.timerExpiration=void 0}setTimer(t,e){if(this.timerExpiration<t)return;this.timer&&clearTimeout(this.timer);const r=setTimeout((()=>{this.timer=void 0,this.timerExpiration=void 0,this.purgeStale();for(const t in this.expirations){this.setTimer(t,t-n());break}}),e);r.unref&&r.unref(),this.timerExpiration=t,this.timer=r}cancelTimer(){this.timer&&(clearTimeout(this.timer),this.timerExpiration=void 0,this.timer=void 0)}cancelTimers(){return process.emitWarning('TTLCache.cancelTimers has been renamed to TTLCache.cancelTimer (no "s"), and will be removed in the next major version update'),this.cancelTimer()}clear(){const t=this.dispose!==i.prototype.dispose?[...this]:[];this.data.clear(),this.expirationMap.clear(),this.cancelTimer(),this.expirations=Object.create(null);for(const[e,n]of t)this.dispose(n,e,"delete")}setTTL(t,e=this.ttl){const r=this.expirationMap.get(t);if(void 0!==r){const e=this.expirations[r];!e||e.length<=1?delete this.expirations[r]:this.expirations[r]=e.filter((e=>e!==t))}if(e!==1/0){const r=Math.floor(n()+e);this.expirationMap.set(t,r),this.expirations[r]||(this.expirations[r]=[],this.setTimer(r,e)),this.expirations[r].push(t)}else this.expirationMap.set(t,1/0)}set(t,e,{ttl:n=this.ttl,noUpdateTTL:i=this.noUpdateTTL,noDisposeOnSet:s=this.noDisposeOnSet}={}){if(!r(n))throw new TypeError("ttl must be positive integer or Infinity");if(this.expirationMap.has(t)){i||this.setTTL(t,n);const r=this.data.get(t);r!==e&&(this.data.set(t,e),s||this.dispose(r,t,"set"))}else this.setTTL(t,n),this.data.set(t,e);for(;this.size>this.max;)this.purgeToCapacity();return this}has(t){return this.data.has(t)}getRemainingTTL(t){const e=this.expirationMap.get(t);return e===1/0?e:void 0!==e?Math.max(0,Math.ceil(e-n())):0}get(t,{updateAgeOnGet:e=this.updateAgeOnGet,ttl:n=this.ttl,checkAgeOnGet:r=this.checkAgeOnGet}={}){const i=this.data.get(t);if(!r||0!==this.getRemainingTTL(t))return e&&this.setTTL(t,n),i;this.delete(t)}dispose(t,e){}delete(t){const e=this.expirationMap.get(t);if(void 0!==e){const n=this.data.get(t);this.data.delete(t),this.expirationMap.delete(t);const r=this.expirations[e];return r&&(r.length<=1?delete this.expirations[e]:this.expirations[e]=r.filter((e=>e!==t))),this.dispose(n,t,"delete"),0===this.size&&this.cancelTimer(),!0}return!1}purgeToCapacity(){for(const t in this.expirations){const e=this.expirations[t];if(!(this.size-e.length>=this.max)){const t=this.size-this.max,n=[];for(const r of e.splice(0,t))n.push([r,this.data.get(r)]),this.data.delete(r),this.expirationMap.delete(r);for(const[t,e]of n)this.dispose(e,t,"evict");return}{delete this.expirations[t];const n=[];for(const t of e)n.push([t,this.data.get(t)]),this.data.delete(t),this.expirationMap.delete(t);for(const[t,e]of n)this.dispose(e,t,"evict")}}}get size(){return this.data.size}purgeStale(){const t=Math.ceil(n());for(const e in this.expirations){if("Infinity"===e||e>t)return;const n=[...this.expirations[e]||[]],r=[];delete this.expirations[e];for(const t of n)r.push([t,this.data.get(t)]),this.data.delete(t),this.expirationMap.delete(t);for(const[t,e]of r)this.dispose(e,t,"stale")}0===this.size&&this.cancelTimer()}*entries(){for(const t in this.expirations)for(const e of this.expirations[t])yield[e,this.data.get(e)]}*keys(){for(const t in this.expirations)for(const e of this.expirations[t])yield e}*values(){for(const t in this.expirations)for(const e of this.expirations[t])yield this.data.get(e)}[Symbol.iterator](){return this.entries()}}t.exports=i},73:function(t){t.exports=function(){function t(t,e){var n,r,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=e.call(t,o)}catch(t){s=[6,t],r=0}finally{n=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}}var e=function(t,e){this.next=null,this.key=t,this.data=e,this.left=null,this.right=null};function n(t,e){return t>e?1:t<e?-1:0}function r(t,n,r){for(var i=new e(null,null),s=i,o=i;;){var a=r(t,n.key);if(a<0){if(null===n.left)break;if(r(t,n.left.key)<0){var c=n.left;if(n.left=c.right,c.right=n,null===(n=c).left)break}o.left=n,o=n,n=n.left}else{if(!(a>0))break;if(null===n.right)break;if(r(t,n.right.key)>0&&(c=n.right,n.right=c.left,c.left=n,null===(n=c).right))break;s.right=n,s=n,n=n.right}}return s.right=n.left,o.left=n.right,n.left=i.right,n.right=i.left,n}function i(t,n,i,s){var o=new e(t,n);if(null===i)return o.left=o.right=null,o;var a=s(t,(i=r(t,i,s)).key);return a<0?(o.left=i.left,o.right=i,i.left=null):a>=0&&(o.right=i.right,o.left=i,i.right=null),o}function s(t,e,n){var i=null,s=null;if(e){var o=n((e=r(t,e,n)).key,t);0===o?(i=e.left,s=e.right):o<0?(s=e.right,e.right=null,i=e):(i=e.left,e.left=null,s=e)}return{left:i,right:s}}function o(t,e,n,r,i){if(t){r(e+(n?"└── ":"├── ")+i(t)+"\n");var s=e+(n?" ":"│ ");t.left&&o(t.left,s,!1,r,i),t.right&&o(t.right,s,!0,r,i)}}var a=function(){function a(t){void 0===t&&(t=n),this._root=null,this._size=0,this._comparator=t}return a.prototype.insert=function(t,e){return this._size++,this._root=i(t,e,this._root,this._comparator)},a.prototype.add=function(t,n){var i=new e(t,n);null===this._root&&(i.left=i.right=null,this._size++,this._root=i);var s=this._comparator,o=r(t,this._root,s),a=s(t,o.key);return 0===a?this._root=o:(a<0?(i.left=o.left,i.right=o,o.left=null):a>0&&(i.right=o.right,i.left=o,o.right=null),this._size++,this._root=i),this._root},a.prototype.remove=function(t){this._root=this._remove(t,this._root,this._comparator)},a.prototype._remove=function(t,e,n){var i;return null===e?null:0===n(t,(e=r(t,e,n)).key)?(null===e.left?i=e.right:(i=r(t,e.left,n)).right=e.right,this._size--,i):e},a.prototype.pop=function(){var t=this._root;if(t){for(;t.left;)t=t.left;return this._root=r(t.key,this._root,this._comparator),this._root=this._remove(t.key,this._root,this._comparator),{key:t.key,data:t.data}}return null},a.prototype.findStatic=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return e;e=r<0?e.left:e.right}return null},a.prototype.find=function(t){return this._root&&(this._root=r(t,this._root,this._comparator),0!==this._comparator(t,this._root.key))?null:this._root},a.prototype.contains=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return!0;e=r<0?e.left:e.right}return!1},a.prototype.forEach=function(t,e){for(var n=this._root,r=[],i=!1;!i;)null!==n?(r.push(n),n=n.left):0!==r.length?(n=r.pop(),t.call(e,n),n=n.right):i=!0;return this},a.prototype.range=function(t,e,n,r){for(var i=[],s=this._comparator,o=this._root;0!==i.length||o;)if(o)i.push(o),o=o.left;else{if(s((o=i.pop()).key,e)>0)break;if(s(o.key,t)>=0&&n.call(r,o))return this;o=o.right}return this},a.prototype.keys=function(){var t=[];return this.forEach((function(e){var n=e.key;return t.push(n)})),t},a.prototype.values=function(){var t=[];return this.forEach((function(e){var n=e.data;return t.push(n)})),t},a.prototype.min=function(){return this._root?this.minNode(this._root).key:null},a.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},a.prototype.minNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.left;)t=t.left;return t},a.prototype.maxNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.right;)t=t.right;return t},a.prototype.at=function(t){for(var e=this._root,n=!1,r=0,i=[];!n;)if(e)i.push(e),e=e.left;else if(i.length>0){if(e=i.pop(),r===t)return e;r++,e=e.right}else n=!0;return null},a.prototype.next=function(t){var e=this._root,n=null;if(t.right){for(n=t.right;n.left;)n=n.left;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?(n=e,e=e.left):e=e.right}return n},a.prototype.prev=function(t){var e=this._root,n=null;if(null!==t.left){for(n=t.left;n.right;)n=n.right;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?e=e.left:(n=e,e=e.right)}return n},a.prototype.clear=function(){return this._root=null,this._size=0,this},a.prototype.toList=function(){return function(t){for(var n=t,r=[],i=!1,s=new e(null,null),o=s;!i;)n?(r.push(n),n=n.left):r.length>0?n=(n=o=o.next=r.pop()).right:i=!0;return o.next=null,s.next}(this._root)},a.prototype.load=function(t,n,r){void 0===n&&(n=[]),void 0===r&&(r=!1);var i=t.length,s=this._comparator;if(r&&u(t,n,0,i-1,s),null===this._root)this._root=c(t,n,0,i),this._size=i;else{var o=function(t,n,r){for(var i=new e(null,null),s=i,o=t,a=n;null!==o&&null!==a;)r(o.key,a.key)<0?(s.next=o,o=o.next):(s.next=a,a=a.next),s=s.next;return null!==o?s.next=o:null!==a&&(s.next=a),i.next}(this.toList(),function(t,n){for(var r=new e(null,null),i=r,s=0;s<t.length;s++)i=i.next=new e(t[s],n[s]);return i.next=null,r.next}(t,n),s);i=this._size+i,this._root=h({head:o},0,i)}return this},a.prototype.isEmpty=function(){return null===this._root},Object.defineProperty(a.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"root",{get:function(){return this._root},enumerable:!0,configurable:!0}),a.prototype.toString=function(t){void 0===t&&(t=function(t){return String(t.key)});var e=[];return o(this._root,"",!0,(function(t){return e.push(t)}),t),e.join("")},a.prototype.update=function(t,e,n){var o=this._comparator,a=s(t,this._root,o),c=a.left,h=a.right;o(t,e)<0?h=i(e,n,h,o):c=i(e,n,c,o),this._root=function(t,e,n){return null===e?t:(null===t||((e=r(t.key,e,n)).left=t),e)}(c,h,o)},a.prototype.split=function(t){return s(t,this._root,this._comparator)},a.prototype[Symbol.iterator]=function(){var e,n,r;return t(this,(function(t){switch(t.label){case 0:e=this._root,n=[],r=!1,t.label=1;case 1:return r?[3,6]:null===e?[3,2]:(n.push(e),e=e.left,[3,5]);case 2:return 0===n.length?[3,4]:[4,e=n.pop()];case 3:return t.sent(),e=e.right,[3,5];case 4:r=!0,t.label=5;case 5:return[3,1];case 6:return[2]}}))},a}();function c(t,n,r,i){var s=i-r;if(s>0){var o=r+Math.floor(s/2),a=t[o],h=n[o],u=new e(a,h);return u.left=c(t,n,r,o),u.right=c(t,n,o+1,i),u}return null}function h(t,e,n){var r=n-e;if(r>0){var i=e+Math.floor(r/2),s=h(t,e,i),o=t.head;return o.left=s,t.head=t.head.next,o.right=h(t,i+1,n),o}return null}function u(t,e,n,r,i){if(!(n>=r)){for(var s=t[n+r>>1],o=n-1,a=r+1;;){do{o++}while(i(t[o],s)<0);do{a--}while(i(t[a],s)>0);if(o>=a)break;var c=t[o];t[o]=t[a],t[a]=c,c=e[o],e[o]=e[a],e[a]=c}u(t,e,n,a,i),u(t,e,a+1,r,i)}}const l=(t,e)=>t.ll.x<=e.x&&e.x<=t.ur.x&&t.ll.y<=e.y&&e.y<=t.ur.y,p=(t,e)=>{if(e.ur.x<t.ll.x||t.ur.x<e.ll.x||e.ur.y<t.ll.y||t.ur.y<e.ll.y)return null;const n=t.ll.x<e.ll.x?e.ll.x:t.ll.x,r=t.ur.x<e.ur.x?t.ur.x:e.ur.x;return{ll:{x:n,y:t.ll.y<e.ll.y?e.ll.y:t.ll.y},ur:{x:r,y:t.ur.y<e.ur.y?t.ur.y:e.ur.y}}};let f=Number.EPSILON;void 0===f&&(f=Math.pow(2,-52));const d=f*f,g=(t,e)=>{if(-f<t&&t<f&&-f<e&&e<f)return 0;const n=t-e;return n*n<d*t*e?0:t<e?-1:1};class y{constructor(){this.tree=new a,this.round(0)}round(t){const e=this.tree.add(t),n=this.tree.prev(e);if(null!==n&&0===g(e.key,n.key))return this.tree.remove(t),n.key;const r=this.tree.next(e);return null!==r&&0===g(e.key,r.key)?(this.tree.remove(t),r.key):t}}const m=new class{constructor(){this.reset()}reset(){this.xRounder=new y,this.yRounder=new y}round(t,e){return{x:this.xRounder.round(t),y:this.yRounder.round(e)}}},b=11102230246251565e-32,v=134217729,w=(3+8*b)*b;function x(t,e,n,r,i){let s,o,a,c,h=e[0],u=r[0],l=0,p=0;u>h==u>-h?(s=h,h=e[++l]):(s=u,u=r[++p]);let f=0;if(l<t&&p<n)for(u>h==u>-h?(o=h+s,a=s-(o-h),h=e[++l]):(o=u+s,a=s-(o-u),u=r[++p]),s=o,0!==a&&(i[f++]=a);l<t&&p<n;)u>h==u>-h?(o=s+h,c=o-s,a=s-(o-c)+(h-c),h=e[++l]):(o=s+u,c=o-s,a=s-(o-c)+(u-c),u=r[++p]),s=o,0!==a&&(i[f++]=a);for(;l<t;)o=s+h,c=o-s,a=s-(o-c)+(h-c),h=e[++l],s=o,0!==a&&(i[f++]=a);for(;p<n;)o=s+u,c=o-s,a=s-(o-c)+(u-c),u=r[++p],s=o,0!==a&&(i[f++]=a);return 0===s&&0!==f||(i[f++]=s),f}function S(t){return new Float64Array(t)}const _=22204460492503146e-32,E=11093356479670487e-47,k=S(4),P=S(8),T=S(12),M=S(16),R=S(4);function O(t,e,n,r,i,s){const o=(e-s)*(n-i),a=(t-i)*(r-s),c=o-a,h=Math.abs(o+a);return Math.abs(c)>=33306690738754716e-32*h?c:-function(t,e,n,r,i,s,o){let a,c,h,u,l,p,f,d,g,y,m,b,S,O,A,C,L,B;const I=t-i,j=n-i,N=e-s,q=r-s;O=I*q,p=v*I,f=p-(p-I),d=I-f,p=v*q,g=p-(p-q),y=q-g,A=d*y-(O-f*g-d*g-f*y),C=N*j,p=v*N,f=p-(p-N),d=N-f,p=v*j,g=p-(p-j),y=j-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,k[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,k[1]=S-(m+l)+(l-C),B=b+m,l=B-b,k[2]=b-(B-l)+(m-l),k[3]=B;let F=function(t,e){let n=e[0];for(let r=1;r<t;r++)n+=e[r];return n}(4,k),D=_*o;if(F>=D||-F>=D)return F;if(l=t-I,a=t-(I+l)+(l-i),l=n-j,h=n-(j+l)+(l-i),l=e-N,c=e-(N+l)+(l-s),l=r-q,u=r-(q+l)+(l-s),0===a&&0===c&&0===h&&0===u)return F;if(D=E*o+w*Math.abs(F),F+=I*u+q*a-(N*h+j*c),F>=D||-F>=D)return F;O=a*q,p=v*a,f=p-(p-a),d=a-f,p=v*q,g=p-(p-q),y=q-g,A=d*y-(O-f*g-d*g-f*y),C=c*j,p=v*c,f=p-(p-c),d=c-f,p=v*j,g=p-(p-j),y=j-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,R[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,R[1]=S-(m+l)+(l-C),B=b+m,l=B-b,R[2]=b-(B-l)+(m-l),R[3]=B;const U=x(4,k,4,R,P);O=I*u,p=v*I,f=p-(p-I),d=I-f,p=v*u,g=p-(p-u),y=u-g,A=d*y-(O-f*g-d*g-f*y),C=N*h,p=v*N,f=p-(p-N),d=N-f,p=v*h,g=p-(p-h),y=h-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,R[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,R[1]=S-(m+l)+(l-C),B=b+m,l=B-b,R[2]=b-(B-l)+(m-l),R[3]=B;const V=x(U,P,4,R,T);O=a*u,p=v*a,f=p-(p-a),d=a-f,p=v*u,g=p-(p-u),y=u-g,A=d*y-(O-f*g-d*g-f*y),C=c*h,p=v*c,f=p-(p-c),d=c-f,p=v*h,g=p-(p-h),y=h-g,L=d*y-(C-f*g-d*g-f*y),m=A-L,l=A-m,R[0]=A-(m+l)+(l-L),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,R[1]=S-(m+l)+(l-C),B=b+m,l=B-b,R[2]=b-(B-l)+(m-l),R[3]=B;const Y=x(V,T,4,R,M);return M[Y-1]}(t,e,n,r,i,s,h)}const A=(t,e)=>t.x*e.y-t.y*e.x,C=(t,e)=>t.x*e.x+t.y*e.y,L=(t,e,n)=>{const r=O(t.x,t.y,e.x,e.y,n.x,n.y);return r>0?-1:r<0?1:0},B=t=>Math.sqrt(C(t,t)),I=(t,e,n)=>{const r={x:e.x-t.x,y:e.y-t.y},i={x:n.x-t.x,y:n.y-t.y};return A(i,r)/B(i)/B(r)},j=(t,e,n)=>{const r={x:e.x-t.x,y:e.y-t.y},i={x:n.x-t.x,y:n.y-t.y};return C(i,r)/B(i)/B(r)},N=(t,e,n)=>0===e.y?null:{x:t.x+e.x/e.y*(n-t.y),y:n},q=(t,e,n)=>0===e.x?null:{x:n,y:t.y+e.y/e.x*(n-t.x)};class F{static compare(t,e){const n=F.comparePoints(t.point,e.point);return 0!==n?n:(t.point!==e.point&&t.link(e),t.isLeft!==e.isLeft?t.isLeft?1:-1:U.compare(t.segment,e.segment))}static comparePoints(t,e){return t.x<e.x?-1:t.x>e.x?1:t.y<e.y?-1:t.y>e.y?1:0}constructor(t,e){void 0===t.events?t.events=[this]:t.events.push(this),this.point=t,this.isLeft=e}link(t){if(t.point===this.point)throw new Error("Tried to link already linked events");const e=t.point.events;for(let t=0,n=e.length;t<n;t++){const n=e[t];this.point.events.push(n),n.point=this.point}this.checkForConsuming()}checkForConsuming(){const t=this.point.events.length;for(let e=0;e<t;e++){const n=this.point.events[e];if(void 0===n.segment.consumedBy)for(let r=e+1;r<t;r++){const t=this.point.events[r];void 0===t.consumedBy&&n.otherSE.point.events===t.otherSE.point.events&&n.segment.consume(t.segment)}}}getAvailableLinkedEvents(){const t=[];for(let e=0,n=this.point.events.length;e<n;e++){const n=this.point.events[e];n!==this&&!n.segment.ringOut&&n.segment.isInResult()&&t.push(n)}return t}getLeftmostComparator(t){const e=new Map,n=n=>{const r=n.otherSE;e.set(n,{sine:I(this.point,t.point,r.point),cosine:j(this.point,t.point,r.point)})};return(t,r)=>{e.has(t)||n(t),e.has(r)||n(r);const{sine:i,cosine:s}=e.get(t),{sine:o,cosine:a}=e.get(r);return i>=0&&o>=0?s<a?1:s>a?-1:0:i<0&&o<0?s<a?-1:s>a?1:0:o<i?-1:o>i?1:0}}}let D=0;class U{static compare(t,e){const n=t.leftSE.point.x,r=e.leftSE.point.x,i=t.rightSE.point.x,s=e.rightSE.point.x;if(s<n)return 1;if(i<r)return-1;const o=t.leftSE.point.y,a=e.leftSE.point.y,c=t.rightSE.point.y,h=e.rightSE.point.y;if(n<r){if(a<o&&a<c)return 1;if(a>o&&a>c)return-1;const n=t.comparePoint(e.leftSE.point);if(n<0)return 1;if(n>0)return-1;const r=e.comparePoint(t.rightSE.point);return 0!==r?r:-1}if(n>r){if(o<a&&o<h)return-1;if(o>a&&o>h)return 1;const n=e.comparePoint(t.leftSE.point);if(0!==n)return n;const r=t.comparePoint(e.rightSE.point);return r<0?1:r>0?-1:1}if(o<a)return-1;if(o>a)return 1;if(i<s){const n=e.comparePoint(t.rightSE.point);if(0!==n)return n}if(i>s){const n=t.comparePoint(e.rightSE.point);if(n<0)return 1;if(n>0)return-1}if(i!==s){const t=c-o,e=i-n,u=h-a,l=s-r;if(t>e&&u<l)return 1;if(t<e&&u>l)return-1}return i>s?1:i<s||c<h?-1:c>h?1:t.id<e.id?-1:t.id>e.id?1:0}constructor(t,e,n,r){this.id=++D,this.leftSE=t,t.segment=this,t.otherSE=e,this.rightSE=e,e.segment=this,e.otherSE=t,this.rings=n,this.windings=r}static fromRing(t,e,n){let r,i,s;const o=F.comparePoints(t,e);if(o<0)r=t,i=e,s=1;else{if(!(o>0))throw new Error(`Tried to create degenerate segment at [${t.x}, ${t.y}]`);r=e,i=t,s=-1}const a=new F(r,!0),c=new F(i,!1);return new U(a,c,[n],[s])}replaceRightSE(t){this.rightSE=t,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const t=this.leftSE.point.y,e=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:t<e?t:e},ur:{x:this.rightSE.point.x,y:t>e?t:e}}}vector(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}isAnEndpoint(t){return t.x===this.leftSE.point.x&&t.y===this.leftSE.point.y||t.x===this.rightSE.point.x&&t.y===this.rightSE.point.y}comparePoint(t){if(this.isAnEndpoint(t))return 0;const e=this.leftSE.point,n=this.rightSE.point,r=this.vector();if(e.x===n.x)return t.x===e.x?0:t.x<e.x?1:-1;const i=(t.y-e.y)/r.y,s=e.x+i*r.x;if(t.x===s)return 0;const o=(t.x-e.x)/r.x,a=e.y+o*r.y;return t.y===a?0:t.y<a?-1:1}getIntersection(t){const e=this.bbox(),n=t.bbox(),r=p(e,n);if(null===r)return null;const i=this.leftSE.point,s=this.rightSE.point,o=t.leftSE.point,a=t.rightSE.point,c=l(e,o)&&0===this.comparePoint(o),h=l(n,i)&&0===t.comparePoint(i),u=l(e,a)&&0===this.comparePoint(a),f=l(n,s)&&0===t.comparePoint(s);if(h&&c)return f&&!u?s:!f&&u?a:null;if(h)return u&&i.x===a.x&&i.y===a.y?null:i;if(c)return f&&s.x===o.x&&s.y===o.y?null:o;if(f&&u)return null;if(f)return s;if(u)return a;const d=((t,e,n,r)=>{if(0===e.x)return q(n,r,t.x);if(0===r.x)return q(t,e,n.x);if(0===e.y)return N(n,r,t.y);if(0===r.y)return N(t,e,n.y);const i=A(e,r);if(0==i)return null;const s={x:n.x-t.x,y:n.y-t.y},o=A(s,e)/i,a=A(s,r)/i;return{x:(t.x+a*e.x+(n.x+o*r.x))/2,y:(t.y+a*e.y+(n.y+o*r.y))/2}})(i,this.vector(),o,t.vector());return null===d?null:l(r,d)?m.round(d.x,d.y):null}split(t){const e=[],n=void 0!==t.events,r=new F(t,!0),i=new F(t,!1),s=this.rightSE;this.replaceRightSE(i),e.push(i),e.push(r);const o=new U(r,s,this.rings.slice(),this.windings.slice());return F.comparePoints(o.leftSE.point,o.rightSE.point)>0&&o.swapEvents(),F.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),n&&(r.checkForConsuming(),i.checkForConsuming()),e}swapEvents(){const t=this.rightSE;this.rightSE=this.leftSE,this.leftSE=t,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let t=0,e=this.windings.length;t<e;t++)this.windings[t]*=-1}consume(t){let e=this,n=t;for(;e.consumedBy;)e=e.consumedBy;for(;n.consumedBy;)n=n.consumedBy;const r=U.compare(e,n);if(0!==r){if(r>0){const t=e;e=n,n=t}if(e.prev===n){const t=e;e=n,n=t}for(let t=0,r=n.rings.length;t<r;t++){const r=n.rings[t],i=n.windings[t],s=e.rings.indexOf(r);-1===s?(e.rings.push(r),e.windings.push(i)):e.windings[s]+=i}n.rings=null,n.windings=null,n.consumedBy=e,n.leftSE.consumedBy=e.leftSE,n.rightSE.consumedBy=e.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}beforeState(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){const t=this.prev.consumedBy||this.prev;this._beforeState=t.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const t=this.beforeState();this._afterState={rings:t.rings.slice(0),windings:t.windings.slice(0),multiPolys:[]};const e=this._afterState.rings,n=this._afterState.windings,r=this._afterState.multiPolys;for(let t=0,r=this.rings.length;t<r;t++){const r=this.rings[t],i=this.windings[t],s=e.indexOf(r);-1===s?(e.push(r),n.push(i)):n[s]+=i}const i=[],s=[];for(let t=0,r=e.length;t<r;t++){if(0===n[t])continue;const r=e[t],o=r.poly;if(-1===s.indexOf(o))if(r.isExterior)i.push(o);else{-1===s.indexOf(o)&&s.push(o);const t=i.indexOf(r.poly);-1!==t&&i.splice(t,1)}}for(let t=0,e=i.length;t<e;t++){const e=i[t].multiPoly;-1===r.indexOf(e)&&r.push(e)}return this._afterState}isInResult(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;const t=this.beforeState().multiPolys,e=this.afterState().multiPolys;switch(K.type){case"union":{const n=0===t.length,r=0===e.length;this._isInResult=n!==r;break}case"intersection":{let n,r;t.length<e.length?(n=t.length,r=e.length):(n=e.length,r=t.length),this._isInResult=r===K.numMultiPolys&&n<r;break}case"xor":{const n=Math.abs(t.length-e.length);this._isInResult=n%2==1;break}case"difference":{const n=t=>1===t.length&&t[0].isSubject;this._isInResult=n(t)!==n(e);break}default:throw new Error(`Unrecognized operation type found ${K.type}`)}return this._isInResult}}class V{constructor(t,e,n){if(!Array.isArray(t)||0===t.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=e,this.isExterior=n,this.segments=[],"number"!=typeof t[0][0]||"number"!=typeof t[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const r=m.round(t[0][0],t[0][1]);this.bbox={ll:{x:r.x,y:r.y},ur:{x:r.x,y:r.y}};let i=r;for(let e=1,n=t.length;e<n;e++){if("number"!=typeof t[e][0]||"number"!=typeof t[e][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");let n=m.round(t[e][0],t[e][1]);n.x===i.x&&n.y===i.y||(this.segments.push(U.fromRing(i,n,this)),n.x<this.bbox.ll.x&&(this.bbox.ll.x=n.x),n.y<this.bbox.ll.y&&(this.bbox.ll.y=n.y),n.x>this.bbox.ur.x&&(this.bbox.ur.x=n.x),n.y>this.bbox.ur.y&&(this.bbox.ur.y=n.y),i=n)}r.x===i.x&&r.y===i.y||this.segments.push(U.fromRing(i,r,this))}getSweepEvents(){const t=[];for(let e=0,n=this.segments.length;e<n;e++){const n=this.segments[e];t.push(n.leftSE),t.push(n.rightSE)}return t}}class Y{constructor(t,e){if(!Array.isArray(t))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new V(t[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(let e=1,n=t.length;e<n;e++){const n=new V(t[e],this,!1);n.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=n.bbox.ur.y),this.interiorRings.push(n)}this.multiPoly=e}getSweepEvents(){const t=this.exteriorRing.getSweepEvents();for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getSweepEvents();for(let e=0,r=n.length;e<r;e++)t.push(n[e])}return t}}class z{constructor(t,e){if(!Array.isArray(t))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof t[0][0][0]&&(t=[t])}catch(t){}this.polys=[],this.bbox={ll:{x:Number.POSITIVE_INFINITY,y:Number.POSITIVE_INFINITY},ur:{x:Number.NEGATIVE_INFINITY,y:Number.NEGATIVE_INFINITY}};for(let e=0,n=t.length;e<n;e++){const n=new Y(t[e],this);n.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=n.bbox.ur.y),this.polys.push(n)}this.isSubject=e}getSweepEvents(){const t=[];for(let e=0,n=this.polys.length;e<n;e++){const n=this.polys[e].getSweepEvents();for(let e=0,r=n.length;e<r;e++)t.push(n[e])}return t}}class ${static factory(t){const e=[];for(let n=0,r=t.length;n<r;n++){const r=t[n];if(!r.isInResult()||r.ringOut)continue;let i=null,s=r.leftSE,o=r.rightSE;const a=[s],c=s.point,h=[];for(;i=s,s=o,a.push(s),s.point!==c;)for(;;){const t=s.getAvailableLinkedEvents();if(0===t.length){const t=a[0].point,e=a[a.length-1].point;throw new Error(`Unable to complete output ring starting at [${t.x}, ${t.y}]. Last matching segment found ends at [${e.x}, ${e.y}].`)}if(1===t.length){o=t[0].otherSE;break}let n=null;for(let t=0,e=h.length;t<e;t++)if(h[t].point===s.point){n=t;break}if(null!==n){const t=h.splice(n)[0],r=a.splice(t.index);r.unshift(r[0].otherSE),e.push(new $(r.reverse()));continue}h.push({index:a.length,point:s.point});const r=s.getLeftmostComparator(i);o=t.sort(r)[0].otherSE;break}e.push(new $(a))}return e}constructor(t){this.events=t;for(let e=0,n=t.length;e<n;e++)t[e].segment.ringOut=this;this.poly=null}getGeom(){let t=this.events[0].point;const e=[t];for(let n=1,r=this.events.length-1;n<r;n++){const r=this.events[n].point,i=this.events[n+1].point;0!==L(r,t,i)&&(e.push(r),t=r)}if(1===e.length)return null;const n=e[0],r=e[1];0===L(n,t,r)&&e.shift(),e.push(e[0]);const i=this.isExteriorRing()?1:-1,s=this.isExteriorRing()?0:e.length-1,o=this.isExteriorRing()?e.length:-1,a=[];for(let t=s;t!=o;t+=i)a.push([e[t].x,e[t].y]);return a}isExteriorRing(){if(void 0===this._isExteriorRing){const t=this.enclosingRing();this._isExteriorRing=!t||!t.isExteriorRing()}return this._isExteriorRing}enclosingRing(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}_calcEnclosingRing(){let t=this.events[0];for(let e=1,n=this.events.length;e<n;e++){const n=this.events[e];F.compare(t,n)>0&&(t=n)}let e=t.segment.prevInResult(),n=e?e.prevInResult():null;for(;;){if(!e)return null;if(!n)return e.ringOut;if(n.ringOut!==e.ringOut)return n.ringOut.enclosingRing()!==e.ringOut?e.ringOut:e.ringOut.enclosingRing();e=n.prevInResult(),n=e?e.prevInResult():null}}}class W{constructor(t){this.exteriorRing=t,t.poly=this,this.interiorRings=[]}addInterior(t){this.interiorRings.push(t),t.poly=this}getGeom(){const t=[this.exteriorRing.getGeom()];if(null===t[0])return null;for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getGeom();null!==n&&t.push(n)}return t}}class X{constructor(t){this.rings=t,this.polys=this._composePolys(t)}getGeom(){const t=[];for(let e=0,n=this.polys.length;e<n;e++){const n=this.polys[e].getGeom();null!==n&&t.push(n)}return t}_composePolys(t){const e=[];for(let n=0,r=t.length;n<r;n++){const r=t[n];if(!r.poly)if(r.isExteriorRing())e.push(new W(r));else{const t=r.enclosingRing();t.poly||e.push(new W(t)),t.poly.addInterior(r)}}return e}}class G{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:U.compare;this.queue=t,this.tree=new a(e),this.segments=[]}process(t){const e=t.segment,n=[];if(t.consumedBy)return t.isLeft?this.queue.remove(t.otherSE):this.tree.remove(e),n;const r=t.isLeft?this.tree.add(e):this.tree.find(e);if(!r)throw new Error(`Unable to find segment #${e.id} [${e.leftSE.point.x}, ${e.leftSE.point.y}] -> [${e.rightSE.point.x}, ${e.rightSE.point.y}] in SweepLine tree.`);let i,s,o=r,a=r;for(;void 0===i;)o=this.tree.prev(o),null===o?i=null:void 0===o.key.consumedBy&&(i=o.key);for(;void 0===s;)a=this.tree.next(a),null===a?s=null:void 0===a.key.consumedBy&&(s=a.key);if(t.isLeft){let r=null;if(i){const t=i.getIntersection(e);if(null!==t&&(e.isAnEndpoint(t)||(r=t),!i.isAnEndpoint(t))){const e=this._splitSafely(i,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}}let o=null;if(s){const t=s.getIntersection(e);if(null!==t&&(e.isAnEndpoint(t)||(o=t),!s.isAnEndpoint(t))){const e=this._splitSafely(s,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}}if(null!==r||null!==o){let t=null;t=null===r?o:null===o||F.comparePoints(r,o)<=0?r:o,this.queue.remove(e.rightSE),n.push(e.rightSE);const i=e.split(t);for(let t=0,e=i.length;t<e;t++)n.push(i[t])}n.length>0?(this.tree.remove(e),n.push(t)):(this.segments.push(e),e.prev=i)}else{if(i&&s){const t=i.getIntersection(s);if(null!==t){if(!i.isAnEndpoint(t)){const e=this._splitSafely(i,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}if(!s.isAnEndpoint(t)){const e=this._splitSafely(s,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}}}this.tree.remove(e)}return n}_splitSafely(t,e){this.tree.remove(t);const n=t.rightSE;this.queue.remove(n);const r=t.split(e);return r.push(n),void 0===t.consumedBy&&this.tree.add(t),r}}const H="undefined"!=typeof process&&process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE||1e6,J="undefined"!=typeof process&&process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS||1e6;const K=new class{run(t,e,n){K.type=t,m.reset();const r=[new z(e,!0)];for(let t=0,e=n.length;t<e;t++)r.push(new z(n[t],!1));if(K.numMultiPolys=r.length,"difference"===K.type){const t=r[0];let e=1;for(;e<r.length;)null!==p(r[e].bbox,t.bbox)?e++:r.splice(e,1)}if("intersection"===K.type)for(let t=0,e=r.length;t<e;t++){const e=r[t];for(let n=t+1,i=r.length;n<i;n++)if(null===p(e.bbox,r[n].bbox))return[]}const i=new a(F.compare);for(let t=0,e=r.length;t<e;t++){const e=r[t].getSweepEvents();for(let t=0,n=e.length;t<n;t++)if(i.insert(e[t]),i.size>H)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big).")}const s=new G(i);let o=i.size,c=i.pop();for(;c;){const t=c.key;if(i.size===o){const e=t.segment;throw new Error(`Unable to pop() ${t.isLeft?"left":"right"} SweepEvent [${t.point.x}, ${t.point.y}] from segment #${e.id} [${e.leftSE.point.x}, ${e.leftSE.point.y}] -> [${e.rightSE.point.x}, ${e.rightSE.point.y}] from queue.`)}if(i.size>H)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big).");if(s.segments.length>J)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments).");const e=s.process(t);for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0===n.consumedBy&&i.insert(n)}o=i.size,c=i.pop()}m.reset();const h=$.factory(s.segments);return new X(h).getGeom()}};var Q={union:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("union",t,n)},intersection:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("intersection",t,n)},xor:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("xor",t,n)},difference:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("difference",t,n)}};return Q}()}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var s=e[r]={exports:{}};return t[r].call(s.exports,s,s.exports,n),s.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={};n.d(r,{j:()=>er});var i={};n.r(i),n.d(i,{Decoder:()=>$n,Encoder:()=>Yn,PacketType:()=>Vn,protocol:()=>Un});class s{baseURL;abortControllers=new Set;constructor(t){this.baseURL=`${t}/api`}async request(t,e,n,r={}){const i=new AbortController;this.abortControllers.add(i);const s=setTimeout((()=>{i.abort(),this.abortControllers.delete(i)}),15e3);try{const s=await fetch(`${this.baseURL}${e}`,{method:t,headers:{"Content-Type":"application/json",...r.headers},body:n?JSON.stringify(n):void 0,signal:i.signal,...r});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s}finally{clearTimeout(s),this.abortControllers.delete(i)}}get(t,e){return this.request("GET",t,void 0,e)}post(t,e,n){return this.request("POST",t,e,n)}}process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE;class o{subscriptions=[];additionalSubscriptions=[];addSubscriptions(...t){this.subscriptions.push(...t)}addAdditionalSubscriptions(...t){this.additionalSubscriptions.push(...t)}unsubscribe(){this.subscriptions.forEach((t=>t.unsubscribe()))}unsubscribeAdditional(){this.additionalSubscriptions.forEach((t=>t.unsubscribe()))}}function a(t,e,n=!1){if(t===e)return!0;if((void 0===t||void 0===e||null===t||null===e)&&(t||e))return!1;const r=t?.constructor.name,i=e?.constructor.name;if(r!==i)return!1;if("Array"===r&&"Array"===i){if(t.length!==e.length)return!1;if(n){const r=[...e];return t.every((t=>{const e=r.findIndex((e=>a(t,e,n)));return-1!==e&&(r.splice(e,1),!0)}))}{let r=!0;for(let i=0;i<t.length;i++)if(!a(t[i],e[i],n)){r=!1;break}return r}}if("Object"===r&&"Object"===i){let r=!0;const i=Object.keys(t),s=Object.keys(e);if(i.length!==s.length)return!1;for(let s=0;s<i.length;s++)if(t[i[s]]&&e[i[s]]){if(t[i[s]]===e[i[s]])continue;if(!t[i[s]]||"Array"!==t[i[s]].constructor.name&&"Object"!==t[i[s]].constructor.name){if(t[i[s]]!==e[i[s]]){r=!1;break}}else if(r=a(t[i[s]],e[i[s]],n),!r)break}else if(t[i[s]]&&!e[i[s]]||!t[i[s]]&&e[i[s]]){r=!1;break}return r}return t===e}function c(t){return JSON.parse(JSON.stringify(t))}var h=n(855),u=n.n(h),l=function(t,e){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},l(t,e)};function p(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}l(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function f(t,e){var n,r,i,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){s.label=a[1];break}if(6===a[0]&&s.label<i[1]){s.label=i[1],i=a;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(a);break}i[2]&&s.ops.pop(),s.trys.pop();continue}a=e.call(t,s)}catch(t){a=[6,t],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function d(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,s=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=s.next()).done;)o.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=s.return)&&n.call(s)}finally{if(i)throw i.error}}return o}function y(t,e,n){if(n||2===arguments.length)for(var r,i=0,s=e.length;i<s;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function b(t){return"function"==typeof t}function v(t){var e=t((function(t){Error.call(t),t.stack=(new Error).stack}));return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var w=v((function(t){return function(e){t(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(t,e){return e+1+") "+t.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e}}));function x(t,e){if(t){var n=t.indexOf(e);0<=n&&t.splice(n,1)}}var S=function(){function t(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return t.prototype.unsubscribe=function(){var t,e,n,r,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var o=d(s),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}else s.remove(this);var c=this.initialTeardown;if(b(c))try{c()}catch(t){i=t instanceof w?t.errors:[t]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var u=d(h),l=u.next();!l.done;l=u.next()){var p=l.value;try{k(p)}catch(t){i=null!=i?i:[],t instanceof w?i=y(y([],g(i)),g(t.errors)):i.push(t)}}}catch(t){n={error:t}}finally{try{l&&!l.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new w(i)}},t.prototype.add=function(e){var n;if(e&&e!==this)if(this.closed)k(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(e)}},t.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},t.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},t.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&x(e,t)},t.prototype.remove=function(e){var n=this._finalizers;n&&x(n,e),e instanceof t&&e._removeParent(this)},t.EMPTY=function(){var e=new t;return e.closed=!0,e}(),t}(),_=S.EMPTY;function E(t){return t instanceof S||t&&"closed"in t&&b(t.remove)&&b(t.add)&&b(t.unsubscribe)}function k(t){b(t)?t():t.unsubscribe()}var P={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},T={setTimeout:function(t,e){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i=T.delegate;return(null==i?void 0:i.setTimeout)?i.setTimeout.apply(i,y([t,e],g(n))):setTimeout.apply(void 0,y([t,e],g(n)))},clearTimeout:function(t){var e=T.delegate;return((null==e?void 0:e.clearTimeout)||clearTimeout)(t)},delegate:void 0};function M(t){T.setTimeout((function(){var e=P.onUnhandledError;if(!e)throw t;e(t)}))}function R(){}var O=A("C",void 0,void 0);function A(t,e,n){return{kind:t,value:e,error:n}}var C=null;function L(t){if(P.useDeprecatedSynchronousErrorHandling){var e=!C;if(e&&(C={errorThrown:!1,error:null}),t(),e){var n=C,r=n.errorThrown,i=n.error;if(C=null,r)throw i}}else t()}var B=function(t){function e(e){var n=t.call(this)||this;return n.isStopped=!1,e?(n.destination=e,E(e)&&e.add(n)):n.destination=U,n}return p(e,t),e.create=function(t,e,n){return new q(t,e,n)},e.prototype.next=function(t){this.isStopped?D(function(t){return A("N",t,void 0)}(t),this):this._next(t)},e.prototype.error=function(t){this.isStopped?D(A("E",void 0,t),this):(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped?D(O,this):(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e}(S),I=Function.prototype.bind;function j(t,e){return I.call(t,e)}var N=function(){function t(t){this.partialObserver=t}return t.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(t){F(t)}},t.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(t){F(t)}else F(t)},t.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(t){F(t)}},t}(),q=function(t){function e(e,n,r){var i,s,o=t.call(this)||this;return b(e)||!e?i={next:null!=e?e:void 0,error:null!=n?n:void 0,complete:null!=r?r:void 0}:o&&P.useDeprecatedNextContext?((s=Object.create(e)).unsubscribe=function(){return o.unsubscribe()},i={next:e.next&&j(e.next,s),error:e.error&&j(e.error,s),complete:e.complete&&j(e.complete,s)}):i=e,o.destination=new N(i),o}return p(e,t),e}(B);function F(t){var e;P.useDeprecatedSynchronousErrorHandling?(e=t,P.useDeprecatedSynchronousErrorHandling&&C&&(C.errorThrown=!0,C.error=e)):M(t)}function D(t,e){var n=P.onStoppedNotification;n&&T.setTimeout((function(){return n(t,e)}))}var U={closed:!0,next:R,error:function(t){throw t},complete:R},V="function"==typeof Symbol&&Symbol.observable||"@@observable";function Y(t){return t}var z=function(){function t(t){t&&(this._subscribe=t)}return t.prototype.lift=function(e){var n=new t;return n.source=this,n.operator=e,n},t.prototype.subscribe=function(t,e,n){var r=this,i=function(t){return t&&t instanceof B||function(t){return t&&b(t.next)&&b(t.error)&&b(t.complete)}(t)&&E(t)}(t)?t:new q(t,e,n);return L((function(){var t=r,e=t.operator,n=t.source;i.add(e?e.call(i,n):n?r._subscribe(i):r._trySubscribe(i))})),i},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},t.prototype.forEach=function(t,e){var n=this;return new(e=$(e))((function(e,r){var i=new q({next:function(e){try{t(e)}catch(t){r(t),i.unsubscribe()}},error:r,complete:e});n.subscribe(i)}))},t.prototype._subscribe=function(t){var e;return null===(e=this.source)||void 0===e?void 0:e.subscribe(t)},t.prototype[V]=function(){return this},t.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return(0===(n=t).length?Y:1===n.length?n[0]:function(t){return n.reduce((function(t,e){return e(t)}),t)})(this);var n},t.prototype.toPromise=function(t){var e=this;return new(t=$(t))((function(t,n){var r;e.subscribe((function(t){return r=t}),(function(t){return n(t)}),(function(){return t(r)}))}))},t.create=function(e){return new t(e)},t}();function $(t){var e;return null!==(e=null!=t?t:P.Promise)&&void 0!==e?e:Promise}var W=v((function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),X=function(t){function e(){var e=t.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return p(e,t),e.prototype.lift=function(t){var e=new G(this,this);return e.operator=t,e},e.prototype._throwIfClosed=function(){if(this.closed)throw new W},e.prototype.next=function(t){var e=this;L((function(){var n,r;if(e._throwIfClosed(),!e.isStopped){e.currentObservers||(e.currentObservers=Array.from(e.observers));try{for(var i=d(e.currentObservers),s=i.next();!s.done;s=i.next())s.value.next(t)}catch(t){n={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}}))},e.prototype.error=function(t){var e=this;L((function(){if(e._throwIfClosed(),!e.isStopped){e.hasError=e.isStopped=!0,e.thrownError=t;for(var n=e.observers;n.length;)n.shift().error(t)}}))},e.prototype.complete=function(){var t=this;L((function(){if(t._throwIfClosed(),!t.isStopped){t.isStopped=!0;for(var e=t.observers;e.length;)e.shift().complete()}}))},e.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(e.prototype,"observed",{get:function(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(e){return this._throwIfClosed(),t.prototype._trySubscribe.call(this,e)},e.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},e.prototype._innerSubscribe=function(t){var e=this,n=this,r=n.hasError,i=n.isStopped,s=n.observers;return r||i?_:(this.currentObservers=null,s.push(t),new S((function(){e.currentObservers=null,x(s,t)})))},e.prototype._checkFinalizedStatuses=function(t){var e=this,n=e.hasError,r=e.thrownError,i=e.isStopped;n?t.error(r):i&&t.complete()},e.prototype.asObservable=function(){var t=new z;return t.source=this,t},e.create=function(t,e){return new G(t,e)},e}(z),G=function(t){function e(e,n){var r=t.call(this)||this;return r.destination=e,r.source=n,r}return p(e,t),e.prototype.next=function(t){var e,n;null===(n=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===n||n.call(e,t)},e.prototype.error=function(t){var e,n;null===(n=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===n||n.call(e,t)},e.prototype.complete=function(){var t,e;null===(e=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===e||e.call(t)},e.prototype._subscribe=function(t){var e,n;return null!==(n=null===(e=this.source)||void 0===e?void 0:e.subscribe(t))&&void 0!==n?n:_},e}(X),H=function(t){function e(e){var n=t.call(this)||this;return n._value=e,n}return p(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),e.prototype._subscribe=function(e){var n=t.prototype._subscribe.call(this,e);return!n.closed&&e.next(this._value),n},e.prototype.getValue=function(){var t=this,e=t.hasError,n=t.thrownError,r=t._value;if(e)throw n;return this._throwIfClosed(),r},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)},e}(X),J={now:function(){return(J.delegate||Date).now()},delegate:void 0},K=function(t){function e(e,n,r){void 0===e&&(e=1/0),void 0===n&&(n=1/0),void 0===r&&(r=J);var i=t.call(this)||this;return i._bufferSize=e,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,e),i._windowTime=Math.max(1,n),i}return p(e,t),e.prototype.next=function(e){var n=this,r=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,o=n._timestampProvider,a=n._windowTime;r||(i.push(e),!s&&i.push(o.now()+a)),this._trimBuffer(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var e=this._innerSubscribe(t),n=this._infiniteTimeWindow,r=this._buffer.slice(),i=0;i<r.length&&!t.closed;i+=n?1:2)t.next(r[i]);return this._checkFinalizedStatuses(t),e},e.prototype._trimBuffer=function(){var t=this,e=t._bufferSize,n=t._timestampProvider,r=t._buffer,i=t._infiniteTimeWindow,s=(i?1:2)*e;if(e<1/0&&s<r.length&&r.splice(0,r.length-s),!i){for(var o=n.now(),a=0,c=1;c<r.length&&r[c]<=o;c+=2)a=c;a&&r.splice(0,a+1)}},e}(X);function Q(t){return function(e){if(function(t){return b(null==t?void 0:t.lift)}(e))return e.lift((function(e){try{return t(e,this)}catch(t){this.error(t)}}));throw new TypeError("Unable to lift unknown Observable type")}}function Z(t,e,n,r,i){return new tt(t,e,n,r,i)}var tt=function(t){function e(e,n,r,i,s,o){var a=t.call(this,e)||this;return a.onFinalize=s,a.shouldUnsubscribe=o,a._next=n?function(t){try{n(t)}catch(t){e.error(t)}}:t.prototype._next,a._error=i?function(t){try{i(t)}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._error,a._complete=r?function(){try{r()}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._complete,a}return p(e,t),e.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;t.prototype.unsubscribe.call(this),!n&&(null===(e=this.onFinalize)||void 0===e||e.call(this))}},e}(B);function et(){return Q((function(t,e){var n,r=!1;t.subscribe(Z(e,(function(t){var i=n;n=t,r&&e.next([i,t]),r=!0})))}))}function nt(t,e){return Q((function(n,r){var i=0;n.subscribe(Z(r,(function(n){return t.call(e,n,i++)&&r.next(n)})))}))}function rt(t,e){return Q((function(n,r){var i=0;n.subscribe(Z(r,(function(n){r.next(t.call(e,n,i++))})))}))}var it=function(t){return t&&"number"==typeof t.length&&"function"!=typeof t},st="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator";function ot(t){if(t instanceof z)return t;if(null!=t){if(function(t){return b(t[V])}(t))return i=t,new z((function(t){var e=i[V]();if(b(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")}));if(it(t))return r=t,new z((function(t){for(var e=0;e<r.length&&!t.closed;e++)t.next(r[e]);t.complete()}));if(function(t){return b(null==t?void 0:t.then)}(t))return n=t,new z((function(t){n.then((function(e){t.closed||(t.next(e),t.complete())}),(function(e){return t.error(e)})).then(null,M)}));if(function(t){return Symbol.asyncIterator&&b(null==t?void 0:t[Symbol.asyncIterator])}(t))return at(t);if(function(t){return b(null==t?void 0:t[st])}(t))return e=t,new z((function(t){var n,r;try{for(var i=d(e),s=i.next();!s.done;s=i.next()){var o=s.value;if(t.next(o),t.closed)return}}catch(t){n={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}t.complete()}));if(function(t){return b(null==t?void 0:t.getReader)}(t))return at(function(t){return function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=n.apply(t,e||[]),s=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",(function(t){return function(e){return Promise.resolve(e).then(t,h)}})),r[Symbol.asyncIterator]=function(){return this},r;function o(t,e){i[t]&&(r[t]=function(e){return new Promise((function(n,r){s.push([t,e,n,r])>1||a(t,e)}))},e&&(r[t]=e(r[t])))}function a(t,e){try{(n=i[t](e)).value instanceof m?Promise.resolve(n.value.v).then(c,h):u(s[0][2],n)}catch(t){u(s[0][3],t)}var n}function c(t){a("next",t)}function h(t){a("throw",t)}function u(t,e){t(e),s.shift(),s.length&&a(s[0][0],s[0][1])}}(this,arguments,(function(){var e,n,r;return f(this,(function(i){switch(i.label){case 0:e=t.getReader(),i.label=1;case 1:i.trys.push([1,,9,10]),i.label=2;case 2:return[4,m(e.read())];case 3:return n=i.sent(),r=n.value,n.done?[4,m(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,m(r)];case 6:return[4,i.sent()];case 7:return i.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}}))}))}(t))}var e,n,r,i;throw function(t){return new TypeError("You provided "+(null!==t&&"object"==typeof t?"an invalid object":"'"+t+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}(t)}function at(t){return new z((function(e){(function(t,e){var n,r,i,s,o,a,c,h;return o=this,a=void 0,h=function(){var o,a;return f(this,(function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),n=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=d(t),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,i){!function(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)}(r,i,(e=t[n](e)).done,e.value)}))}}}(t),c.label=1;case 1:return[4,n.next()];case 2:if((r=c.sent()).done)return[3,4];if(o=r.value,e.next(o),e.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=c.sent(),i={error:a},[3,11];case 6:return c.trys.push([6,,9,10]),r&&!r.done&&(s=n.return)?[4,s.call(n)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return e.complete(),[2]}}))},new((c=void 0)||(c=Promise))((function(t,e){function n(t){try{i(h.next(t))}catch(t){e(t)}}function r(t){try{i(h.throw(t))}catch(t){e(t)}}function i(e){e.done?t(e.value):function(t){return t instanceof c?t:new c((function(e){e(t)}))}(e.value).then(n,r)}i((h=h.apply(o,a||[])).next())}))})(t,e).catch((function(t){return e.error(t)}))}))}function ct(t){void 0===t&&(t={});var e=t.connector,n=void 0===e?function(){return new X}:e,r=t.resetOnError,i=void 0===r||r,s=t.resetOnComplete,o=void 0===s||s,a=t.resetOnRefCountZero,c=void 0===a||a;return function(t){var e,r,s,a=0,h=!1,u=!1,l=function(){null==r||r.unsubscribe(),r=void 0},p=function(){l(),e=s=void 0,h=u=!1},f=function(){var t=e;p(),null==t||t.unsubscribe()};return Q((function(t,d){a++,u||h||l();var g=s=null!=s?s:n();d.add((function(){0!=--a||u||h||(r=ht(f,c))})),g.subscribe(d),!e&&a>0&&(e=new q({next:function(t){return g.next(t)},error:function(t){u=!0,l(),r=ht(p,i,t),g.error(t)},complete:function(){h=!0,l(),r=ht(p,o),g.complete()}}),ot(t).subscribe(e))}))(t)}}function ht(t,e){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];if(!0!==e){if(!1!==e){var i=new q({next:function(){i.unsubscribe(),t()}});return ot(e.apply(void 0,y([],g(n)))).subscribe(i)}}else t()}function ut(t,e,n){return void 0===n&&(n=1/0),b(e)?ut((function(n,r){return rt((function(t,i){return e(n,t,r,i)}))(ot(t(n,r)))}),n):("number"==typeof e&&(n=e),Q((function(e,r){return function(t,e,n,r,i,s,o,a){var c=[],h=0,u=0,l=!1,p=function(){!l||c.length||h||e.complete()},f=function(t){return h<r?d(t):c.push(t)},d=function(t){h++;var i=!1;ot(n(t,u++)).subscribe(Z(e,(function(t){e.next(t)}),(function(){i=!0}),void 0,(function(){if(i)try{h--;for(var t=function(){var t=c.shift();d(t)};c.length&&h<r;)t();p()}catch(t){e.error(t)}})))};return t.subscribe(Z(e,f,(function(){l=!0,p()}))),function(){}}(e,r,t,n)})))}function lt(t,e){return t===e}function pt(t,e,n={}){const r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=e||{},r.geometry=t,r}function ft(t,e,n={}){for(const e of t){if(e.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(e[e.length-1].length!==e[0].length)throw new Error("First and last Position are not equivalent.");for(let t=0;t<e[e.length-1].length;t++)if(e[e.length-1][t]!==e[0][t])throw new Error("First and last Position are not equivalent.")}return pt({type:"Polygon",coordinates:t},e,n)}function dt(t,e={}){const n={type:"FeatureCollection"};return e.id&&(n.id=e.id),e.bbox&&(n.bbox=e.bbox),n.features=t,n}function gt(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}function yt(t,e,n){if(null!==t)for(var r,i,s,o,a,c,h,u,l=0,p=0,f=t.type,d="FeatureCollection"===f,g="Feature"===f,y=d?t.features.length:1,m=0;m<y;m++){a=(u=!!(h=d?t.features[m].geometry:g?t.geometry:t)&&"GeometryCollection"===h.type)?h.geometries.length:1;for(var b=0;b<a;b++){var v=0,w=0;if(null!==(o=u?h.geometries[b]:h)){c=o.coordinates;var x=o.type;switch(l=!n||"Polygon"!==x&&"MultiPolygon"!==x?0:1,x){case null:break;case"Point":if(!1===e(c,p,m,v,w))return!1;p++,v++;break;case"LineString":case"MultiPoint":for(r=0;r<c.length;r++){if(!1===e(c[r],p,m,v,w))return!1;p++,"MultiPoint"===x&&v++}"LineString"===x&&v++;break;case"Polygon":case"MultiLineString":for(r=0;r<c.length;r++){for(i=0;i<c[r].length-l;i++){if(!1===e(c[r][i],p,m,v,w))return!1;p++}"MultiLineString"===x&&v++,"Polygon"===x&&w++}"Polygon"===x&&v++;break;case"MultiPolygon":for(r=0;r<c.length;r++){for(w=0,i=0;i<c[r].length;i++){for(s=0;s<c[r][i].length-l;s++){if(!1===e(c[r][i][s],p,m,v,w))return!1;p++}w++}v++}break;case"GeometryCollection":for(r=0;r<o.geometries.length;r++)if(!1===yt(o.geometries[r],e,n))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function mt(t,e){var n,r,i,s,o,a,c,h,u,l,p=0,f="FeatureCollection"===t.type,d="Feature"===t.type,g=f?t.features.length:1;for(n=0;n<g;n++){for(a=f?t.features[n].geometry:d?t.geometry:t,h=f?t.features[n].properties:d?t.properties:{},u=f?t.features[n].bbox:d?t.bbox:void 0,l=f?t.features[n].id:d?t.id:void 0,o=(c=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,i=0;i<o;i++)if(null!==(s=c?a.geometries[i]:a))switch(s.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===e(s,p,h,u,l))return!1;break;case"GeometryCollection":for(r=0;r<s.geometries.length;r++)if(!1===e(s.geometries[r],p,h,u,l))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===e(null,p,h,u,l))return!1;p++}}function bt(t,e){mt(t,(function(t,n,r,i,s){var o,a=null===t?null:t.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==e(pt(t,r,{bbox:i,id:s}),n,0)&&void 0}switch(a){case"MultiPoint":o="Point";break;case"MultiLineString":o="LineString";break;case"MultiPolygon":o="Polygon"}for(var c=0;c<t.coordinates.length;c++){var h=t.coordinates[c];if(!1===e(pt({type:o,coordinates:h},r),n,c))return!1}}))}function vt(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const n=[1/0,1/0,-1/0,-1/0];return yt(t,(t=>{n[0]>t[0]&&(n[0]=t[0]),n[1]>t[1]&&(n[1]=t[1]),n[2]<t[0]&&(n[2]=t[0]),n[3]<t[1]&&(n[3]=t[1])})),n}function wt(t,e={}){const n=Number(t[0]),r=Number(t[1]),i=Number(t[2]),s=Number(t[3]);if(6===t.length)throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");const o=[n,r];return ft([[o,[i,r],[i,s],[n,s],o]],e.properties,{bbox:t,id:e.id})}Math.PI;var xt=n(73);function St(t,e={}){const n=[];if(mt(t,(t=>{n.push(t.coordinates)})),n.length<2)throw new Error("Must have at least 2 geometries");const r=xt.union(n[0],...n.slice(1));return 0===r.length?null:1===r.length?ft(r[0],e.properties):function(t,e,n={}){return pt({type:"MultiPolygon",coordinates:t},e,n)}(r,e.properties)}function _t(t,e,n=0,r=t.length-1,i=kt){for(;r>n;){if(r-n>600){const s=r-n+1,o=e-n+1,a=Math.log(s),c=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*c*(s-c)/s)*(o-s/2<0?-1:1);_t(t,e,Math.max(n,Math.floor(e-o*c/s+h)),Math.min(r,Math.floor(e+(s-o)*c/s+h)),i)}const s=t[e];let o=n,a=r;for(Et(t,n,e),i(t[r],s)>0&&Et(t,n,r);o<a;){for(Et(t,o,a),o++,a--;i(t[o],s)<0;)o++;for(;i(t[a],s)>0;)a--}0===i(t[n],s)?Et(t,n,a):(a++,Et(t,a,r)),a<=e&&(n=a+1),e<=a&&(r=a-1)}}function Et(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}function kt(t,e){return t<e?-1:t>e?1:0}class Pt{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}all(){return this._all(this.data,[])}search(t){let e=this.data;const n=[];if(!Nt(t,e))return n;const r=this.toBBox,i=[];for(;e;){for(let s=0;s<e.children.length;s++){const o=e.children[s],a=e.leaf?r(o):o;Nt(t,a)&&(e.leaf?n.push(o):jt(t,a)?this._all(o,n):i.push(o))}e=i.pop()}return n}collides(t){let e=this.data;if(!Nt(t,e))return!1;const n=[];for(;e;){for(let r=0;r<e.children.length;r++){const i=e.children[r],s=e.leaf?this.toBBox(i):i;if(Nt(t,s)){if(e.leaf||jt(t,s))return!0;n.push(i)}}e=n.pop()}return!1}load(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(let e=0;e<t.length;e++)this.insert(t[e]);return this}let e=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===e.height)this._splitRoot(this.data,e);else{if(this.data.height<e.height){const t=this.data;this.data=e,e=t}this._insert(e,this.data.height-e.height-1,!0)}else this.data=e;return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=qt([]),this}remove(t,e){if(!t)return this;let n=this.data;const r=this.toBBox(t),i=[],s=[];let o,a,c;for(;n||i.length;){if(n||(n=i.pop(),a=i[i.length-1],o=s.pop(),c=!0),n.leaf){const r=Tt(t,n.children,e);if(-1!==r)return n.children.splice(r,1),i.push(n),this._condense(i),this}c||n.leaf||!jt(n,r)?a?(o++,n=a.children[o],c=!1):n=null:(i.push(n),s.push(o),o=0,a=n,n=n.children[0])}return this}toBBox(t){return t}compareMinX(t,e){return t.minX-e.minX}compareMinY(t,e){return t.minY-e.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,e){const n=[];for(;t;)t.leaf?e.push(...t.children):n.push(...t.children),t=n.pop();return e}_build(t,e,n,r){const i=n-e+1;let s,o=this._maxEntries;if(i<=o)return s=qt(t.slice(e,n+1)),Mt(s,this.toBBox),s;r||(r=Math.ceil(Math.log(i)/Math.log(o)),o=Math.ceil(i/Math.pow(o,r-1))),s=qt([]),s.leaf=!1,s.height=r;const a=Math.ceil(i/o),c=a*Math.ceil(Math.sqrt(o));Ft(t,e,n,c,this.compareMinX);for(let i=e;i<=n;i+=c){const e=Math.min(i+c-1,n);Ft(t,i,e,a,this.compareMinY);for(let n=i;n<=e;n+=a){const i=Math.min(n+a-1,e);s.children.push(this._build(t,n,i,r-1))}}return Mt(s,this.toBBox),s}_chooseSubtree(t,e,n,r){for(;r.push(e),!e.leaf&&r.length-1!==n;){let n,r=1/0,o=1/0;for(let a=0;a<e.children.length;a++){const c=e.children[a],h=Lt(c),u=(i=t,s=c,(Math.max(s.maxX,i.maxX)-Math.min(s.minX,i.minX))*(Math.max(s.maxY,i.maxY)-Math.min(s.minY,i.minY))-h);u<o?(o=u,r=h<r?h:r,n=c):u===o&&h<r&&(r=h,n=c)}e=n||e.children[0]}var i,s;return e}_insert(t,e,n){const r=n?t:this.toBBox(t),i=[],s=this._chooseSubtree(r,this.data,e,i);for(s.children.push(t),Ot(s,r);e>=0&&i[e].children.length>this._maxEntries;)this._split(i,e),e--;this._adjustParentBBoxes(r,i,e)}_split(t,e){const n=t[e],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);const s=this._chooseSplitIndex(n,i,r),o=qt(n.children.splice(s,n.children.length-s));o.height=n.height,o.leaf=n.leaf,Mt(n,this.toBBox),Mt(o,this.toBBox),e?t[e-1].children.push(o):this._splitRoot(n,o)}_splitRoot(t,e){this.data=qt([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Mt(this.data,this.toBBox)}_chooseSplitIndex(t,e,n){let r,i=1/0,s=1/0;for(let o=e;o<=n-e;o++){const e=Rt(t,0,o,this.toBBox),a=Rt(t,o,n,this.toBBox),c=It(e,a),h=Lt(e)+Lt(a);c<i?(i=c,r=o,s=h<s?h:s):c===i&&h<s&&(s=h,r=o)}return r||n-e}_chooseSplitAxis(t,e,n){const r=t.leaf?this.compareMinX:At,i=t.leaf?this.compareMinY:Ct;this._allDistMargin(t,e,n,r)<this._allDistMargin(t,e,n,i)&&t.children.sort(r)}_allDistMargin(t,e,n,r){t.children.sort(r);const i=this.toBBox,s=Rt(t,0,e,i),o=Rt(t,n-e,n,i);let a=Bt(s)+Bt(o);for(let r=e;r<n-e;r++){const e=t.children[r];Ot(s,t.leaf?i(e):e),a+=Bt(s)}for(let r=n-e-1;r>=e;r--){const e=t.children[r];Ot(o,t.leaf?i(e):e),a+=Bt(o)}return a}_adjustParentBBoxes(t,e,n){for(let r=n;r>=0;r--)Ot(e[r],t)}_condense(t){for(let e,n=t.length-1;n>=0;n--)0===t[n].children.length?n>0?(e=t[n-1].children,e.splice(e.indexOf(t[n]),1)):this.clear():Mt(t[n],this.toBBox)}}function Tt(t,e,n){if(!n)return e.indexOf(t);for(let r=0;r<e.length;r++)if(n(t,e[r]))return r;return-1}function Mt(t,e){Rt(t,0,t.children.length,e,t)}function Rt(t,e,n,r,i){i||(i=qt(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(let s=e;s<n;s++){const e=t.children[s];Ot(i,t.leaf?r(e):e)}return i}function Ot(t,e){return t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),t}function At(t,e){return t.minX-e.minX}function Ct(t,e){return t.minY-e.minY}function Lt(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function Bt(t){return t.maxX-t.minX+(t.maxY-t.minY)}function It(t,e){const n=Math.max(t.minX,e.minX),r=Math.max(t.minY,e.minY),i=Math.min(t.maxX,e.maxX),s=Math.min(t.maxY,e.maxY);return Math.max(0,i-n)*Math.max(0,s-r)}function jt(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function Nt(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function qt(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Ft(t,e,n,r,i){const s=[e,n];for(;s.length;){if((n=s.pop())-(e=s.pop())<=r)continue;const o=e+Math.ceil((n-e)/r/2)*r;_t(t,o,e,n,i),s.push(e,o,o,n)}}function Dt(t){return wt(t)}function Ut(t){return t[0]<t[2]&&t[1]<t[3]}function Vt(t,e){const[n,r,i,s]=t,[o,a,c,h]=e,u=Math.max(n,o),l=Math.max(r,a),p=Math.min(i,c),f=Math.min(s,h);if(p<u||f<l)return 0;const d=(p-u)*(f-l);return d/((i-n)*(s-r)+(c-o)*(h-a)-d)}function Yt(t,e=.01,n=100){if(0===t.length)return[];const r=new Pt,i=t.map((t=>({minX:t.boundingBox[0],minY:t.boundingBox[1],maxX:t.boundingBox[2],maxY:t.boundingBox[3],detection:{...t,id:t.id??Math.random().toString(36).slice(2,9)}})));r.load(i);const s=[],o=new Set;for(const t of i){if(o.has(t.detection.id))continue;const i={...t.detection};let c=i.confidence;const h=[Dt(i.boundingBox)],u=Math.max(n,10),l=r.search({minX:t.minX-u,minY:t.minY-u,maxX:t.maxX+u,maxY:t.maxY+u});for(const r of l){if(r.detection.id===i.id||o.has(r.detection.id)||r.detection.label!==i.label)continue;const s=Vt(i.boundingBox,r.detection.boundingBox),a=Math.abs(t.minX-r.minX)<=n&&Math.abs(t.minY-r.minY)<=n;if(s>e||a){const t=Dt(r.detection.boundingBox);h.push(t),o.add(r.detection.id),c=Math.max(c,r.detection.confidence)}}if(h.length>1){const t=St(dt(h));if(t){const e=(a=vt(t),[Math.max(0,Math.round(a[0])),Math.max(0,Math.round(a[1])),Math.min(1e3,Math.round(a[2])),Math.min(1e3,Math.round(a[3]))]);Ut(e)&&(i.boundingBox=e,i.confidence=c)}}Ut(i.boundingBox)&&s.push(i),o.add(i.id)}var a;return s}const zt=function(t,e){for(var n=0,r=0,i=0,s=0,o=0,a=0,c=0,h=0,u=null,l=null,p=t[0],f=t[1],d=e.length;n<d;n++){r=0;var g=e[n].length-1,y=e[n];if((u=y[0])[0]!==y[g][0]&&u[1]!==y[g][1])throw new Error("First and last coordinates in a ring must be the same");for(o=u[0]-p,a=u[1]-f;r<g;r++)if(h=(l=y[r+1])[1]-f,a<0&&h<0||a>0&&h>0)a=h,o=(u=l)[0]-p;else{if(c=l[0]-t[0],h>0&&a<=0){if((s=o*h-c*a)>0)i+=1;else if(0===s)return 0}else if(a>0&&h<=0){if((s=o*h-c*a)<0)i+=1;else if(0===s)return 0}else if(0===h&&a<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&h<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&0===h){if(c<=0&&o>=0)return 0;if(o<=0&&c>=0)return 0}u=l,a=h,o=c}}return i%2!=0};function $t(t){if(!t)throw new Error("coord is required");if(!Array.isArray(t)){if("Feature"===t.type&&null!==t.geometry&&"Point"===t.geometry.type)return[...t.geometry.coordinates];if("Point"===t.type)return[...t.coordinates]}if(Array.isArray(t)&&t.length>=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return[...t];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Wt(t){return"Feature"===t.type?t.geometry:t}function Xt(t,e,n={}){if(!t)throw new Error("point is required");if(!e)throw new Error("polygon is required");const r=$t(t),i=Wt(e),s=i.type,o=e.bbox;let a=i.coordinates;if(o&&!1===function(t,e){return e[0]<=t[0]&&e[1]<=t[1]&&e[2]>=t[0]&&e[3]>=t[1]}(r,o))return!1;"Polygon"===s&&(a=[a]);let c=!1;for(var h=0;h<a.length;++h){const t=zt(r,a[h]);if(0===t)return!n.ignoreBoundary;t&&(c=!0)}return c}function Gt(t,e,n={}){const r=$t(t),i=function(t){if(Array.isArray(t))return t;if("Feature"===t.type){if(null!==t.geometry)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}(e);for(let t=0;t<i.length-1;t++){let e=!1;if(n.ignoreEndVertices&&(0===t&&(e="start"),t===i.length-2&&(e="end"),0===t&&t+1===i.length-1&&(e="both")),Ht(i[t],i[t+1],r,e,void 0===n.epsilon?null:n.epsilon))return!0}return!1}function Ht(t,e,n,r,i){const s=n[0],o=n[1],a=t[0],c=t[1],h=e[0],u=e[1],l=h-a,p=u-c,f=(n[0]-a)*p-(n[1]-c)*l;if(null!==i){if(Math.abs(f)>i)return!1}else if(0!==f)return!1;return r?"start"===r?Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<=h:h<=s&&s<a:p>0?c<o&&o<=u:u<=o&&o<c:"end"===r?Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<h:h<s&&s<=a:p>0?c<=o&&o<u:u<o&&o<=c:"both"===r&&(Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<h:h<s&&s<a:p>0?c<o&&o<u:u<o&&o<c):Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<=h:h<=s&&s<=a:p>0?c<=o&&o<=u:u<=o&&o<=c}function Jt(t,e){const n=Wt(t),r=Wt(e),i=n.type,s=r.type,o=n.coordinates,a=r.coordinates;switch(i){case"Point":if("Point"===s)return Zt(o,a);throw new Error("feature2 "+s+" geometry not supported");case"MultiPoint":switch(s){case"Point":return function(t,e){let n,r=!1;for(n=0;n<t.coordinates.length;n++)if(Zt(t.coordinates[n],e.coordinates)){r=!0;break}return r}(n,r);case"MultiPoint":return function(t,e){for(const n of e.coordinates){let e=!1;for(const r of t.coordinates)if(Zt(n,r)){e=!0;break}if(!e)return!1}return!0}(n,r);default:throw new Error("feature2 "+s+" geometry not supported")}case"LineString":switch(s){case"Point":return Gt(r,n,{ignoreEndVertices:!0});case"LineString":return function(t,e){let n=!1;for(const r of e.coordinates)if(Gt({type:"Point",coordinates:r},t,{ignoreEndVertices:!0})&&(n=!0),!Gt({type:"Point",coordinates:r},t,{ignoreEndVertices:!1}))return!1;return n}(n,r);case"MultiPoint":return function(t,e){let n=!1;for(const r of e.coordinates)if(Gt(r,t,{ignoreEndVertices:!0})&&(n=!0),!Gt(r,t))return!1;return!!n}(n,r);default:throw new Error("feature2 "+s+" geometry not supported")}case"Polygon":switch(s){case"Point":return Xt(r,n,{ignoreBoundary:!0});case"LineString":return function(t,e){let n=!1,r=0;if(!Qt(vt(t),vt(e)))return!1;for(;r<e.coordinates.length-1;r++)if(Xt({type:"Point",coordinates:(i=e.coordinates[r],s=e.coordinates[r+1],[(i[0]+s[0])/2,(i[1]+s[1])/2])},t,{ignoreBoundary:!0})){n=!0;break}var i,s;return n}(n,r);case"Polygon":return Kt(n,r);case"MultiPoint":return function(t,e){for(const n of e.coordinates)if(!Xt(n,t,{ignoreBoundary:!0}))return!1;return!0}(n,r);default:throw new Error("feature2 "+s+" geometry not supported")}case"MultiPolygon":if("Polygon"===s)return function(t,e){return t.coordinates.some((t=>Kt({type:"Polygon",coordinates:t},e)))}(n,r);throw new Error("feature2 "+s+" geometry not supported");default:throw new Error("feature1 "+i+" geometry not supported")}}function Kt(t,e){if("Feature"===t.type&&null===t.geometry)return!1;if("Feature"===e.type&&null===e.geometry)return!1;if(!Qt(vt(t),vt(e)))return!1;const n=Wt(e).coordinates;for(const e of n)for(const n of e)if(!Xt(n,t))return!1;return!0}function Qt(t,e){return!(t[0]>e[0]||t[2]<e[2]||t[1]>e[1]||t[3]<e[3])}function Zt(t,e){return t[0]===e[0]&&t[1]===e[1]}class te{constructor(t=[],e=ee){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(t){this.data.push(t),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:n}=this,r=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(n(r,s)>=0)break;e[t]=s,t=i}e[t]=r}_down(t){const{data:e,compare:n}=this,r=this.length>>1,i=e[t];for(;t<r;){let r=1+(t<<1),s=e[r];const o=r+1;if(o<this.length&&n(e[o],s)<0&&(r=o,s=e[o]),n(s,i)>=0)break;e[t]=s,t=r}e[t]=i}}function ee(t,e){return t<e?-1:t>e?1:0}function ne(t,e){return t.p.x>e.p.x?1:t.p.x<e.p.x?-1:t.p.y!==e.p.y?t.p.y>e.p.y?1:-1:1}function re(t,e){return t.rightSweepEvent.p.x>e.rightSweepEvent.p.x?1:t.rightSweepEvent.p.x<e.rightSweepEvent.p.x?-1:t.rightSweepEvent.p.y!==e.rightSweepEvent.p.y?t.rightSweepEvent.p.y<e.rightSweepEvent.p.y?1:-1:1}class ie{constructor(t,e,n,r){this.p={x:t[0],y:t[1]},this.featureId=e,this.ringId=n,this.eventId=r,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(t){return this.p.x===t.p.x&&this.p.y===t.p.y}}let se=0,oe=0,ae=0;function ce(t,e){const n="Feature"===t.type?t.geometry:t;let r=n.coordinates;"Polygon"!==n.type&&"MultiLineString"!==n.type||(r=[r]),"LineString"===n.type&&(r=[[r]]);for(let t=0;t<r.length;t++)for(let n=0;n<r[t].length;n++){let i=r[t][n][0],s=null;oe+=1;for(let o=0;o<r[t][n].length-1;o++){s=r[t][n][o+1];const a=new ie(i,se,oe,ae),c=new ie(s,se,oe,ae+1);a.otherEvent=c,c.otherEvent=a,ne(a,c)>0?(c.isLeftEndpoint=!0,a.isLeftEndpoint=!1):(a.isLeftEndpoint=!0,c.isLeftEndpoint=!1),e.push(a),e.push(c),i=s,ae+=1}}se+=1}class he{constructor(t){this.leftSweepEvent=t,this.rightSweepEvent=t.otherEvent}}function ue(t,e){if(null===t||null===e)return!1;if(t.leftSweepEvent.ringId===e.leftSweepEvent.ringId&&(t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.rightSweepEvent)||t.leftSweepEvent.isSamePoint(e.leftSweepEvent)||t.leftSweepEvent.isSamePoint(e.rightSweepEvent)))return!1;const n=t.leftSweepEvent.p.x,r=t.leftSweepEvent.p.y,i=t.rightSweepEvent.p.x,s=t.rightSweepEvent.p.y,o=e.leftSweepEvent.p.x,a=e.leftSweepEvent.p.y,c=e.rightSweepEvent.p.x,h=e.rightSweepEvent.p.y,u=(h-a)*(i-n)-(c-o)*(s-r);if(0===u)return!1;const l=((c-o)*(r-a)-(h-a)*(n-o))/u,p=((i-n)*(r-a)-(s-r)*(n-o))/u;return l>=0&&l<=1&&p>=0&&p<=1&&[n+l*(i-n),r+l*(s-r)]}var le=function(t,e){const n=new te([],ne);return function(t,e){if("FeatureCollection"===t.type){const n=t.features;for(let t=0;t<n.length;t++)ce(n[t],e)}else ce(t,e)}(t,n),function(t,e){e=e||!1;const n=[],r=new te([],re);for(;t.length;){const i=t.pop();if(i.isLeftEndpoint){const t=new he(i);for(let s=0;s<r.data.length;s++){const o=r.data[s];if(e&&o.leftSweepEvent.featureId===i.featureId)continue;const a=ue(t,o);!1!==a&&n.push(a)}r.push(t)}else!1===i.isLeftEndpoint&&r.pop()}return n}(n,e)};function pe(t,e,n={}){const{removeDuplicates:r=!0,ignoreSelfIntersections:i=!1}=n;let s=[];"FeatureCollection"===t.type?s=s.concat(t.features):"Feature"===t.type?s.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||s.push(pt(t)),"FeatureCollection"===e.type?s=s.concat(e.features):"Feature"===e.type?s.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||s.push(pt(e));const o=le(dt(s),i);let a=[];if(r){const t={};o.forEach((e=>{const n=e.join(",");t[n]||(t[n]=!0,a.push(e))}))}else a=o;return dt(a.map((t=>function(t,e,n={}){if(!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!gt(t[0])||!gt(t[1]))throw new Error("coordinates must contain numbers");return pt({type:"Point",coordinates:t},e,n)}(t))))}function fe(t,e={}){const n=Wt(t);switch(e.properties||"Feature"!==t.type||(e.properties=t.properties),n.type){case"Polygon":return function(t,e={}){return de(Wt(t).coordinates,e.properties?e.properties:"Feature"===t.type?t.properties:{})}(n,e);case"MultiPolygon":return function(t,e={}){const n=Wt(t).coordinates,r=e.properties?e.properties:"Feature"===t.type?t.properties:{},i=[];return n.forEach((t=>{i.push(de(t,r))})),dt(i)}(n,e);default:throw new Error("invalid poly")}}function de(t,e){return t.length>1?function(t,e,n={}){return pt({type:"MultiLineString",coordinates:t},e,n)}(t,e):function(t,e,n={}){if(t.length<2)throw new Error("coordinates must be an array of two or more positions");return pt({type:"LineString",coordinates:t},e,n)}(t[0],e)}function ge(t,e){for(let n=0;n<t.coordinates.length-1;n++)if(me(t.coordinates[n],t.coordinates[n+1],e.coordinates))return!0;return!1}function ye(t,e,n){for(const n of e.coordinates)if(Xt(n,t))return!0;return pe(e,fe(t),{ignoreSelfIntersections:n}).features.length>0}function me(t,e,n){const r=n[0]-t[0],i=n[1]-t[1],s=e[0]-t[0],o=e[1]-t[1];return 0==r*o-i*s&&(Math.abs(s)>=Math.abs(o)?s>0?t[0]<=n[0]&&n[0]<=e[0]:e[0]<=n[0]&&n[0]<=t[0]:o>0?t[1]<=n[1]&&n[1]<=e[1]:e[1]<=n[1]&&n[1]<=t[1])}function be(t,e,n={}){var r;const i=null!=(r=n.ignoreSelfIntersections)&&r;let s=!1;return bt(t,(t=>{bt(e,(e=>{if(!0===s)return!0;s=!function(t,e,n={}){var r;const i=null!=(r=n.ignoreSelfIntersections)&&r;let s=!0;return bt(t,(t=>{bt(e,(e=>{if(!1===s)return!1;s=function(t,e,n){switch(t.type){case"Point":switch(e.type){case"Point":return r=t.coordinates,i=e.coordinates,!(r[0]===i[0]&&r[1]===i[1]);case"LineString":return!ge(e,t);case"Polygon":return!Xt(t,e)}break;case"LineString":switch(e.type){case"Point":return!ge(t,e);case"LineString":return!function(t,e,n){return pe(t,e,{ignoreSelfIntersections:n}).features.length>0}(t,e,n);case"Polygon":return!ye(e,t,n)}break;case"Polygon":switch(e.type){case"Point":return!Xt(e,t);case"LineString":return!ye(t,e,n);case"Polygon":return!function(t,e,n){for(const n of t.coordinates[0])if(Xt(n,e))return!0;for(const n of e.coordinates[0])if(Xt(n,t))return!0;return pe(fe(t),fe(e),{ignoreSelfIntersections:n}).features.length>0}(e,t,n)}}var r,i;return!1}(t.geometry,e.geometry,i)}))})),s}(t.geometry,e.geometry,{ignoreSelfIntersections:i})}))})),s}const ve=(t,e)=>{const{origWidth:n,origHeight:r}=e,i=t.points.map((([t,e])=>[t*n/100,e*r/100]));return i.length>0&&!we(i[0],i[i.length-1])&&i.push(i[0]),{...t,points:i}},we=(t,e)=>t[0]===e[0]&&t[1]===e[1],xe=t=>{const{origWidth:e,origHeight:n,inputWidth:r,inputHeight:i}=t;let[s,o,a,c]=t.boundingBox;return s=s*e/r,o=o*n/i,a=a*e/r,c=c*n/i,s=Math.max(0,Math.min(s,e)),o=Math.max(0,Math.min(o,n)),a=Math.max(0,Math.min(a,e)),c=Math.max(0,Math.min(c,n)),{...t,boundingBox:[s,o,a,c]}},Se=(t,e,n)=>{const r=[];for(const i of t)_e(xe(i),e,n)&&e.some((t=>!t.classes.length||t.classes.includes(i.label)))&&r.push(i);return r},_e=(t,e,n)=>{if(t.confidence<n.object.confidence)return!1;if(0===e.length)return!0;const[r,i,s,o]=t.boundingBox,a=wt([r,i,s,o]);for(const n of e){const e=ve(n,t),r=ft([e.points]);if(e.classes.length>0&&!e.classes.includes(t.label))continue;const i=be(a,r),s=Jt(r,a);if(e.isPrivacyMask){if(i||s)return!1}else if("include"===e.filter){if("contain"===e.type){if(s)return!0}else if("intersect"===e.type&&(i||s))return!0}else if("exclude"===e.filter)if("contain"===e.type){if(!s)return!0}else if("intersect"===e.type&&!i&&!s)return!0}return!1};class Ee extends o{logger;snapshotCache;cameraSubject;cameraState=new H(!1);lightState=new H(this.getLightState({state:!1},!0));motionState=new H(this.getMotionState({detections:[],state:!1},!0));audioState=new H(this.getAudioState({state:!1,db:0},!0));objectState=new H(this.getObjectState({detections:[]},!0));doorbellState=new H(this.getDoorbellState({state:!1},!0));sirenState=new H(this.getSirenState({state:!1,level:0},!0));batteryState=new H(this.getBatteryState({level:100,charging:!1,lowBattery:!1},!0));onConnected=this.createStateObservable(this.cameraState);onLightSwitched=this.createStateObservable(this.lightState);onMotionDetected=this.createStateObservable(this.motionState);onAudioDetected=this.createStateObservable(this.audioState);onObjectDetected=this.createStateObservable(this.objectState);onDoorbellPressed=this.createStateObservable(this.doorbellState);onSirenDetected=this.createStateObservable(this.sirenState);onBatteryChanged=this.createStateObservable(this.batteryState);get cameraObject(){return c(this.cameraSubject.getValue())}get id(){return this.cameraSubject.getValue()._id}get nativeId(){return this.cameraSubject.getValue().nativeId}get pluginId(){return this.cameraSubject.getValue().pluginId}get connected(){return this.cameraState.getValue()}get disabled(){return this.cameraSubject.getValue().disabled}get name(){return this.cameraSubject.getValue().name}get type(){return this.cameraSubject.getValue().type}get info(){return c(this.cameraSubject.getValue().info)}get isCloud(){return this.cameraSubject.getValue().isCloud}get hasLight(){return this.cameraSubject.getValue().hasLight}get hasSiren(){return this.cameraSubject.getValue().hasSiren}get hasBinarySensor(){return this.cameraSubject.getValue().hasBinarySensor}get hasBattery(){return this.cameraSubject.getValue().hasBattery}get hasMotionDetector(){return this.cameraSubject.getValue().hasMotionDetector}get extendedMotionDetector(){return this.cameraSubject.getValue().extendedMotionDetector}get hasAudioDetector(){return this.cameraSubject.getValue().hasAudioDetector}get hasObjectDetector(){return this.cameraSubject.getValue().hasObjectDetector}get hasPtz(){return this.cameraSubject.getValue().hasPtz}get snapshotTTL(){return this.cameraSubject.getValue().snapshotTTL}get detectionZones(){return c(this.cameraSubject.getValue().detectionZones)}get detectionSettings(){return c(this.cameraSubject.getValue().detectionSettings)}get frameWorkerSettings(){return c(this.cameraSubject.getValue().frameWorkerSettings)}get streamSource(){return this.highResolutionSource??this.midResolutionSource??this.lowResolutionSource}get snapshotSource(){const t=this.sources.find((t=>t.roles.includes("snapshot")&&!t.internal));if(t)return{_id:t._id,name:t.name,roles:t.roles,urls:t.urls,internal:t.internal}}get highResolutionSource(){return this.sources.find((t=>t.roles.includes("high-resolution")&&!t.internal))}get midResolutionSource(){return this.sources.find((t=>t.roles.includes("mid-resolution")&&!t.internal))}get lowResolutionSource(){return this.sources.find((t=>t.roles.includes("low-resolution")&&!t.internal))}get ptz(){return this.ptzDelegate}constructor(t,e){super(),this.logger=e,this.cameraSubject=new H(t),this.updateCamera(t),this.snapshotCache=new(u())({max:100,ttl:1e3*this.snapshotTTL}),"native"===t.pluginId&&this.cameraState.next(!0)}getValue(t){switch(t){case"light":return c(this.lightState.getValue());case"motion":return c(this.motionState.getValue());case"audio":return c(this.audioState.getValue());case"object":return c(this.objectState.getValue());case"doorbell":return c(this.doorbellState.getValue());case"siren":return c(this.sirenState.getValue());case"battery":return c(this.batteryState.getValue());default:throw new Error(`Unknown state: ${t}`)}}async snapshot(t){this.snapshotCache.purgeStale();const e=this.snapshotSource??this.streamSource,n=e.urls.www.jpegSnapshot,r=this.snapshotCache.get(e._id);if(!t&&r)return r;try{if("native"!==this.cameraObject.pluginId){const t=await this.cameraDelegate.snapshot();if(t&&t.byteLength>0)return this.snapshotCache.set(e._id,t),t}const t=new AbortController,r=setTimeout((()=>t.abort()),5e3),i=await fetch(n,{signal:t.signal});if(clearTimeout(r),!i.ok)throw new Error("Status Code: "+i.status);const s=await i.arrayBuffer();return s.byteLength>0&&this.snapshotCache.set(e._id,s),s}catch{return}}onStateChange(t){return this[`${t}State`].pipe(et(),nt((([e,n])=>this.stateChanged(e,n,t))),rt((([t,e])=>({oldState:t,newState:e}))),ct({connector:()=>new K(1)}))}onPropertyChange(t){return this.cameraSubject.pipe(et(),ut((([e,n])=>(Array.isArray(t)?t:[t]).map((t=>({property:t,oldData:e[t],newData:n[t]}))))),nt((({oldData:t,newData:e})=>!a(t,e,!0))),ct({connector:()=>new K(1)}))}removeAllListeners(){this.lightState.complete(),this.motionState.complete(),this.audioState.complete(),this.objectState.complete(),this.doorbellState.complete(),this.sirenState.complete(),this.batteryState.complete(),this.cameraSubject.complete(),this.cameraState.complete()}updateCamera(t){t.snapshotTTL!==this.snapshotTTL&&this.snapshotCache.clear(),this.cameraSubject.next(t)}updateCameraState(t){this.cameraState.next(t)}updateStateInternal(t,e,n,r){let i,s=!1;if(n)s=!0,i=e;else{const n=this.checkStateInternal(t,e,r);s=n.changed,i=n.event}if(s)switch(t){case"light":this.lightState.next(this.getLightState(i));break;case"motion":this.motionState.next(this.getMotionState(i));break;case"audio":this.audioState.next(this.getAudioState(i));break;case"object":this.objectState.next(this.getObjectState(i));break;case"doorbell":this.doorbellState.next(this.getDoorbellState(i));break;case"siren":this.sirenState.next(this.getSirenState(i));break;case"battery":this.batteryState.next(this.getBatteryState(i));break;default:throw new Error(`Unknown state: ${t}`)}}checkStateInternal(t,e,n){let r,i=!1;switch(t){case"audio":const s=e;r=this.getAudioState(s),i=this.stateChanged(this.getValue("audio"),r,"audio");break;case"light":const o=e;r=this.getLightState(o),i=this.stateChanged(this.getValue("light"),r,"light");break;case"motion":const a=e;if(a.state||(a.detections=[]),!n&&a.detections){const t=a.detections.length>0;a.detections=Yt(a.detections),a.detections=Se(a.detections,this.detectionZones,this.detectionSettings),t&&0===a.detections.length&&(a.state=!1)}r=this.getMotionState(a),i=this.stateChanged(this.getValue("motion"),r,"motion");break;case"object":const c=e;n||(c.detections=Yt(c.detections),c.detections=Se(c.detections,this.detectionZones,this.detectionSettings)),r=this.getObjectState(c),i=this.stateChanged(this.getValue("object"),r,"object");break;case"doorbell":const h=e;r=this.getDoorbellState(h),i=this.stateChanged(this.getValue("doorbell"),r,"doorbell");break;case"siren":const u=e;r=this.getSirenState(u),i=this.stateChanged(this.getValue("siren"),r,"siren");break;case"battery":const l=e;r=this.getBatteryState(l),i=this.stateChanged(this.getValue("battery"),r,"battery");break;default:throw new Error(`Unknown state: ${t}`)}return{changed:i,event:r}}stateChanged(t,e,n){return void 0!==t&&void 0!==e&&void 0!==n&&(!("audio"===n&&!this.hasAudioDetector)&&(!("motion"===n&&!this.hasMotionDetector)&&(!("object"===n&&!this.hasObjectDetector)&&(!("siren"===n&&!this.hasSiren)&&(!("battery"===n&&!this.hasBattery)&&(!("doorbell"===n&&!this.hasBinarySensor)&&(!("light"===n&&!this.hasLight)&&!a(this.cleanState(t),this.cleanState(e),!0))))))))}getAudioState(t,e=!1){let n,r;if(e||(n=this.getValue("audio"),n&&n.lastEvent&&delete n.lastEvent),this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,db:e.db??n?.db??0,lastEvent:n}}return r}getMotionState(t,e=!1){let n,r;return e||(n=this.getValue("motion"),n&&n.lastEvent&&delete n.lastEvent),r=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},r}getObjectState(t,e=!1){let n,r;return e||(n=this.getValue("object"),n&&n.lastEvent&&delete n.lastEvent),r=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},r}getDoorbellState(t,e=!1){let n,r;return e||(n=this.getValue("doorbell"),n&&n.lastEvent&&delete n.lastEvent),r=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},r}getLightState(t,e=!1){let n,r;return e||(n=this.getValue("light"),n&&n.lastEvent&&delete n.lastEvent),r=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},lastEvent:n},r}getSirenState(t,e=!1){let n,r;if(e||(n=this.getValue("siren"),n&&n.lastEvent&&delete n.lastEvent),this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,level:e.level??n?.level??0,lastEvent:n}}return r}getBatteryState(t,e=!1){let n,r;return e||(n=this.getValue("battery"),n&&n.lastEvent&&delete n.lastEvent),r=this.isStateEvent(t)?t:{...{...t,timestamp:Date.now()},charging:t.charging??n?.charging??!1,lowBattery:t.lowBattery??n?.lowBattery??!1,lastEvent:n},r}cleanState(t){const e=c(t);return"timestamp"in e&&delete e.timestamp,"lastEvent"in e&&delete e.lastEvent,e}isStateEvent(t){return"timestamp"in t}createStateObservable(t){return t.pipe((void 0===n&&(n=Y),e=null!=e?e:lt,Q((function(t,r){var i,s=!0;t.subscribe(Z(r,(function(t){var o=n(t);!s&&e(i,o)||(s=!1,i=o,r.next(t))})))}))),ct({connector:()=>new K(1)}));var e,n}}class ke{delegate;onRequest;constructor(t){this.onRequest=t}async snapshot(){return this.delegate?this.delegate.snapshot():this._onRequest("snapshot",[],5e3)}_onRequest(t,e,n){return this.onRequest("cameraDelegate",t,e,n)}}class Pe{delegate;onRequest;constructor(t){this.onRequest=t}async moveAbsolute(t,e,n){return this.delegate?this.delegate.moveAbsolute(t,e,n):this._onRequest("moveAbsolute",[t,e,n])}async moveRelative(t,e,n){return this.delegate?this.delegate.moveRelative(t,e,n):this._onRequest("moveRelative",[t,e,n])}async moveContinuous(t,e,n){return this.delegate?this.delegate.moveContinuous(t,e,n):this._onRequest("moveContinuous",[t,e,n])}async stop(){return this.delegate?this.delegate.stop():this._onRequest("stop",[])}_onRequest(t,e,n){return this.onRequest("ptzDelegate",t,e,n)}}const Te=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}));class Me extends EventTarget{cameraDevice;socketService;logger;options;videoPlayer;socket;streamId;hasBackchannel=!1;hasAudio=!0;closed=!1;pc=null;micTransceiver=null;buf=new Uint8Array(2097152);mediaSource=null;sourceBuffer=null;bufLen=0;mseCodecs="";videoPlayerMp4;media=["video","audio","microphone"];codecList=[];wsReconnectTimeout;webrtcConnectTimeout;webrtcReconnectTimeout;wsReconnectTimer;webrtcReconnectTimer=1e3;webrtcTimeoutTimer=2e3;_finishLoading=!1;_firstFrameReceived=!1;animationFrameId;isAutoSwitching=!1;get mode(){return this.options.mode}get logPrefix(){return"auto"===this.options.mode||this.isAutoSwitching?`[${this.cameraDevice.name}] [auto]`:`[${this.cameraDevice.name}] [${this.options.mode}]`}constructor(t,e,n,r){super(),this.options=r,this.videoPlayer=r.videoElement,this.cameraDevice=t,this.socketService=e,this.logger=n,this.webrtcTimeoutTimer=r.webrtcConnectTimeout??this.webrtcTimeoutTimer;const{socket:i}=this.socketService.getSocket(`${t.id}-go2rtcSession`,!0);this.socket=i,this.socket.connect(),this.streamId=Te(),this.createCodecsList()}connect(t){t&&this.setMode(t),"auto"===this.options.mode&&(this.isAutoSwitching=!0),console.log(this.logPrefix,"Connecting..."),this.socket.on("ws-open",this.onWsOpen.bind(this)),this.socket.on("ws-close",this.onWsClose.bind(this)),this.socket.on("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-open",{id:this.streamId,cameraSource:this.options.sourceName,mode:this.options.mode})}disconnect(){console.log(this.logPrefix,"Disconnecting..."),this.socket.removeListener("ws-open",this.onWsOpen.bind(this)),this.socket.removeListener("ws-close",this.onWsClose.bind(this)),this.socket.removeListener("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-close",{id:this.streamId})}async reconnect(t){console.log(this.logPrefix,"Reconnecting..."),this.dispatchEvent(new Event("reconnect")),this.close(),await new Promise((t=>setTimeout(t,100))),this.connect(t)}reset(){this._finishLoading=!1,this._firstFrameReceived=!1,clearTimeout(this.wsReconnectTimeout),clearTimeout(this.webrtcConnectTimeout),clearTimeout(this.webrtcReconnectTimeout),this.micTransceiver?.sender.replaceTrack(null).catch((()=>{})),this.micTransceiver=null,this.pc?.getTransceivers().forEach((t=>t.sender?.track?.stop())),this.pc?.close(),this.pc=null,this.videoPlayerMp4?.remove(),this.videoPlayerMp4=void 0,this.videoPlayer.srcObject=null,this.videoPlayer.src="",this.videoPlayer.poster="",void 0!==this.animationFrameId&&("cancelVideoFrameCallback"in this.videoPlayer?this.videoPlayer.cancelVideoFrameCallback(this.animationFrameId):cancelAnimationFrame(this.animationFrameId),this.animationFrameId=void 0)}close(){console.log(this.logPrefix,"Closing..."),this.closed=!0,this.reset(),this.disconnect(),this.socket.emit("end"),this.socket.removeAllListeners()}async toggleMicrophone(t){if(this.micTransceiver)try{await this.micTransceiver.sender.replaceTrack(t)}catch(e){if(!this.micTransceiver||!t)return;console.log(this.logPrefix,"Microphone error:",e)}}onWsOpen({id:t}){if(t===this.streamId)switch(console.log(this.logPrefix,"Connected"),this.options.mode){case"webrtc":case"webrtc/tcp":console.log(this.logPrefix,"Requesting WebRTC session..."),this.requestWebrtc();break;case"mse":console.log(this.logPrefix,"Requesting MSE session..."),this.requestMse();break;case"auto":console.log(this.logPrefix,"Requesting auto session..."),this.requestAuto();break;case"hls":console.log(this.logPrefix,"Requesting HLS session..."),this.requestHls();break;case"mp4":console.log(this.logPrefix,"Requesting MP4 session..."),this.requestMp4();break;case"mjpeg":console.log(this.logPrefix,"Requesting MJPEG session..."),this.requestMjpeg();break;default:console.error(this.logPrefix,"Unknown mode!"),this.dispatchEvent(new ErrorEvent("error",{message:"Unknown mode!"}))}}onWsClose({id:t}){t===this.streamId&&(this.closed||void 0===this.wsReconnectTimer||(clearTimeout(this.wsReconnectTimeout),this.wsReconnectTimeout=setTimeout((()=>{this.reconnect()}),this.wsReconnectTimer)))}onWsMessage({id:t,data:e}){if(t===this.streamId&&e.type){switch(e.type){case"mse":this.onMseData(e);break;case"hls":this.onHlsData(e);break;case"webrtc/candidate":case"webrtc/answer":this.onWebrtcData(e);break;case"mse-binary":this.onMseBuffer(e);break;case"mjpeg-binary":this.onMjpegBuffer(e);break;case"mp4-binary":this.onMp4Buffer(e);break;case"stream-info":this.onStreamInfo(e);break;case"error":this.isAutoSwitching||this.dispatchEvent(new ErrorEvent("error",{error:e,message:e.value}))}["mse-binary","mjpeg-binary","mp4-binary"].includes(e.type)&&this.onFirstFrame()}}async requestWebrtc(t){t||this.reset(),t&&this.mediaSource||(this.webrtcConnectTimeout=setTimeout((()=>{console.log(this.logPrefix,"WebRTC connection timeout - switching to MSE"),this.pc&&"connected"!==this.pc.connectionState&&(this.pc.close(),this.pc=null,t||this.reconnect("mse"))}),this.webrtcTimeoutTimer)),this.pc=new RTCPeerConnection({bundlePolicy:"max-bundle",iceServers:[{urls:"stun:stun.l.google.com:19302"}],sdpSemantics:"unified-plan"}),this.pc.onicecandidate=t=>{if(console.log(this.logPrefix,"onicecandidate",t.candidate),"webrtc/tcp"===this.options.mode&&"udp"===t.candidate?.protocol)return;const e=t.candidate?.toJSON().candidate??"";this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/candidate",value:e}})},this.pc.onconnectionstatechange=async()=>{if(console.log(this.logPrefix,"onconnectionstatechange:",this.pc?.connectionState),"connected"===this.pc?.connectionState){clearTimeout(this.webrtcConnectTimeout);const t=new MediaStream(this.pc.getTransceivers().filter((t=>"recvonly"===t.currentDirection)).map((t=>t.receiver.track)));this.isAutoSwitching?await this.handleAutoMode(t):(this.videoPlayer.srcObject=t,this.onFinishLoading(),this.onFirstFrameWebrtc(t),this.play())}else"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||(clearTimeout(this.webrtcConnectTimeout),clearTimeout(this.webrtcReconnectTimeout),this.webrtcReconnectTimeout=setTimeout((()=>{"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||(this.isAutoSwitching&&this.mediaSource?this.pc&&(this.pc.close(),this.pc=null):"webrtc"===this.options.mode?(console.log(this.logPrefix,"WebRTC failed - switching to MSE"),this.reconnect("mse")):this.reconnect())}),this.webrtcReconnectTimer))},this.pc.oniceconnectionstatechange=()=>{console.log(this.logPrefix,"iceconnectionstatechange",this.pc?.iceConnectionState)},this.pc.onicecandidateerror=t=>{console.log(this.logPrefix,"onicecandidateerror",t)},this.pc.onsignalingstatechange=()=>{console.log(this.logPrefix,"onsignalingstatechange",this.pc?.signalingState)},this.pc.onicegatheringstatechange=()=>{console.log(this.logPrefix,"onicegatheringstatechange",this.pc?.iceGatheringState)},this.pc.onnegotiationneeded=t=>{console.log(this.logPrefix,"onnegotiationneeded",t)},this.pc.addTransceiver("video",{direction:"recvonly"}),this.pc.addTransceiver("audio",{direction:"recvonly"}),this.micTransceiver=this.pc.addTransceiver("audio",{direction:"sendonly"});const e=await this.pc.createOffer();await this.pc.setLocalDescription(e),console.log(this.logPrefix,"Offer:",e.sdp),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/offer",value:e.sdp}})}async onWebrtcData(t){try{switch(t.type){case"webrtc/candidate":if(console.log(this.logPrefix,"remote candidate:",t.value),"webrtc/tcp"===this.options.mode&&t.value.indexOf(" udp ")>0)return;await(this.pc?.addIceCandidate({candidate:t.value,sdpMid:"0"}));break;case"webrtc/answer":console.log(this.logPrefix,"Answer:",t.value),await(this.pc?.setRemoteDescription({type:"answer",sdp:t.value}));break;case"error":if(console.log(this.logPrefix,"WebRTC Error:",t.value),t.value.indexOf("webrtc/offer")<0)return;this.pc?.close()}}catch(t){this.dispatchEvent(new ErrorEvent("error",{error:t,message:t.message}))}}requestMse(){if(this.reset(),"ManagedMediaSource"in window){console.log(this.logPrefix,"Using ManagedMediaSource");const t=window.ManagedMediaSource;this.mediaSource=new t,this.mediaSource.addEventListener("sourceopen",(()=>{this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(t.isTypeSupported.bind(this))}})}),{once:!0}),this.videoPlayer.disableRemotePlayback=!0,this.videoPlayer.srcObject=this.mediaSource}else console.log(this.logPrefix,"Using MediaSource"),this.mediaSource=new MediaSource,this.mediaSource.addEventListener("sourceopen",(()=>{URL.revokeObjectURL(this.videoPlayer.src),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(MediaSource.isTypeSupported.bind(this))}})}),{once:!0}),this.videoPlayer.src=URL.createObjectURL(this.mediaSource),this.videoPlayer.srcObject=null;this.play(),this.mseCodecs=""}onMseData(t){this.mediaSource&&(this.setMode("mse"),this.mseCodecs=t.value,this.bufLen=0,this.buf=new Uint8Array(2097152),this.sourceBuffer=this.mediaSource.addSourceBuffer(t.value),this.sourceBuffer.mode="segments",this.sourceBuffer.addEventListener("updateend",(()=>{if(!this.sourceBuffer?.updating)try{if(this.bufLen>0){const t=this.buf.slice(0,this.bufLen);this.bufLen=0,this.sourceBuffer?.appendBuffer(t)}else if(this.sourceBuffer?.buffered?.length){const t=this.sourceBuffer.buffered.end(this.sourceBuffer.buffered.length-1)-15,e=this.sourceBuffer.buffered.start(0);t>e&&(this.sourceBuffer.remove(e,t),this.mediaSource?.setLiveSeekableRange(t,t+15))}}catch{}})),this.onFinishLoading())}async onMseBuffer(t){if("closed"!==this.mediaSource?.readyState)if(this.sourceBuffer?.updating||this.bufLen>0){const e=new Uint8Array(t.value);this.buf.set(e,this.bufLen),this.bufLen+=e.byteLength}else try{this.sourceBuffer?.appendBuffer(t.value)}catch{}else this.closed||this.isAutoSwitching||(this.closed=!0,this.dispatchEvent(new ErrorEvent("error",{message:"MediaSource closed"})),this.requestWebrtc())}requestAuto(){this.requestMse(),this.requestWebrtc(!0)}requestMjpeg(){this.reset(),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mjpeg"}})}onMjpegBuffer(t){this.setMode("mjpeg"),this.videoPlayer.controls=!1,this.videoPlayer.poster="data:image/jpeg;base64,"+this.btoaBinary(t.value),this.onFinishLoading()}requestMp4(){this.reset();const t=document.createElement("canvas");let e=null;this.videoPlayerMp4=document.createElement("video"),this.videoPlayerMp4.autoplay=!0,this.videoPlayerMp4.playsInline=!0,this.videoPlayerMp4.muted=!0,this.videoPlayerMp4.addEventListener("loadeddata",(()=>{this.videoPlayerMp4&&(e||(t.width=this.videoPlayerMp4.videoWidth,t.height=this.videoPlayerMp4.videoHeight,e=t.getContext("2d")),e?.drawImage(this.videoPlayerMp4,0,0,t.width,t.height),this.videoPlayer.controls=!1,this.videoPlayer.poster=t.toDataURL("image/jpeg"))}));const n=this.codecList.filter((t=>this.media.includes(t.indexOf("vc1")>0?"video":"audio"))).filter((t=>this.videoPlayer.canPlayType(`video/mp4; codecs="${t}"`))).join();console.log(this.logPrefix,"Playable codecs (MP4):",n),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mp4",value:n}})}onMp4Buffer(t){this.setMode("mp4"),this.videoPlayerMp4&&(this.videoPlayerMp4.src="data:video/mp4;base64,"+this.btoaBinary(t.value)),this.onFinishLoading()}requestHls(){this.reset();const t=this.parseCodecs((t=>this.videoPlayer.canPlayType(t)));console.log(this.logPrefix,"Playable codecs (HLS):",t),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"hls",value:t}})}onHlsData(t){this.setMode("hls");const e="http"+t.wsURL.substring(2,t.wsURL.indexOf("/ws"))+"/hls/",n=t.value.replace("hls/",e),r="data:application/vnd.apple.mpegurl;base64,"+btoa(n.toString());this.videoPlayer.src=r,this.onFinishLoading(),this.play()}async handleAutoMode(t){if(!this.isAutoSwitching)return;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0],r=this.evaluateStreamQuality(e,n),i=this.evaluateMSEQuality();console.log(this.logPrefix,"Stream quality comparison:",{rtcPriority:r,msePriority:i,hasVideo:!!e,hasAudio:!!n,mseCodecs:this.mseCodecs}),r>=i?((this._finishLoading||this._firstFrameReceived||"webrtc"!==this.options.mode)&&this.dispatchEvent(new Event("onModeChange")),this.setMode("webrtc"),this.videoPlayer.srcObject=t,this.onFinishLoading(!0),this.onFirstFrameWebrtc(t),this.play(),this.disconnect(),this.mediaSource&&("open"===this.mediaSource.readyState&&this.mediaSource.endOfStream(),this.mediaSource=null,this.sourceBuffer=null)):this.pc&&(this.pc.close(),this.pc=null),this.isAutoSwitching=!1}evaluateStreamQuality(t,e){let n=0;return t&&(n+=544),e&&(n+=258),n}evaluateMSEQuality(){let t=0;return this.mseCodecs.includes("hvc1.")&&(t+=560),this.mseCodecs.includes("avc1.")&&(t+=528),this.mseCodecs.includes("mp4a.")&&(t+=257),t}onStreamInfo(t){const e=t.value,n=e?.producers[0];n&&(this.hasBackchannel=n.senders?.some((t=>"audio"===t.codec.codec_type))??!1,this.hasAudio=n.receivers?.some((t=>"audio"===t.codec.codec_type))??!1)}async play(){try{await this.videoPlayer.play()}catch(t){if(!this.videoPlayer.muted)return this.videoPlayer.muted=!0,this.play();this.logger.warn(this.cameraDevice.name,t)}}onFirstFrameWebrtc(t){const e=this.isAutoSwitching,n=t.getVideoTracks()[0];if((!this._firstFrameReceived||e)&&n)if("requestVideoFrameCallback"in n)this.animationFrameId=n.requestVideoFrameCallback((()=>{this.onFirstFrame(e)}));else{const t=()=>{this.videoPlayer.readyState>=2&&this.videoPlayer.videoWidth>0?this.onFirstFrame(e):this.animationFrameId=requestAnimationFrame(t)};this.animationFrameId=requestAnimationFrame(t)}}onFirstFrame(t){this._firstFrameReceived&&!t||(console.log(this.logPrefix,"First frame received"),this._firstFrameReceived=!0,this.dispatchEvent(new Event("onFirstFrame")))}onFinishLoading(t){this._finishLoading&&!t||(this._finishLoading=!0,this.dispatchEvent(new Event("onFinishLoading")))}setMode(t){this.options.mode!==t&&(console.log(this.logPrefix,`Mode changed: ${this.options.mode} -> ${t}`),this.options.mode=t)}createCodecsList(){const t=["avc1.640029","avc1.64002A","avc1.640033","hvc1.1.6.L153.B0","mp4a.40.2","mp4a.40.5","flac","opus"],e="undefined"==typeof window?null:/Version\/(\d+).+Safari/.exec(navigator.userAgent);if(e?.[1]){const n=e[1]<"13"?"mp4a.40.2":e[1]<"14"?"flac":"opus";t.splice(t.indexOf(n))}this.codecList=t}parseCodecs(t){return this.codecList.filter((t=>this.media.includes(t.indexOf("vc1")>0?"video":"audio"))).filter((e=>t(`video/mp4; codecs="${e}"`))).join()}btoaBinary(t){const e=new Uint8Array(t),n=e.byteLength;let r="";for(let t=0;t<n;t++)r+=String.fromCharCode(e[t]);return window.btoa(r)}}class Re extends Ee{socketService;socket;pluginName="@camera.ui/client";subject;_started=!1;get started(){return this._started}cameraDelegate=new ke(this.onRequest.bind(this));ptzDelegate=new Pe(this.onRequest.bind(this));get sources(){return JSON.parse(JSON.stringify(this.cameraSubject.getValue().sources)).filter((t=>!t.internal)).map((t=>({...t,probeStream:(e,n=!1)=>this.onRequest("cameraFn","probeStream",[t._id,e,n]),getInternalSource:e=>this.internalSources.find((n=>n._id===`${t._id}-${e}`))})))}get internalSources(){return JSON.parse(JSON.stringify(this.cameraSubject.getValue().sources)).filter((t=>t.internal)).map((t=>({...t,probeStream:(e,n=!1)=>this.onRequest("cameraFn","probeStream",[t._id,e,n]),type:t.name.endsWith(" AAC")?"aac":t.name.endsWith(" OPUS")?"opus":"pcma"})))}constructor(t,e,n){super(t,n),this.socketService=e;const{socket:r}=this.socketService.getSocket(this.id,!0);this.socket=r,this.socket.connect(),this.subject=`${this.pluginName}.camera.${this.id}`,this.listenToMessages()}async start(){this._started||(this._started=!0,await this.refreshStates(),this.socket.emit("joinRoomStates",this.id))}stop(){this._started=!1,this.socket.emit("leaveRoomStates",this.id)}close(){this.cleanup()}connect(){return this.onRequest("cameraFn","connect")}disconnect(){return this.onRequest("cameraFn","disconnect")}createWebRTCSession(t){return new Me(this,this.socketService,this.logger,t)}async refreshStates(){const t=await this.onRequest("cameraFn","refreshStates");super.updateCamera(t.camera),super.updateCameraState(t.cameraState);for(const[e,n]of Object.entries(t.states))super.updateStateInternal(e,n,!0)}async cleanup(){this.stop(),this.removeAllListeners(),this.unsubscribe(),this.socket.removeAllListeners()}listenToMessages(){this.socket.emit("joinRoomDevice",this.id),this.socket.on("updateState",(t=>{t.cameraId===this.id&&super.updateStateInternal(t.stateName,t.data.newEvent,!0)})),this.socket.on("updateDevice",(t=>{if(t.cameraId===this.id)switch(t.type){case"removed":this.cleanup();break;case"updated":super.updateCamera(t.data);break;case"cameraState":super.updateCameraState(t.data)}}))}onRequest(t,e,n=[]){const r={requestId:Te(),targetId:this.subject,targetName:this.name,pluginId:this.pluginName,cameraId:this.id,type:"request",proxy:"camera",client:t,fn:e,args:n,timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",r,(n=>{n.error?e(n.error):t(n.response)}))}))}}class Oe{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(t,e){this.socketService=t,this.socket=t.socket,this.logger=e,this.subject=`${this.pluginName}.coreManager`}async getFFmpegPath(){return this.onRequest("getFFmpegPath")}async getHwaccelInfo(t){return this.onRequest("getHwaccelInfo",[t])}async getServerAddresses(){return this.onRequest("getServerAddresses")}async getIceServers(){return this.onRequest("getIceServers")}onRequest(t,e){const n={requestId:Te(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"core",client:"coreFn",fn:t,args:e??[],timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",n,(n=>{n.error?e(n.error):t(n.response)}))}))}}class Ae{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(t,e){this.socketService=t,this.socket=t.socket,this.logger=e,this.subject=`${this.pluginName}.deviceManager`}async getCameraById(t){const e=await this.onRequest("getCameraById",[t]);if(e){const t=new Re(e,this.socketService,this.logger);return await t.refreshStates(),t}}async getCameraByName(t){const e=await this.onRequest("getCameraByName",[t]);if(e){const t=new Re(e,this.socketService,this.logger);return await t.refreshStates(),t}}onRequest(t,e){const n={requestId:Te(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"device",client:"deviceFn",fn:t,args:e??[],timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",n,(n=>{n.error?e(n.error):t(n.response)}))}))}}const Ce=Object.create(null);Ce.open="0",Ce.close="1",Ce.ping="2",Ce.pong="3",Ce.message="4",Ce.upgrade="5",Ce.noop="6";const Le=Object.create(null);Object.keys(Ce).forEach((t=>{Le[Ce[t]]=t}));const Be={type:"error",data:"parser error"},Ie="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),je="function"==typeof ArrayBuffer,Ne=t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer,qe=({type:t,data:e},n,r)=>Ie&&e instanceof Blob?n?r(e):Fe(e,r):je&&(e instanceof ArrayBuffer||Ne(e))?n?r(e):Fe(new Blob([e]),r):r(Ce[t]+(e||"")),Fe=(t,e)=>{const n=new FileReader;return n.onload=function(){const t=n.result.split(",")[1];e("b"+(t||""))},n.readAsDataURL(t)};function De(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}let Ue;const Ve="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let t=0;t<64;t++)Ve["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(t)]=t;const Ye="function"==typeof ArrayBuffer,ze=(t,e)=>{if("string"!=typeof t)return{type:"message",data:We(t,e)};const n=t.charAt(0);return"b"===n?{type:"message",data:$e(t.substring(1),e)}:Le[n]?t.length>1?{type:Le[n],data:t.substring(1)}:{type:Le[n]}:Be},$e=(t,e)=>{if(Ye){const n=(t=>{let e,n,r,i,s,o=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);const h=new ArrayBuffer(o),u=new Uint8Array(h);for(e=0;e<a;e+=4)n=Ve[t.charCodeAt(e)],r=Ve[t.charCodeAt(e+1)],i=Ve[t.charCodeAt(e+2)],s=Ve[t.charCodeAt(e+3)],u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|i>>2,u[c++]=(3&i)<<6|63&s;return h})(t);return We(n,e)}return{base64:!0,data:t}},We=(t,e)=>"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer,Xe=String.fromCharCode(30);let Ge;function He(t){return t.reduce(((t,e)=>t+e.length),0)}function Je(t,e){if(t[0].length===e)return t.shift();const n=new Uint8Array(e);let r=0;for(let i=0;i<e;i++)n[i]=t[0][r++],r===t[0].length&&(t.shift(),r=0);return t.length&&r<t[0].length&&(t[0]=t[0].slice(r)),n}function Ke(t){if(t)return function(t){for(var e in Ke.prototype)t[e]=Ke.prototype[e];return t}(t)}Ke.prototype.on=Ke.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},Ke.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},Ke.prototype.off=Ke.prototype.removeListener=Ke.prototype.removeAllListeners=Ke.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i<r.length;i++)if((n=r[i])===e||n.fn===e){r.splice(i,1);break}return 0===r.length&&delete this._callbacks["$"+t],this},Ke.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(n){r=0;for(var i=(n=n.slice(0)).length;r<i;++r)n[r].apply(this,e)}return this},Ke.prototype.emitReserved=Ke.prototype.emit,Ke.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},Ke.prototype.hasListeners=function(t){return!!this.listeners(t).length};const Qe="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),Ze="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function tn(t,...e){return e.reduce(((e,n)=>(t.hasOwnProperty(n)&&(e[n]=t[n]),e)),{})}const en=Ze.setTimeout,nn=Ze.clearTimeout;function rn(t,e){e.useNativeTimers?(t.setTimeoutFn=en.bind(Ze),t.clearTimeoutFn=nn.bind(Ze)):(t.setTimeoutFn=Ze.setTimeout.bind(Ze),t.clearTimeoutFn=Ze.clearTimeout.bind(Ze))}function sn(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}class on extends Error{constructor(t,e,n){super(t),this.description=e,this.context=n,this.type="TransportError"}}class an extends Ke{constructor(t){super(),this.writable=!1,rn(this,t),this.opts=t,this.query=t.query,this.socket=t.socket,this.supportsBinary=!t.forceBase64}onError(t,e,n){return super.emitReserved("error",new on(t,e,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const e=ze(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,e={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(e)}_hostname(){const t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(t){const e=function(t){let e="";for(let n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}(t);return e.length?"?"+e:""}}class cn extends an{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(t){this.readyState="pausing";const e=()=>{this.readyState="paused",t()};if(this._polling||!this.writable){let t=0;this._polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){((t,e)=>{const n=t.split(Xe),r=[];for(let t=0;t<n.length;t++){const i=ze(n[t],e);if(r.push(i),"error"===i.type)break}return r})(t,this.socket.binaryType).forEach((t=>{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};"open"===this.readyState?t():this.once("open",t)}write(t){this.writable=!1,((t,e)=>{const n=t.length,r=new Array(n);let i=0;t.forEach(((t,s)=>{qe(t,!1,(t=>{r[s]=t,++i===n&&e(r.join(Xe))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const t=this.opts.secure?"https":"http",e=this.query||{};return!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=sn()),this.supportsBinary||e.sid||(e.b64=1),this.createUri(t,e)}}let hn=!1;try{hn="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}const un=hn;function ln(){}class pn extends cn{constructor(t){if(super(t),"undefined"!=typeof location){const e="https:"===location.protocol;let n=location.port;n||(n=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||n!==t.port}}doWrite(t,e){const n=this.request({method:"POST",data:t});n.on("success",e),n.on("error",((t,e)=>{this.onError("xhr post error",t,e)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",((t,e)=>{this.onError("xhr poll error",t,e)})),this.pollXhr=t}}class fn extends Ke{constructor(t,e,n){super(),this.createRequest=t,rn(this,n),this._opts=n,this._method=n.method||"GET",this._uri=e,this._data=void 0!==n.data?n.data:null,this._create()}_create(){var t;const e=tn(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(e);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let t in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(t)&&n.setRequestHeader(t,this._opts.extraHeaders[t])}}catch(t){}if("POST"===this._method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}null===(t=this._opts.cookieJar)||void 0===t||t.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var t;3===n.readyState&&(null===(t=this._opts.cookieJar)||void 0===t||t.parseCookies(n.getResponseHeader("set-cookie"))),4===n.readyState&&(200===n.status||1223===n.status?this._onLoad():this.setTimeoutFn((()=>{this._onError("number"==typeof n.status?n.status:0)}),0))},n.send(this._data)}catch(t){return void this.setTimeoutFn((()=>{this._onError(t)}),0)}"undefined"!=typeof document&&(this._index=fn.requestsCount++,fn.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=ln,t)try{this._xhr.abort()}catch(t){}"undefined"!=typeof document&&delete fn.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function dn(){for(let t in fn.requests)fn.requests.hasOwnProperty(t)&&fn.requests[t].abort()}fn.requestsCount=0,fn.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",dn):"function"==typeof addEventListener&&addEventListener("onpagehide"in Ze?"pagehide":"unload",dn,!1));const gn=function(){const t=yn({xdomain:!1});return t&&null!==t.responseType}();function yn(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||un))return new XMLHttpRequest}catch(t){}if(!e)try{return new(Ze[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}const mn="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class bn extends an{get name(){return"websocket"}doOpen(){const t=this.uri(),e=this.opts.protocols,n=mn?{}:tn(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,e,n)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e<t.length;e++){const n=t[e],r=e===t.length-1;qe(n,this.supportsBinary,(t=>{try{this.doWrite(n,t)}catch(t){}r&&Qe((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",e=this.query||{};return this.opts.timestampRequests&&(e[this.opts.timestampParam]=sn()),this.supportsBinary||(e.b64=1),this.createUri(t,e)}}const vn=Ze.WebSocket||Ze.MozWebSocket,wn={websocket:class extends bn{createSocket(t,e,n){return mn?new vn(t,e,n):e?new vn(t,e):new vn(t)}doWrite(t,e){this.ws.send(e)}},webtransport:class extends an{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then((()=>{this.onClose()})).catch((t=>{this.onError("webtransport error",t)})),this._transport.ready.then((()=>{this._transport.createBidirectionalStream().then((t=>{const e=function(t,e){Ge||(Ge=new TextDecoder);const n=[];let r=0,i=-1,s=!1;return new TransformStream({transform(o,a){for(n.push(o);;){if(0===r){if(He(n)<1)break;const t=Je(n,1);s=!(128&~t[0]),i=127&t[0],r=i<126?3:126===i?1:2}else if(1===r){if(He(n)<2)break;const t=Je(n,2);i=new DataView(t.buffer,t.byteOffset,t.length).getUint16(0),r=3}else if(2===r){if(He(n)<8)break;const t=Je(n,8),e=new DataView(t.buffer,t.byteOffset,t.length),s=e.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(Be);break}i=s*Math.pow(2,32)+e.getUint32(4),r=3}else{if(He(n)<i)break;const t=Je(n,i);a.enqueue(ze(s?t:Ge.decode(t),e)),r=0}if(0===i||i>t){a.enqueue(Be);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=t.readable.pipeThrough(e).getReader(),r=new TransformStream({transform(t,e){!function(t,e){Ie&&t.data instanceof Blob?t.data.arrayBuffer().then(De).then(e):je&&(t.data instanceof ArrayBuffer||Ne(t.data))?e(De(t.data)):qe(t,!1,(t=>{Ue||(Ue=new TextEncoder),e(Ue.encode(t))}))}(t,(n=>{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const t=new DataView(i.buffer);t.setUint8(0,126),t.setUint16(1,r)}else{i=new Uint8Array(9);const t=new DataView(i.buffer);t.setUint8(0,127),t.setBigUint64(1,BigInt(r))}t.data&&"string"!=typeof t.data&&(i[0]|=128),e.enqueue(i),e.enqueue(n)}))}});r.readable.pipeTo(t.writable),this._writer=r.writable.getWriter();const i=()=>{n.read().then((({done:t,value:e})=>{t||(this.onPacket(e),i())})).catch((t=>{}))};i();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this._writer.write(s).then((()=>this.onOpen()))}))}))}write(t){this.writable=!1;for(let e=0;e<t.length;e++){const n=t[e],r=e===t.length-1;this._writer.write(n).then((()=>{r&&Qe((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var t;null===(t=this._transport)||void 0===t||t.close()}},polling:class extends pn{constructor(t){super(t);const e=t&&t.forceBase64;this.supportsBinary=gn&&!e}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new fn(yn,this.uri(),t)}}},xn=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Sn=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function _n(t){if(t.length>8e3)throw"URI too long";const e=t,n=t.indexOf("["),r=t.indexOf("]");-1!=n&&-1!=r&&(t=t.substring(0,n)+t.substring(n,r).replace(/:/g,";")+t.substring(r,t.length));let i=xn.exec(t||""),s={},o=14;for(;o--;)s[Sn[o]]=i[o]||"";return-1!=n&&-1!=r&&(s.source=e,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(t,e){const n=e.replace(/\/{2,9}/g,"/").split("/");return"/"!=e.slice(0,1)&&0!==e.length||n.splice(0,1),"/"==e.slice(-1)&&n.splice(n.length-1,1),n}(0,s.path),s.queryKey=function(t,e){const n={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,r){e&&(n[e]=r)})),n}(0,s.query),s}const En="function"==typeof addEventListener&&"function"==typeof removeEventListener,kn=[];En&&addEventListener("offline",(()=>{kn.forEach((t=>t()))}),!1);class Pn extends Ke{constructor(t,e){if(super(),this.binaryType="arraybuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&"object"==typeof t&&(e=t,t=null),t){const n=_n(t);e.hostname=n.host,e.secure="https"===n.protocol||"wss"===n.protocol,e.port=n.port,n.query&&(e.query=n.query)}else e.host&&(e.hostname=_n(e.host).host);rn(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},e.transports.forEach((t=>{const e=t.prototype.name;this.transports.push(e),this._transportsByName[e]=t})),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},e),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(t){let e={},n=t.split("&");for(let t=0,r=n.length;t<r;t++){let r=n[t].split("=");e[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return e}(this.opts.query)),En&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},kn.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const e=Object.assign({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);const n=Object.assign({},this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](n)}_open(){if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);const t=this.opts.rememberUpgrade&&Pn.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";const e=this.createTransport(t);e.open(),this.setTransport(e)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",(t=>this._onClose("transport close",t)))}onOpen(){this.readyState="open",Pn.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const e=new Error("server error");e.code=t.data,this._onError(e);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data)}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn((()=>{this._onClose("ping timeout")}),t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let n=0;n<this.writeBuffer.length;n++){const r=this.writeBuffer[n].data;if(r&&(t+="string"==typeof(e=r)?function(t){let e=0,n=0;for(let r=0,i=t.length;r<i;r++)e=t.charCodeAt(r),e<128?n+=1:e<2048?n+=2:e<55296||e>=57344?n+=3:(r++,n+=4);return n}(e):Math.ceil(1.33*(e.byteLength||e.size))),n>0&&t>this._maxPayload)return this.writeBuffer.slice(0,n);t+=2}var e;return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,Qe((()=>{this._onClose("ping timeout")}),this.setTimeoutFn)),t}write(t,e,n){return this._sendPacket("message",t,e,n),this}send(t,e,n){return this._sendPacket("message",t,e,n),this}_sendPacket(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const i={type:t,data:e,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},e=()=>{this.off("upgrade",e),this.off("upgradeError",e),t()},n=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():t()})):this.upgrading?n():t()),this}_onError(t){if(Pn.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),En&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const t=kn.indexOf(this._offlineEventListener);-1!==t&&kn.splice(t,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this._prevBufferLen=0}}}Pn.protocol=4;class Tn extends Pn{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade)for(let t=0;t<this._upgrades.length;t++)this._probe(this._upgrades[t])}_probe(t){let e=this.createTransport(t),n=!1;Pn.priorWebsocketSuccess=!1;const r=()=>{n||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(t=>{if(!n)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",e),!e)return;Pn.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(h(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emitReserved("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{const t=new Error("probe error");t.transport=e.name,this.emitReserved("upgradeError",t)}})))};function i(){n||(n=!0,h(),e.close(),e=null)}const s=t=>{const n=new Error("probe error: "+t);n.transport=e.name,i(),this.emitReserved("upgradeError",n)};function o(){s("transport closed")}function a(){s("socket closed")}function c(t){e&&t.name!==e.name&&i()}const h=()=>{e.removeListener("open",r),e.removeListener("error",s),e.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};e.once("open",r),e.once("error",s),e.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{n||e.open()}),200):e.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const e=[];for(let n=0;n<t.length;n++)~this.transports.indexOf(t[n])&&e.push(t[n]);return e}}class Mn extends Tn{constructor(t,e={}){const n="object"==typeof t?t:e;(!n.transports||n.transports&&"string"==typeof n.transports[0])&&(n.transports=(n.transports||["polling","websocket","webtransport"]).map((t=>wn[t])).filter((t=>!!t))),super(t,n)}}const Rn="function"==typeof ArrayBuffer,On=t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer,An=Object.prototype.toString,Cn="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===An.call(Blob),Ln="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===An.call(File);function Bn(t){return Rn&&(t instanceof ArrayBuffer||On(t))||Cn&&t instanceof Blob||Ln&&t instanceof File}function In(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(In(t[e]))return!0;return!1}if(Bn(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return In(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&In(t[e]))return!0;return!1}function jn(t){const e=[],n=t.data,r=t;return r.data=Nn(n,e),r.attachments=e.length,{packet:r,buffers:e}}function Nn(t,e){if(!t)return t;if(Bn(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}if(Array.isArray(t)){const n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=Nn(t[r],e);return n}if("object"==typeof t&&!(t instanceof Date)){const n={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=Nn(t[r],e));return n}return t}function qn(t,e){return t.data=Fn(t.data,e),delete t.attachments,t}function Fn(t,e){if(!t)return t;if(t&&!0===t._placeholder){if("number"==typeof t.num&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=Fn(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=Fn(t[n],e));return t}const Dn=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],Un=5;var Vn;!function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(Vn||(Vn={}));class Yn{constructor(t){this.replacer=t}encode(t){return t.type!==Vn.EVENT&&t.type!==Vn.ACK||!In(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===Vn.EVENT?Vn.BINARY_EVENT:Vn.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==Vn.BINARY_EVENT&&t.type!==Vn.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=jn(t),n=this.encodeAsString(e.packet),r=e.buffers;return r.unshift(n),r}}function zn(t){return"[object Object]"===Object.prototype.toString.call(t)}class $n extends Ke{constructor(t){super(),this.reviver=t}add(t){let e;if("string"==typeof t){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");e=this.decodeString(t);const n=e.type===Vn.BINARY_EVENT;n||e.type===Vn.BINARY_ACK?(e.type=n?Vn.EVENT:Vn.ACK,this.reconstructor=new Wn(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!Bn(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emitReserved("decoded",e))}}decodeString(t){let e=0;const n={type:Number(t.charAt(0))};if(void 0===Vn[n.type])throw new Error("unknown packet type "+n.type);if(n.type===Vn.BINARY_EVENT||n.type===Vn.BINARY_ACK){const r=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const i=t.substring(r,e);if(i!=Number(i)||"-"!==t.charAt(e))throw new Error("Illegal attachments");n.attachments=Number(i)}if("/"===t.charAt(e+1)){const r=e+1;for(;++e&&","!==t.charAt(e)&&e!==t.length;);n.nsp=t.substring(r,e)}else n.nsp="/";const r=t.charAt(e+1);if(""!==r&&Number(r)==r){const r=e+1;for(;++e;){const n=t.charAt(e);if(null==n||Number(n)!=n){--e;break}if(e===t.length)break}n.id=Number(t.substring(r,e+1))}if(t.charAt(++e)){const r=this.tryParse(t.substr(e));if(!$n.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(t){try{return JSON.parse(t,this.reviver)}catch(t){return!1}}static isPayloadValid(t,e){switch(t){case Vn.CONNECT:return zn(e);case Vn.DISCONNECT:return void 0===e;case Vn.CONNECT_ERROR:return"string"==typeof e||zn(e);case Vn.EVENT:case Vn.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===Dn.indexOf(e[0]));case Vn.ACK:case Vn.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Wn{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=qn(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function Xn(t,e,n){return t.on(e,n),function(){t.off(e,n)}}const Gn=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Hn extends Ke{constructor(t,e,n){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=e,n&&n.auth&&(this.auth=n.auth),this._opts=Object.assign({},n),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[Xn(t,"open",this.onopen.bind(this)),Xn(t,"packet",this.onpacket.bind(this)),Xn(t,"error",this.onerror.bind(this)),Xn(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...e){var n,r,i;if(Gn.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(e.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(e),this;const s={type:Vn.EVENT,data:e,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof e[e.length-1]){const t=this.ids++,n=e.pop();this._registerAckCallback(t,n),s.id=t}const o=null===(r=null===(n=this.io.engine)||void 0===n?void 0:n.transport)||void 0===r?void 0:r.writable,a=this.connected&&!(null===(i=this.io.engine)||void 0===i?void 0:i._hasPingExpired());return this.flags.volatile&&!o||(a?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(t,e){var n;const r=null!==(n=this.flags.timeout)&&void 0!==n?n:this._opts.ackTimeout;if(void 0===r)return void(this.acks[t]=e);const i=this.io.setTimeoutFn((()=>{delete this.acks[t];for(let e=0;e<this.sendBuffer.length;e++)this.sendBuffer[e].id===t&&this.sendBuffer.splice(e,1);e.call(this,new Error("operation has timed out"))}),r),s=(...t)=>{this.io.clearTimeoutFn(i),e.apply(this,t)};s.withError=!0,this.acks[t]=s}emitWithAck(t,...e){return new Promise(((n,r)=>{const i=(t,e)=>t?r(t):n(e);i.withError=!0,e.push(i),this.emit(t,...e)}))}_addToQueue(t){let e;"function"==typeof t[t.length-1]&&(e=t.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push(((t,...r)=>{if(n===this._queue[0])return null!==t?n.tryCount>this._opts.retries&&(this._queue.shift(),e&&e(t)):(this._queue.shift(),e&&e(null,...r)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||0===this._queue.length)return;const e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((t=>{this._sendConnectPacket(t)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Vn.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((t=>{if(!this.sendBuffer.some((e=>String(e.id)===t))){const e=this.acks[t];delete this.acks[t],e.withError&&e.call(this,new Error("socket has been disconnected"))}}))}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case Vn.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Vn.EVENT:case Vn.BINARY_EVENT:this.onevent(t);break;case Vn.ACK:case Vn.BINARY_ACK:this.onack(t);break;case Vn.DISCONNECT:this.ondisconnect();break;case Vn.CONNECT_ERROR:this.destroy();const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const n of e)n.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}ack(t){const e=this;let n=!1;return function(...r){n||(n=!0,e.packet({type:Vn.ACK,id:t,data:r}))}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(delete this.acks[t.id],e.withError&&t.data.unshift(null),e.apply(this,t.data))}onconnect(t,e){this.id=t,this.recovered=e&&this._pid===e,this._pid=e,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>{this.notifyOutgoingListeners(t),this.packet(t)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Vn.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let n=0;n<e.length;n++)if(t===e[n])return e.splice(n,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const e=this._anyOutgoingListeners;for(let n=0;n<e.length;n++)if(t===e[n])return e.splice(n,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const e=this._anyOutgoingListeners.slice();for(const n of e)n.apply(this,t.data)}}}function Jn(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}Jn.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=1&Math.floor(10*e)?t+n:t-n}return 0|Math.min(t,this.max)},Jn.prototype.reset=function(){this.attempts=0},Jn.prototype.setMin=function(t){this.ms=t},Jn.prototype.setMax=function(t){this.max=t},Jn.prototype.setJitter=function(t){this.jitter=t};class Kn extends Ke{constructor(t,e){var n;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,rn(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(n=e.randomizationFactor)&&void 0!==n?n:.5),this.backoff=new Jn({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const r=e.parser||i;this.encoder=new r.Encoder,this.decoder=new r.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new Mn(this.uri,this.opts);const e=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=Xn(e,"open",(function(){n.onopen(),t&&t()})),i=e=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",e),t?t(e):this.maybeReconnectOnOpen()},s=Xn(e,"error",i);if(!1!==this._timeout){const t=this._timeout,n=this.setTimeoutFn((()=>{r(),i(new Error("timeout")),e.close()}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(r),this.subs.push(s),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Xn(t,"ping",this.onping.bind(this)),Xn(t,"data",this.ondata.bind(this)),Xn(t,"error",this.onerror.bind(this)),Xn(t,"close",this.onclose.bind(this)),Xn(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}ondecoded(t){Qe((()=>{this.emitReserved("packet",t)}),this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,e){let n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new Hn(this,t,e),this.nsps[t]=n),n}_destroy(t){const e=Object.keys(this.nsps);for(const t of e)if(this.nsps[t].active)return;this._close()}_packet(t){const e=this.encoder.encode(t);for(let n=0;n<e.length;n++)this.engine.write(e[n],t.options)}cleanup(){this.subs.forEach((t=>t())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,e){var n;this.cleanup(),null===(n=this.engine)||void 0===n||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):t.onreconnect()})))}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const Qn={};function Zn(t,e){"object"==typeof t&&(e=t,t=void 0);const n=function(t,e="",n){let r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=_n(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(t,(e=e||{}).path||"/socket.io"),r=n.source,i=n.id,s=n.path,o=Qn[i]&&s in Qn[i].nsps;let a;return e.forceNew||e["force new connection"]||!1===e.multiplex||o?a=new Kn(r,e):(Qn[i]||(Qn[i]=new Kn(r,e)),a=Qn[i]),n.query&&!e.query&&(e.query=n.queryKey),a.socket(n.path,e)}Object.assign(Zn,{Manager:Kn,Socket:Hn,io:Zn,connect:Zn});class tr{socket;token;endpoint;socketList=new Map;constructor(t,e){this.endpoint=t.replace("https://","wss://").replace("http://","ws://"),this.token=e,this.socket=this.getSocket("default").socket,this.socket.connect()}close(){this.socket.emit("end"),this.socket.removeAllListeners(),this.socket.disconnect()}getSocket(t,e){return this.createManager(e)}createManager(t){const e=new Kn(this.endpoint,{reconnection:!0,reconnectionAttempts:1/0,reconnectionDelay:1e3,reconnectionDelayMax:5e3,randomizationFactor:.5,timeout:2e4,autoConnect:!0,transports:["websocket","polling"],rejectUnauthorized:!1,secure:!0,forceNew:t}),n=e.socket("/proxy",{auth:{token:`Bearer ${this.token}`}});return{manager:e,socket:n}}}class er{api;socketService;config;logger;token;deviceManager;coreManager;constructor(t){this.config=t,this.logger=t.logger??{...console,attention:console.warn,success:console.log},this.api=new s(t.endpoint)}async connect(){return this.deviceManager&&this.coreManager||(this.cleanUpClient(),await this.login(),this.token=this.token??this.config.token,this.socketService=new tr(this.config.endpoint,this.token),this.coreManager=new Oe(this.socketService,this.logger),this.deviceManager=new Ae(this.socketService,this.logger),this.checkSession()),{coreManager:this.coreManager,deviceManager:this.deviceManager}}async disconnect(){this.socketService?.close(),this.cleanUpClient(),this.config.username&&this.config.password&&await this.api.post("/auth/logout",void 0,{headers:{Authorization:`Bearer ${this.token}`}})}async updateCredentials(t){this.config={...this.config,...t},this.socketService&&await this.disconnect(),await this.connect()}async login(){if(this.config.username&&this.config.password)try{const t=await this.api.post("/auth/login",{username:this.config.username,password:this.config.password}),e=await t.json();this.token=e.access_token}catch(t){throw 401===t.response?.status?new Error("Invalid credentials"):new Error(`Failed to get token: ${t.message}`)}else if(this.config.token&&!this.config.skipCheck)try{await this.api.get("/auth/check",{headers:{Authorization:`Bearer ${this.config.token}`}})}catch(t){throw new Error(`Invalid token: ${t.message}`)}this.token=this.token??this.config.token}getDeviceManager(){return this.deviceManager}checkSession(){this.socketService?.socket.removeListener("invalidToken"),this.socketService?.socket.on("invalidToken",(async t=>{t===this.token&&await this.disconnect()}))}cleanUpClient(){this.deviceManager=void 0}}var nr=r.j;export{nr as CameraUiClient};
|
|
@@ -2,7 +2,7 @@ import type { Observable, Subject } from 'rxjs';
|
|
|
2
2
|
import type { BaseCameraDevice } from '../../../../packages/plugineer/src/polyglot/node/camera/index.js';
|
|
3
3
|
import type { VideoStreamingMode } from '../../../../shared/types/index.js';
|
|
4
4
|
import type { Go2RTCSession } from './streaming/go2rts-session.js';
|
|
5
|
-
export type { AudioSetEvent, AudioState, BatterySetEvent, BatteryState,
|
|
5
|
+
export type { AudioSetEvent, AudioState, BatterySetEvent, BatteryState, CameraDetectionSettings, CameraRoles, CameraSource, CameraZone, Detection, DetectionZone, DoorbellState, LightSetEvent, LightState, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, Point, SirenSetEvent, SirenState, VideoStreamingMode, ZoneFilter, ZoneType, } from '../../../../shared/types/index.js';
|
|
6
6
|
export type { Go2RTCSession } from './streaming/go2rts-session.js';
|
|
7
7
|
export type CameraUiClientConfig = WithCredentials | WithToken;
|
|
8
8
|
export interface BasicBrowserPeerConnection {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Subscribed } from '@camera.ui/common/utils';
|
|
2
2
|
import TTLCache from '@isaacs/ttlcache';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import type { AudioSetEvent, AudioState, BatterySetEvent, BatteryState, Camera,
|
|
4
|
+
import type { AudioSetEvent, AudioState, BatterySetEvent, BatteryState, Camera, CameraDelegate, CameraDetectionSettings, CameraFrameWorkerSettings, CameraInformation, CameraInput, CameraInternalSource, CameraPTZDelegate, CameraSource, CameraType, DetectionZone, DoorbellSetEvent, DoorbellState, LightSetEvent, LightState, LoggerService, MotionSetEvent, MotionState, ObjectSetEvent, ObjectState, SetValues, SirenSetEvent, SirenState, StateValues } from '@camera.ui/types';
|
|
5
5
|
import type { Observable } from 'rxjs';
|
|
6
6
|
export declare abstract class BaseCameraDevice extends Subscribed {
|
|
7
7
|
readonly logger: LoggerService;
|
|
@@ -45,8 +45,8 @@ export declare abstract class BaseCameraDevice extends Subscribed {
|
|
|
45
45
|
get hasObjectDetector(): boolean;
|
|
46
46
|
get hasPtz(): boolean;
|
|
47
47
|
get snapshotTTL(): number;
|
|
48
|
-
get
|
|
49
|
-
get
|
|
48
|
+
get detectionZones(): DetectionZone[];
|
|
49
|
+
get detectionSettings(): CameraDetectionSettings;
|
|
50
50
|
get frameWorkerSettings(): CameraFrameWorkerSettings;
|
|
51
51
|
get streamSource(): CameraSource;
|
|
52
52
|
get snapshotSource(): CameraInput | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CameraDetectionSettings, Detection, DetectionZone } from '@camera.ui/types';
|
|
2
2
|
export declare const convertZonePointsToPixels: (zone: DetectionZone, detection: Detection) => DetectionZone;
|
|
3
3
|
export declare const convertBoundingBoxToPixels: (detection: Detection) => Detection;
|
|
4
|
-
export declare const areDetectionsValid: (detections: Detection[], zones: DetectionZone[], activitySettings:
|
|
4
|
+
export declare const areDetectionsValid: (detections: Detection[], zones: DetectionZone[], activitySettings: CameraDetectionSettings) => Detection[];
|
|
@@ -74,7 +74,7 @@ export interface MotionDetectionSettings {
|
|
|
74
74
|
export interface ObjectDetectionSettings {
|
|
75
75
|
confidence: number;
|
|
76
76
|
}
|
|
77
|
-
export interface
|
|
77
|
+
export interface CameraDetectionSettings {
|
|
78
78
|
motion: MotionDetectionSettings;
|
|
79
79
|
object: ObjectDetectionSettings;
|
|
80
80
|
}
|
|
@@ -445,18 +445,18 @@ export interface BaseCamera {
|
|
|
445
445
|
info: CameraInformation;
|
|
446
446
|
type: CameraType;
|
|
447
447
|
snapshotTTL: number;
|
|
448
|
-
|
|
449
|
-
|
|
448
|
+
detectionZone: CameraZone[];
|
|
449
|
+
detectionSettings: CameraDetectionSettings;
|
|
450
450
|
frameWorkerSettings: CameraFrameWorkerSettings;
|
|
451
451
|
}
|
|
452
|
-
export interface Camera extends Omit<BaseCamera, '
|
|
452
|
+
export interface Camera extends Omit<BaseCamera, 'detectionZone'> {
|
|
453
453
|
hasAudioDetector: boolean;
|
|
454
454
|
hasMotionDetector: boolean;
|
|
455
455
|
hasObjectDetector: boolean;
|
|
456
456
|
extendedMotionDetector: boolean;
|
|
457
457
|
hasPtz: boolean;
|
|
458
458
|
sources: CameraInput[];
|
|
459
|
-
|
|
459
|
+
detectionZones: DetectionZone[];
|
|
460
460
|
}
|
|
461
461
|
export interface CameraDevice {
|
|
462
462
|
readonly id: string;
|
|
@@ -478,8 +478,8 @@ export interface CameraDevice {
|
|
|
478
478
|
readonly hasAudioDetector: boolean;
|
|
479
479
|
readonly hasObjectDetector: boolean;
|
|
480
480
|
readonly hasPtz: boolean;
|
|
481
|
-
readonly
|
|
482
|
-
readonly
|
|
481
|
+
readonly detectionZones: DetectionZone[];
|
|
482
|
+
readonly detectionSettings: CameraDetectionSettings;
|
|
483
483
|
readonly frameWorkerSettings: CameraFrameWorkerSettings;
|
|
484
484
|
readonly ptz: CameraPTZDelegate;
|
|
485
485
|
readonly streamSource: CameraDeviceSource;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Database as DB, RootDatabase as RootDB } from 'lmdb';
|
|
2
2
|
import type { DBAuth, DBCamera, DBPlugin, DBSettings, DBSystem, DBUser } from './types.js';
|
|
3
3
|
export declare class Database {
|
|
4
|
-
static readonly VERSION = "1.0.
|
|
4
|
+
static readonly VERSION = "1.0.10";
|
|
5
5
|
authDB: RootDB<DBAuth, 'auth'>;
|
|
6
6
|
camerasDB: DB<DBCamera[], 'cameras'>;
|
|
7
7
|
pluginsDB: DB<DBPlugin[], 'plugins'>;
|
|
@@ -203,9 +203,9 @@ export declare const downloadBackupSchema: zod.ZodObject<{
|
|
|
203
203
|
export declare const restoreBackupSchema: zod.ZodObject<{
|
|
204
204
|
upload: zod.ZodType<MultipartFile>;
|
|
205
205
|
}, "strip", zod.ZodTypeAny, {
|
|
206
|
-
upload: MultipartFile
|
|
206
|
+
upload: zod.ZodType<MultipartFile>;
|
|
207
207
|
}, {
|
|
208
|
-
upload: MultipartFile
|
|
208
|
+
upload: zod.ZodType<MultipartFile>;
|
|
209
209
|
}>;
|
|
210
210
|
export type DownloadBackupInput = zod.TypeOf<typeof downloadBackupSchema>;
|
|
211
211
|
export type RestoreBackupInput = zod.TypeOf<typeof restoreBackupSchema>;
|
|
@@ -54,7 +54,7 @@ export declare const regionsSchema: zod.ZodObject<{
|
|
|
54
54
|
type?: "intersect" | "contain" | undefined;
|
|
55
55
|
isPrivacyMask?: boolean | undefined;
|
|
56
56
|
}>;
|
|
57
|
-
export declare const
|
|
57
|
+
export declare const detectionZoneSchema: zod.ZodObject<{
|
|
58
58
|
name: zod.ZodString;
|
|
59
59
|
regions: zod.ZodArray<zod.ZodObject<{
|
|
60
60
|
_id: zod.ZodEffects<zod.ZodDefault<zod.ZodString>, string, string | undefined>;
|
|
@@ -120,7 +120,7 @@ export declare const cameraZonesSchema: zod.ZodObject<{
|
|
|
120
120
|
isPrivacyMask?: boolean | undefined;
|
|
121
121
|
}[];
|
|
122
122
|
}>;
|
|
123
|
-
export declare const
|
|
123
|
+
export declare const detectionSettingsSchema: zod.ZodObject<{
|
|
124
124
|
motion: zod.ZodObject<{
|
|
125
125
|
timeout: zod.ZodNumber;
|
|
126
126
|
}, "strip", zod.ZodTypeAny, {
|
|
@@ -371,7 +371,7 @@ export declare const createCameraSchema: zod.ZodObject<{
|
|
|
371
371
|
streamingMode: "mjpeg" | "mp4" | "auto" | "mse" | "webrtc" | "webrtc/tcp" | "hls";
|
|
372
372
|
streamingSource: "high-resolution" | "mid-resolution" | "low-resolution";
|
|
373
373
|
}>>;
|
|
374
|
-
|
|
374
|
+
detectionZone: zod.ZodDefault<zod.ZodArray<zod.ZodObject<{
|
|
375
375
|
name: zod.ZodString;
|
|
376
376
|
regions: zod.ZodArray<zod.ZodObject<{
|
|
377
377
|
_id: zod.ZodEffects<zod.ZodDefault<zod.ZodString>, string, string | undefined>;
|
|
@@ -437,7 +437,7 @@ export declare const createCameraSchema: zod.ZodObject<{
|
|
|
437
437
|
isPrivacyMask?: boolean | undefined;
|
|
438
438
|
}[];
|
|
439
439
|
}>, "many">>;
|
|
440
|
-
|
|
440
|
+
detectionSettings: zod.ZodDefault<zod.ZodObject<{
|
|
441
441
|
motion: zod.ZodObject<{
|
|
442
442
|
timeout: zod.ZodNumber;
|
|
443
443
|
}, "strip", zod.ZodTypeAny, {
|
|
@@ -481,7 +481,7 @@ export declare const createCameraSchema: zod.ZodObject<{
|
|
|
481
481
|
resolution: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180";
|
|
482
482
|
}>>;
|
|
483
483
|
}, "strict", zod.ZodTypeAny, {
|
|
484
|
-
|
|
484
|
+
detectionZone: {
|
|
485
485
|
name: string;
|
|
486
486
|
regions: {
|
|
487
487
|
filter: "include" | "exclude";
|
|
@@ -514,7 +514,7 @@ export declare const createCameraSchema: zod.ZodObject<{
|
|
|
514
514
|
};
|
|
515
515
|
type: "camera" | "doorbell";
|
|
516
516
|
snapshotTTL: number;
|
|
517
|
-
|
|
517
|
+
detectionSettings: {
|
|
518
518
|
object: {
|
|
519
519
|
confidence: number;
|
|
520
520
|
};
|
|
@@ -560,7 +560,7 @@ export declare const createCameraSchema: zod.ZodObject<{
|
|
|
560
560
|
_id?: string | undefined;
|
|
561
561
|
internal?: boolean | undefined;
|
|
562
562
|
}[];
|
|
563
|
-
|
|
563
|
+
detectionZone?: {
|
|
564
564
|
name: string;
|
|
565
565
|
regions: {
|
|
566
566
|
coords: {
|
|
@@ -593,7 +593,7 @@ export declare const createCameraSchema: zod.ZodObject<{
|
|
|
593
593
|
} | undefined;
|
|
594
594
|
type?: "camera" | "doorbell" | undefined;
|
|
595
595
|
snapshotTTL?: number | undefined;
|
|
596
|
-
|
|
596
|
+
detectionSettings?: {
|
|
597
597
|
object: {
|
|
598
598
|
confidence: number;
|
|
599
599
|
};
|
|
@@ -723,7 +723,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
|
|
|
723
723
|
}, {
|
|
724
724
|
enabled?: boolean | undefined;
|
|
725
725
|
}>>;
|
|
726
|
-
|
|
726
|
+
detectionZone: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
|
|
727
727
|
name: zod.ZodString;
|
|
728
728
|
regions: zod.ZodArray<zod.ZodObject<{
|
|
729
729
|
_id: zod.ZodEffects<zod.ZodDefault<zod.ZodString>, string, string | undefined>;
|
|
@@ -789,7 +789,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
|
|
|
789
789
|
isPrivacyMask?: boolean | undefined;
|
|
790
790
|
}[];
|
|
791
791
|
}>, "many">>;
|
|
792
|
-
|
|
792
|
+
detectionSettings: zod.ZodOptional<zod.ZodObject<{
|
|
793
793
|
motion: zod.ZodOptional<zod.ZodObject<{
|
|
794
794
|
timeout: zod.ZodNumber;
|
|
795
795
|
}, "strip", zod.ZodTypeAny, {
|
|
@@ -833,7 +833,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
|
|
|
833
833
|
resolution?: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180" | undefined;
|
|
834
834
|
}>>;
|
|
835
835
|
}, "strict", zod.ZodTypeAny, {
|
|
836
|
-
|
|
836
|
+
detectionZone?: {
|
|
837
837
|
name: string;
|
|
838
838
|
regions: {
|
|
839
839
|
filter: "include" | "exclude";
|
|
@@ -859,7 +859,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
|
|
|
859
859
|
} | undefined;
|
|
860
860
|
type?: "camera" | "doorbell" | undefined;
|
|
861
861
|
snapshotTTL?: number | undefined;
|
|
862
|
-
|
|
862
|
+
detectionSettings?: {
|
|
863
863
|
object?: {
|
|
864
864
|
confidence: number;
|
|
865
865
|
} | undefined;
|
|
@@ -896,7 +896,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
|
|
|
896
896
|
enabled?: boolean | undefined;
|
|
897
897
|
} | undefined;
|
|
898
898
|
}, {
|
|
899
|
-
|
|
899
|
+
detectionZone?: {
|
|
900
900
|
name: string;
|
|
901
901
|
regions: {
|
|
902
902
|
coords: {
|
|
@@ -922,7 +922,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
|
|
|
922
922
|
} | undefined;
|
|
923
923
|
type?: "camera" | "doorbell" | undefined;
|
|
924
924
|
snapshotTTL?: number | undefined;
|
|
925
|
-
|
|
925
|
+
detectionSettings?: {
|
|
926
926
|
object?: {
|
|
927
927
|
confidence: number;
|
|
928
928
|
} | undefined;
|
|
@@ -33,36 +33,36 @@ export declare const detectObjectSchema: zod.ZodObject<{
|
|
|
33
33
|
metadata: zod.ZodType<ImageMetadata>;
|
|
34
34
|
config: zod.ZodType<Record<string, any>>;
|
|
35
35
|
}, "strip", zod.ZodTypeAny, {
|
|
36
|
-
config: Record<string, any
|
|
37
|
-
upload: MultipartFile
|
|
38
|
-
metadata: ImageMetadata
|
|
36
|
+
config: zod.ZodType<Record<string, any>>;
|
|
37
|
+
upload: zod.ZodType<MultipartFile>;
|
|
38
|
+
metadata: zod.ZodType<ImageMetadata>;
|
|
39
39
|
}, {
|
|
40
|
-
config: Record<string, any
|
|
41
|
-
upload: MultipartFile
|
|
42
|
-
metadata: ImageMetadata
|
|
40
|
+
config: zod.ZodType<Record<string, any>>;
|
|
41
|
+
upload: zod.ZodType<MultipartFile>;
|
|
42
|
+
metadata: zod.ZodType<ImageMetadata>;
|
|
43
43
|
}>;
|
|
44
44
|
export declare const detectAudioSchema: zod.ZodObject<{
|
|
45
45
|
upload: zod.ZodType<MultipartFile>;
|
|
46
46
|
metadata: zod.ZodType<AudioMetadata>;
|
|
47
47
|
config: zod.ZodType<Record<string, any>>;
|
|
48
48
|
}, "strip", zod.ZodTypeAny, {
|
|
49
|
-
config: Record<string, any
|
|
50
|
-
upload: MultipartFile
|
|
51
|
-
metadata: AudioMetadata
|
|
49
|
+
config: zod.ZodType<Record<string, any>>;
|
|
50
|
+
upload: zod.ZodType<MultipartFile>;
|
|
51
|
+
metadata: zod.ZodType<AudioMetadata>;
|
|
52
52
|
}, {
|
|
53
|
-
config: Record<string, any
|
|
54
|
-
upload: MultipartFile
|
|
55
|
-
metadata: AudioMetadata
|
|
53
|
+
config: zod.ZodType<Record<string, any>>;
|
|
54
|
+
upload: zod.ZodType<MultipartFile>;
|
|
55
|
+
metadata: zod.ZodType<AudioMetadata>;
|
|
56
56
|
}>;
|
|
57
57
|
export declare const detectMotionSchema: zod.ZodObject<{
|
|
58
58
|
upload: zod.ZodType<MultipartFile>;
|
|
59
59
|
config: zod.ZodType<Record<string, any>>;
|
|
60
60
|
}, "strip", zod.ZodTypeAny, {
|
|
61
|
-
config: Record<string, any
|
|
62
|
-
upload: MultipartFile
|
|
61
|
+
config: zod.ZodType<Record<string, any>>;
|
|
62
|
+
upload: zod.ZodType<MultipartFile>;
|
|
63
63
|
}, {
|
|
64
|
-
config: Record<string, any
|
|
65
|
-
upload: MultipartFile
|
|
64
|
+
config: zod.ZodType<Record<string, any>>;
|
|
65
|
+
upload: zod.ZodType<MultipartFile>;
|
|
66
66
|
}>;
|
|
67
67
|
export type InstallPluginInput = zod.TypeOf<typeof installPluginSchema>;
|
|
68
68
|
export type ActionPluginInput = zod.TypeOf<typeof actionPluginSchema>;
|
|
@@ -19,4 +19,3 @@ export * from '../../server/src/plugins/schema.js';
|
|
|
19
19
|
export * from '../../server/src/plugins/types.js';
|
|
20
20
|
export * from '../../server/src/services/config/types.js';
|
|
21
21
|
export type * from '../../server/src/types.js';
|
|
22
|
-
export { names as cocoLabels } from '../../server/src/utils/cocoLabels.json';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camera.ui/browser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.110",
|
|
4
4
|
"description": "camera.ui browser client",
|
|
5
5
|
"author": "seydx (https://github.com/seydx/camera.ui)",
|
|
6
6
|
"exports": {
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@stylistic/eslint-plugin": "^2.11.0",
|
|
34
|
-
"@typescript-eslint/parser": "^8.
|
|
35
|
-
"eslint": "^9.
|
|
36
|
-
"globals": "^15.
|
|
37
|
-
"prettier": "^3.
|
|
38
|
-
"typescript-eslint": "^8.
|
|
34
|
+
"@typescript-eslint/parser": "^8.17.0",
|
|
35
|
+
"eslint": "^9.16.0",
|
|
36
|
+
"globals": "^15.13.0",
|
|
37
|
+
"prettier": "^3.4.1",
|
|
38
|
+
"typescript-eslint": "^8.17.0",
|
|
39
39
|
"@swc/register": "^0.1.10",
|
|
40
40
|
"@types/webrtc": "^0.0.44",
|
|
41
41
|
"bufferutil": "^4.0.8",
|
|
42
42
|
"rimraf": "^6.0.1",
|
|
43
43
|
"ts-loader": "^9.5.1",
|
|
44
|
-
"typescript": "^5.
|
|
44
|
+
"typescript": "^5.7.2",
|
|
45
45
|
"updates": "^16.4.0",
|
|
46
46
|
"utf-8-validate": "^6.0.5",
|
|
47
47
|
"webpack": "^5.96.1",
|