diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..15db785 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,9 @@ +{ + "version" : "1.0", + "configurations" : [ + { + "playground" : "standard", + "type" : "uni-app:app-ios" + } + ] +} diff --git a/common/Order/OrderAll.vue b/common/Order/OrderAll.vue new file mode 100644 index 0000000..920cfdf --- /dev/null +++ b/common/Order/OrderAll.vue @@ -0,0 +1,435 @@ + + + + + \ No newline at end of file diff --git a/common/Order/addressTracking.vue b/common/Order/addressTracking.vue new file mode 100644 index 0000000..5718e41 --- /dev/null +++ b/common/Order/addressTracking.vue @@ -0,0 +1,138 @@ + + + + + \ No newline at end of file diff --git a/common/Order/commodity.vue b/common/Order/commodity.vue new file mode 100644 index 0000000..c12e230 --- /dev/null +++ b/common/Order/commodity.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file diff --git a/common/Order/description.vue b/common/Order/description.vue new file mode 100644 index 0000000..40c661e --- /dev/null +++ b/common/Order/description.vue @@ -0,0 +1,79 @@ + + + + + \ No newline at end of file diff --git a/common/Order/priceDetails.vue b/common/Order/priceDetails.vue new file mode 100644 index 0000000..4e431d5 --- /dev/null +++ b/common/Order/priceDetails.vue @@ -0,0 +1,77 @@ + + + + + \ No newline at end of file diff --git a/common/common.css b/common/common.css new file mode 100644 index 0000000..3a89320 --- /dev/null +++ b/common/common.css @@ -0,0 +1,559 @@ +.fill-height { + width: 100%; + height: var(--status-bar-height); +} + +.uni-navbar .uni-navbar__content { + border: 0 none !important; +} + +.uni-navbar .uni-navbar__header .uni-nav-bar-text { + font-size: 36rpx; + font-weight: 400; + font-family: PingFang SC; +} + +/* 带有筛选项的标题 */ +.filter_title { + display: flex; + align-items: center; + width: 100%; + height: 88rpx; + justify-content: space-between; + position: relative; + box-sizing: border-box; + padding-left: 28rpx; +} + +.filter_title .go_back_icon { + width: 50rpx; + height: 50rpx; + position: absolute; + left: 28rpx; + margin-top: -8rpx; +} + +.filter_title .filter_title_name { + font-family: PingFang SC; + font-size: 32rpx; + color: #000000; + font-weight: bold; + position: absolute; + left: 50%; + transform: translate(-50%); + display: flex; + align-items: center; +} + +.filter_title .filter_title_name>image { + width: 26rpx; + height: 14rpx; + margin: 10rpx; + transition: 0.3s all; +} + +.filter_title .filter_title_name .rotate_style { + transform: rotate(180deg); +} + +.filter_title .titlt_select { + width: 100%; + height: auto; + position: absolute; + z-index: 99; + top: 88rpx; +} + +.filter_title .titlt_select .titlt_div { + width: 50%; + height: auto; + background: #FFFFFF; + box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.1); + border-radius: 12rpx; + margin: auto; + display: flex; + flex-direction: column; +} + +.filter_title .titlt_select .titlt_div>text { + line-height: 88rpx; + text-align: center; + border-bottom: 1px solid #F3F8FF; +} + +/* 列表页最外层样式 */ +.content_list { + width: 100%; + /* height: calc(100vh - 88rpx); */ + height: calc(100vh - 88rpx - var(--status-bar-height)); + overflow: hidden; +} + +.content_list .list_div_3 { + display: flex; + flex-direction: column; + width: 100%; + height: calc(100% - 136rpx - 76rpx - 104rpx); + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; + background-color: #f3f8ff; +} + +.content_list .list_div_2 { + display: flex; + flex-direction: column; + width: 100%; + height: calc(100% - 104rpx - 104rpx); + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; + background-color: #f3f8ff; +} + +.content_list .list_div_1 { + display: flex; + flex-direction: column; + width: 100%; + height: calc(100% - 104rpx - 40rpx); + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; + background-color: #f3f8ff; +} + +/* 列表中卡片样式:标题-一行 */ +.list_title_1line { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding: 42rpx 28rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_1line .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; +} + +.list_title_1line .list_line { + width: 100%; + display: flex; + margin-top: 28rpx; +} + +.list_title_1line .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_1line .list_line>text { + width: 100%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* 列表中卡片样式:标题-一行半 */ +.list_title_1_5line { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding: 42rpx 28rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_1_5line .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; +} + +.list_title_1_5line .list_line { + width: 100%; + display: flex; + justify-content: space-between; + margin-top: 28rpx; +} + +.list_title_1_5line .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_1_5line .list_line:last-child>text { + width: 100%; +} + +.list_title_1_5line .list_line>text { + width: 50%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.list_title_1_5line .list_line>text:first-child { + padding-right: 20rpx; +} + +/* 列表中卡片样式:标题-两行 */ +.list_title_2line { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding: 42rpx 28rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_2line .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; +} + +.list_title_2line .list_line { + width: 100%; + display: flex; + justify-content: space-between; + margin-top: 28rpx; +} + +.list_title_2line .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_2line .list_line>text { + width: 50%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.list_title_2line .list_line>text:first-child { + padding-right: 20rpx; +} + +/* 列表中卡片样式:标题-两行 加一个底部带上边框的 */ +.list_title_2line_bottom { + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + padding-top: 42rpx; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +.list_title_2line_bottom .list_title { + width: 100%; + height: 42rpx; + font-size: 30rpx; + font-family: PingFang SC; + font-weight: 600; + line-height: 42rpx; + color: #1D1D1D; + box-sizing: border-box; + padding: 0 28rpx; +} + +.list_title_2line_bottom .list_line { + width: 100%; + display: flex; + justify-content: space-between; + margin-top: 28rpx; + box-sizing: border-box; + padding: 0 28rpx; +} + +.list_title_2line_bottom .list_line:last-child { + margin-top: 16rpx; +} + +.list_title_2line_bottom .list_line>text { + width: 50%; + box-sizing: border-box; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #6e6e6e; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.list_title_2line_bottom .list_line>text:first-child { + padding-right: 20rpx; +} + +.list_title_2line_bottom .list_bottom { + width: 100%; + line-height: 90rpx; + box-sizing: border-box; + padding: 0 28rpx; + border-top: 2rpx solid #F3F8FF; + margin-top: 28rpx; + font-size: 24rpx; + font-family: PingFang SC; + font-weight: 400; + color: #1D1D1D; +} + +/* 列表中卡片样式:上下两块-上 左图片右内容 下 日期等 */ +.list_2block_image_content { + display: flex; + flex-direction: column; + justify-content: space-between; + width: 100%; + height: auto; + background-color: #FFFFFF; + border-radius: 16rpx; + margin-bottom: 24rpx; + box-sizing: border-box; + box-shadow: 0px 0px 12rpx rgba(0, 31, 80, 0.06); + position: relative; +} + +/* 上部分 */ +.list_2block_image_content .top_block { + display: flex; + width: 100%; + height: auto; + box-sizing: border-box; + padding: 42rpx 28rpx 28rpx; +} + +.list_2block_image_content .top_block .top_block_image { + width: 144rpx; + height: 144rpx; +} + +.list_2block_image_content .top_block .top_block_content { + display: flex; + flex-direction: column; + width: calc(100% - 144rpx - 20rpx); + margin-left: 20rpx; + min-height: 142rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_title { + width: 100%; + font-family: PingFang SC; + font-size: 30rpx; + color: #1d1d1d; +} + +.list_2block_image_content .top_block .top_block_content .content_line { + display: flex; + width: 100%; + min-height: 32rpx; + margin-top: 30rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_line:last-child { + margin-top: 8rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_line>image { + width: 28rpx; + height: 28rpx; + margin-top: 4rpx; +} + +.list_2block_image_content .top_block .top_block_content .content_line>text { + width: calc(100% - 28rpx - 4rpx); + margin-left: 4rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #b2b2b2; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* 下部分 */ +.list_2block_image_content .bottom_block { + display: flex; + align-items: center; + justify-content: space-between; + box-sizing: border-box; + padding: 0 28rpx; + width: 100%; + height: 90rpx; + border-top: 2rpx solid #F3F8FF; +} + +.list_2block_image_content .bottom_block>text { + font-family: PingFang SC; + font-size: 24rpx; + color: #1d1d1d; +} + +/* 列表卡片标签样式 */ +.list_position { + position: absolute; + top: 0; + right: 0; +} + +.list_position .label_Style { + width: auto; + line-height: 42rpx; + padding: 0 20rpx; + border-bottom-left-radius: 16rpx; + border-top-right-radius: 16rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #ffffff; + text-align: center; +} + +/* tabs切换:居中样式 */ +.tabs_center { + width: 100%; + box-sizing: border-box; + padding: 28rpx 28rpx; + display: flex; + justify-content: space-around; +} + +.tabs_center .tabs_div { + min-width: 112rpx; + line-height: 72rpx; + font-family: PingFang SC; + text-align: center; + font-style: Regular; + font-size: 30rpx; + color: #1d1d1d; +} + +.tabs_center .tabs_div_select { + color: #4285F4; + border-bottom: 8rpx solid #4285F4; +} + +/* tabs切换:居左样式 */ +.tabs_left { + width: 100%; + box-sizing: border-box; + padding: 28rpx 0; + display: flex; +} + +.tabs_left .tabs_div { + min-width: 112rpx; + line-height: 72rpx; + font-family: PingFang SC; + text-align: center; + font-style: Regular; + font-size: 28rpx; + color: #6E6E6E; + margin-right: 40rpx; +} + +.tabs_left .tabs_div_select { + color: #4285F4; + border-bottom: 8rpx solid #4285F4; +} + +/* 列表上方搜索样式 */ +.list_search { + display: flex; + justify-content: space-between; + align-items: center; + width: calc(100% - 28rpx - 28rpx); + box-sizing: border-box; + height: 76rpx; + margin: 28rpx 28rpx 0; + background-color: #F3F8FF; + border-radius: 8rpx; + box-sizing: border-box; + padding: 0 24rpx; +} + +.list_search .search_text { + flex: 1; + min-height: 32rpx; + font-family: PingFang SC; + font-size: 24rpx; + color: #ccd2dc; +} + +.list_search .search_icon { + width: 34rpx; + height: 34rpx; +} + +/* 详情-左标题 右内容 布局 */ +.detail_title_content { + width: 100%; + /* height: calc(100vh - 88rpx); */ + height: 100vh; + overflow: auto; + box-sizing: border-box; + padding: 40rpx 28rpx 0; +} + +.detail_title_content .title_content { + width: 100%; + line-height: 40rpx; + display: flex; + justify-content: space-between; + margin-bottom: 40rpx; +} + +.detail_title_content .title_content .left_title { + font-family: PingFang SC; + font-size: 28rpx; + color: #1d1d1d; + word-break: break-word; +} + +.detail_title_content .title_content .right_content { + font-family: PingFang SC; + font-size: 28rpx; + color: #1d1d1d; + word-break: break-word; + margin-left: 40rpx; + text-align: right; + font-weight: 400; +} diff --git a/common/http/config.ts b/common/http/config.ts new file mode 100644 index 0000000..14aafb5 --- /dev/null +++ b/common/http/config.ts @@ -0,0 +1,16 @@ +export default { + + //正式接口 + // base_url:'https://mall.goodsilk.cn/api', + + //测试服务器 + // base_url: 'http://cs-piaowu.fangshangqu.net:10021/api/', + // upload_img_url: 'http://cs-piaowu.fangshangqu.net:10021/api/sys/common/upload', + // base_url:'http://192.168.2.65:10021/api/', + // upload_img_url: 'http://192.168.2.65:10021/api/sys/common/upload', + + //本地服务 + + base_url: 'http://192.168.1.222:8082', + +} \ No newline at end of file diff --git a/common/http/index.ts b/common/http/index.ts new file mode 100644 index 0000000..5b70c58 --- /dev/null +++ b/common/http/index.ts @@ -0,0 +1,33 @@ +import httpRequest from '../http/interface' + +export const postAction = (url : string, data = {}, headerCustom = {}) => { + return httpRequest( + url, + 'POST', + data, + headerCustom, + ) +} +export const getAction = (url : string, data = {}, headerCustom = {}) => { + return httpRequest( + url, + 'GET', + data, + headerCustom, + ) +} +export const putAction = (url : string, data = {}) => { + return httpRequest( + url, + 'PUT', + data + ) +} +export const deleteAction = (url : string, data = {}) => { + return httpRequest( + url, + 'DELETE', + data + ) +} +// 默认全部导出 import api from '@/common/vmeitime-http/' \ No newline at end of file diff --git a/common/http/interface.ts b/common/http/interface.ts new file mode 100644 index 0000000..6c3be96 --- /dev/null +++ b/common/http/interface.ts @@ -0,0 +1,244 @@ +/** + * 通用uni-app网络请求 + * 基于 Promise 对象实现更简单的 request 使用方式,支持请求和响应拦截 + */ +/* + +*/ +import myconfig from '../http/config' + +// 封装uni.request方法 +function httpRequest(url : string, method : any, data = {}, headerCustom = {}) { + return new Promise((resolve, reject) => { + const token = uni.getStorageSync('token') + // 设置请求头 + const header = { + // 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + 'Content-Type': 'application/json;charset=UTF-8', + 'Authorization': 'Bearer ' + token // 如果需要的话,可以在这里添加认证token + }; + // 合并请求头 + const finalHeader = Object.assign({}, header, headerCustom); + uni.setStorageSync('baseURL', myconfig.base_url) + uni.request({ + url: myconfig.base_url + url, // 拼接基础URL和请求路径 + method: method, + data: data, // 如果是GET请求,data应该为null + header: finalHeader, + success: (res) => { + // 如果服务器返回的状态码为200,则认为是成功的响应 + if (res.data && res.statusCode === 200) { + resolve(res.data); + }else if(res.data && res.statusCode === 401){ + uni.showToast({ + icon:'error', + title:'网络出错了!' + }) + reject(new Error('请求失败: ' + (res.data && res.data?.message || '未知错误'))); + }else { + reject(new Error('请求失败: ' + (res.data && res.data?.message || '未知错误'))); + } + }, + fail: (err) => { + reject(err); + } + }); + }); +} + +export default httpRequest; + + +// const config = { +// baseUrl: myconfig.base_url, +// header: { +// 'Content-Type': 'application/json;charset=UTF-8', +// 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' +// }, +// data: {}, +// method: "POST", +// dataType: "json", +// /* 如设为json,会对返回的数据做一次 JSON.parse */ +// responseType: "text", +// success() { }, +// fail() { }, +// complete() { } +// } +// // 拦截器 +// const interceptor = { +// request: null, //请求 +// response: null //响应 +// } +// const request = (options) => { +// if (!options) { +// options = {} +// } +// uni.showLoading({ +// title: '操作中' +// }) +// options.baseUrl = options.baseUrl || config.baseUrl +// options.dataType = options.dataType || config.dataType +// options.url = options.baseUrl + options.url +// options.sslVerify = false +// options.data = options.data || {} +// options.method = options.method || config.method +// if (options.dataType == 'json') { +// options.header = { +// ...options.header, +// 'Content-Type': 'application/json;charset=UTF-8', +// } +// } else { +// options.header = { +// ...options.header, +// 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' +// } +// } +// options.header = { +// ...options.header, +// 'X-Access-Token': uni.getStorageSync('token') || '', +// } + +// return new Promise((resolve, reject) => { +// let _config = null +// options.complete = (response) => { +// uni.hideLoading() +// let statusCode = response.statusCode +// response.config = _config + +// if (interceptor.response) { +// let newResponse = interceptor.response(response) +// if (newResponse) { +// response = newResponse +// } +// } +// // 统一的响应日志记录 +// _reslog(response) +// if (statusCode === 200) { //成功 +// uni.$emit('login', { +// login: true +// }); +// if (response.data.code == 401) { +// uni.setStorageSync('token', '') +// // uni.reLaunch({ +// // url: '/pages/login/login' +// // }) +// } +// resolve(response.data); +// } else if (statusCode === 401) { +// // uni.clearStorageSync() +// uni.setStorageSync('token', '') +// // uni.reLaunch({ +// // url: '/pages/login/login' +// // }) +// } else { +// reject(response) +// // console.log(JSON.stringify(response)); +// // console.log("login err=: ", response); +// } +// } + +// _config = Object.assign({}, config, options) +// _config.requestId = new Date().getTime() + +// if (interceptor.request) { +// interceptor.request(_config) +// } + +// // 统一的请求日志记录 +// _reqlog(_config) + +// if (process.env.NODE_ENV === 'development') { +// // console.log("【" + _config.requestId + "】 地址:" + _config.url) +// if (_config.data) { +// // console.log("【" + _config.requestId + "】 参数:" + JSON.stringify(_config.data)) +// } +// } + +// uni.request(_config); +// }); +// } +// const get = (url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'GET' +// return request(options) +// } +// const post(url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'POST' +// return request(options) +// } +// const put = (url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'PUT' +// return request(options) +// } +// const delete=(url, data, options) => { +// if (!options) { +// options = {} +// } +// options.url = url +// options.data = data +// options.method = 'DELETE' +// return request(options) +// } + + + + +// /** +// * 请求接口日志记录 +// */ +// function _reqlog(req) { +// if (process.env.NODE_ENV === 'development') { +// // console.log("【" + req.requestId + "】 地址:" + req.url) + +// // if (req.statusCode == '401') { +// // uni.reLaunch({ +// // url: '/pages/login/login' +// // }); +// // } + +// if (req.data) { +// // console.log("【" + req.requestId + "】 请求参数:" + JSON.stringify(req.data)) +// } +// } +// //TODO 调接口异步写入日志数据库 +// } + +// /** +// * 响应接口日志记录 +// */ +// function _reslog(res) { +// let _statusCode = res.statusCode; +// // if (process.env.NODE_ENV === 'development') { +// // console.log("【" + res.config.requestId + "】 地址:" + res.config.url) +// // if (res.config.data) { +// // console.log("【" + res.config.requestId + "】 请求参数:" + JSON.stringify(res.config.data)) +// // } +// // console.log("【" + res.config.requestId + "】 响应结果:" + JSON.stringify(res)) +// // } +// //TODO 除了接口服务错误外,其他日志调接口异步写入日志数据库 +// switch (_statusCode) { +// case 200: +// break; +// case 401: +// break; +// case 404: +// break; +// default: +// break; +// } +// } +// export default request; \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 18bf0fd..9666190 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -55,6 +55,16 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "peer": true }, + "node_modules/@types/dom-webcodecs": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz", + "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==" + }, + "node_modules/@types/emscripten": { + "version": "1.39.13", + "resolved": "https://registry.npmmirror.com/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==" + }, "node_modules/@vant/popperjs": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", @@ -167,6 +177,15 @@ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==" }, + "node_modules/barcode-detector": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/barcode-detector/-/barcode-detector-2.2.2.tgz", + "integrity": "sha512-JcSekql+EV93evfzF9zBr+Y6aRfkR+QFvgyzbwQ0dbymZXoAI9+WgT7H1E429f+3RKNncHz2CW98VQtaaKpmfQ==", + "dependencies": { + "@types/dom-webcodecs": "^0.1.11", + "zxing-wasm": "1.1.3" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", @@ -252,6 +271,11 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", @@ -294,6 +318,38 @@ "optional": true } } + }, + "node_modules/vue-qrcode-reader": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/vue-qrcode-reader/-/vue-qrcode-reader-5.6.0.tgz", + "integrity": "sha512-uvaJqMRgR/1tt7XWAqaRBQf0mo3gudu5fXqZmtoq+87lvmM4dublJ7StO6ssNO3FaJqssG72hPhXWoBoYWJIeg==", + "dependencies": { + "barcode-detector": "2.2.2", + "webrtc-adapter": "8.2.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webrtc-adapter": { + "version": "8.2.3", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-8.2.3.tgz", + "integrity": "sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==", + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/zxing-wasm": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/zxing-wasm/-/zxing-wasm-1.1.3.tgz", + "integrity": "sha512-MYm9k/5YVs4ZOTIFwlRjfFKD0crhefgbnt1+6TEpmKUDFp3E2uwqGSKwQOd2hOIsta/7Usq4hnpNRYTLoljnfA==", + "dependencies": { + "@types/emscripten": "^1.39.10" + } } } } diff --git a/node_modules/@types/dom-webcodecs/LICENSE b/node_modules/@types/dom-webcodecs/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/dom-webcodecs/README.md b/node_modules/@types/dom-webcodecs/README.md new file mode 100644 index 0000000..5d438f7 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/dom-webcodecs` + +# Summary +This package contains type definitions for dom-webcodecs (https://w3c.github.io/webcodecs/). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/dom-webcodecs. + +### Additional Details + * Last updated: Tue, 08 Oct 2024 09:36:58 GMT + * Dependencies: none + +# Credits +These definitions were written by [Ben Wagner](https://github.com/dogben). diff --git a/node_modules/@types/dom-webcodecs/index.d.ts b/node_modules/@types/dom-webcodecs/index.d.ts new file mode 100644 index 0000000..8226413 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/index.d.ts @@ -0,0 +1,185 @@ +// Versioning: +// Until the WebCodecs spec is finalized, the major version number is 0. I have chosen to use minor +// version 1 to denote the API as defined by the IDL files from the Chromium repo at +// https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/modules/webcodecs. +// Please use a version number above 0.1 if using the spec at https://w3c.github.io/webcodecs/ as +// the source. + +// The declarations in webcodecs.generated.d.ts have been generated using the code in +// https://github.com/yume-chan/webcodecs-lib-generator. See +// https://github.com/yume-chan/webcodecs-lib-generator/blob/main/README.md for more detail. +/// + +// The following declarations are copied from +// https://github.com/microsoft/TypeScript-DOM-lib-generator/blob/a75338e1ea8a958bf08a5745141d2ab8f14ba2ca/baselines/dom.generated.d.ts +// and modified to expand the types to include VideoFrame. + +/** Shim for OffscreenCanvas, which was removed in TS 4.4 */ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +interface OffscreenCanvas extends EventTarget { +} + +/** + * Replaces CanvasImageSource; only applies if WebCodecs is available. + */ +type CanvasImageSourceWebCodecs = + | HTMLOrSVGImageElement + | HTMLVideoElement + | HTMLCanvasElement + | ImageBitmap + | OffscreenCanvas + | VideoFrame; + +interface CanvasRenderingContext2D { + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number): void; + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number, dw: number, dh: number): void; + drawImage( + image: CanvasImageSourceWebCodecs, + sx: number, + sy: number, + sw: number, + sh: number, + dx: number, + dy: number, + dw: number, + dh: number, + ): void; + createPattern(image: CanvasImageSourceWebCodecs, repetition: string | null): CanvasPattern | null; +} + +interface OffscreenCanvasRenderingContext2D { + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number): void; + drawImage(image: CanvasImageSourceWebCodecs, dx: number, dy: number, dw: number, dh: number): void; + drawImage( + image: CanvasImageSourceWebCodecs, + sx: number, + sy: number, + sw: number, + sh: number, + dx: number, + dy: number, + dw: number, + dh: number, + ): void; + createPattern(image: CanvasImageSourceWebCodecs, repetition: string | null): CanvasPattern | null; +} + +/** + * Replaces ImageBitmapSource; only applies if WebCodecs is available. + */ +type ImageBitmapSourceWebCodecs = CanvasImageSourceWebCodecs | Blob | ImageData; + +declare function createImageBitmap( + image: ImageBitmapSourceWebCodecs, + options?: ImageBitmapOptions, +): Promise; +declare function createImageBitmap( + image: ImageBitmapSourceWebCodecs, + sx: number, + sy: number, + sw: number, + sh: number, + options?: ImageBitmapOptions, +): Promise; + +/** + * Replaces TexImageSource; only applies if WebCodecs is available. + */ +type TexImageSourceWebCodecs = + | ImageBitmap + | ImageData + | HTMLImageElement + | HTMLCanvasElement + | HTMLVideoElement + | OffscreenCanvas + | VideoFrame; + +interface WebGLRenderingContextOverloads { + texImage2D( + target: GLenum, + level: GLint, + internalformat: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage2D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; +} + +interface WebGL2RenderingContextBase { + texImage3D( + target: GLenum, + level: GLint, + internalformat: GLint, + width: GLsizei, + height: GLsizei, + depth: GLsizei, + border: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage3D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + zoffset: GLint, + width: GLsizei, + height: GLsizei, + depth: GLsizei, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; +} + +interface WebGL2RenderingContextOverloads { + texImage2D( + target: GLenum, + level: GLint, + internalformat: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texImage2D( + target: GLenum, + level: GLint, + internalformat: GLint, + width: GLsizei, + height: GLsizei, + border: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage2D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; + texSubImage2D( + target: GLenum, + level: GLint, + xoffset: GLint, + yoffset: GLint, + width: GLsizei, + height: GLsizei, + format: GLenum, + type: GLenum, + source: TexImageSourceWebCodecs, + ): void; +} diff --git a/node_modules/@types/dom-webcodecs/package.json b/node_modules/@types/dom-webcodecs/package.json new file mode 100644 index 0000000..57d2e88 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/package.json @@ -0,0 +1,26 @@ +{ + "name": "@types/dom-webcodecs", + "version": "0.1.13", + "description": "TypeScript definitions for dom-webcodecs", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/dom-webcodecs", + "license": "MIT", + "contributors": [ + { + "name": "Ben Wagner", + "githubUsername": "dogben", + "url": "https://github.com/dogben" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/dom-webcodecs" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "6636871774b310b05e6e4866ff18e837c547c0355726d08095658258522293f7", + "typeScriptVersion": "5.7", + "nonNpm": true +} \ No newline at end of file diff --git a/node_modules/@types/dom-webcodecs/webcodecs.generated.d.ts b/node_modules/@types/dom-webcodecs/webcodecs.generated.d.ts new file mode 100644 index 0000000..a30ca83 --- /dev/null +++ b/node_modules/@types/dom-webcodecs/webcodecs.generated.d.ts @@ -0,0 +1,517 @@ +///////////////////////////// +/// webcodecs APIs +///////////////////////////// + +interface AudioDataCopyToOptions { + format?: AudioSampleFormat | undefined; + frameCount?: number | undefined; + frameOffset?: number | undefined; + planeIndex: number; +} + +interface AudioDataInit { + data: AllowSharedBufferSource; + format: AudioSampleFormat; + numberOfChannels: number; + numberOfFrames: number; + sampleRate: number; + timestamp: number; +} + +interface AudioDecoderConfig { + codec: string; + description?: AllowSharedBufferSource | undefined; + numberOfChannels: number; + sampleRate: number; +} + +interface AudioDecoderInit { + error: WebCodecsErrorCallback; + output: AudioDataOutputCallback; +} + +interface AudioDecoderSupport { + config?: AudioDecoderConfig; + supported?: boolean; +} + +interface AudioEncoderConfig { + bitrate?: number | undefined; + codec: string; + numberOfChannels: number; + sampleRate: number; +} + +interface AudioEncoderInit { + error: WebCodecsErrorCallback; + output: EncodedAudioChunkOutputCallback; +} + +interface AudioEncoderSupport { + config?: AudioEncoderConfig; + supported?: boolean; +} + +interface AvcEncoderConfig { + format?: AvcBitstreamFormat | undefined; +} + +interface EncodedAudioChunkInit { + data: AllowSharedBufferSource; + duration?: number | undefined; + timestamp: number; + type: EncodedAudioChunkType; +} + +interface EncodedAudioChunkMetadata { + decoderConfig?: AudioDecoderConfig | undefined; +} + +interface EncodedVideoChunkInit { + data: AllowSharedBufferSource; + duration?: number | undefined; + timestamp: number; + type: EncodedVideoChunkType; +} + +interface EncodedVideoChunkMetadata { + decoderConfig?: VideoDecoderConfig | undefined; + temporalLayerId?: number | undefined; +} + +interface ImageDecodeOptions { + completeFramesOnly?: boolean | undefined; + frameIndex?: number | undefined; +} + +interface ImageDecodeResult { + complete: boolean; + image: VideoFrame; +} + +interface ImageDecoderInit { + colorSpaceConversion?: ColorSpaceConversion | undefined; + data: ImageBufferSource; + desiredHeight?: number | undefined; + desiredWidth?: number | undefined; + preferAnimation?: boolean | undefined; + premultiplyAlpha?: PremultiplyAlpha | undefined; + type: string; +} + +interface PlaneLayout { + offset: number; + stride: number; +} + +interface VideoColorSpaceInit { + fullRange?: boolean | null | undefined; + matrix?: VideoMatrixCoefficients | null | undefined; + primaries?: VideoColorPrimaries | null | undefined; + transfer?: VideoTransferCharacteristics | null | undefined; +} + +interface VideoDecoderConfig { + codec: string; + codedHeight?: number | undefined; + codedWidth?: number | undefined; + colorSpace?: VideoColorSpaceInit | undefined; + description?: AllowSharedBufferSource | undefined; + displayAspectHeight?: number | undefined; + displayAspectWidth?: number | undefined; + hardwareAcceleration?: HardwarePreference | undefined; + optimizeForLatency?: boolean | undefined; +} + +interface VideoDecoderInit { + error: WebCodecsErrorCallback; + output: VideoFrameOutputCallback; +} + +interface VideoDecoderSupport { + config?: VideoDecoderConfig; + supported?: boolean; +} + +interface VideoEncoderConfig { + alpha?: AlphaOption | undefined; + avc?: AvcEncoderConfig | undefined; + bitrate?: number | undefined; + bitrateMode?: VideoEncoderBitrateMode | undefined; + codec: string; + displayHeight?: number | undefined; + displayWidth?: number | undefined; + framerate?: number | undefined; + hardwareAcceleration?: HardwarePreference | undefined; + height: number; + latencyMode?: LatencyMode | undefined; + scalabilityMode?: string | undefined; + width: number; +} + +interface VideoEncoderEncodeOptions { + keyFrame?: boolean; +} + +interface VideoEncoderInit { + error: WebCodecsErrorCallback; + output: EncodedVideoChunkOutputCallback; +} + +interface VideoEncoderSupport { + config?: VideoEncoderConfig; + supported?: boolean; +} + +interface VideoFrameBufferInit { + codedHeight: number; + codedWidth: number; + colorSpace?: VideoColorSpaceInit | undefined; + displayHeight?: number | undefined; + displayWidth?: number | undefined; + duration?: number | undefined; + format: VideoPixelFormat; + layout?: PlaneLayout[] | undefined; + timestamp: number; + visibleRect?: DOMRectInit | undefined; +} + +interface VideoFrameCopyToOptions { + layout?: PlaneLayout[] | undefined; + rect?: DOMRectInit | undefined; +} + +interface VideoFrameInit { + alpha?: AlphaOption | undefined; + displayHeight?: number | undefined; + displayWidth?: number | undefined; + duration?: number | undefined; + timestamp?: number | undefined; + visibleRect?: DOMRectInit | undefined; +} + +interface AudioData { + readonly duration: number; + readonly format: AudioSampleFormat | null; + readonly numberOfChannels: number; + readonly numberOfFrames: number; + readonly sampleRate: number; + readonly timestamp: number; + allocationSize(options: AudioDataCopyToOptions): number; + clone(): AudioData; + close(): void; + copyTo(destination: AllowSharedBufferSource, options: AudioDataCopyToOptions): void; +} + +declare var AudioData: { + prototype: AudioData; + new(init: AudioDataInit): AudioData; +}; + +interface AudioDecoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface AudioDecoder { + readonly decodeQueueSize: number; + readonly state: CodecState; + ondequeue: ((this: AudioDecoder, ev: Event) => any) | null; + close(): void; + configure(config: AudioDecoderConfig): void; + decode(chunk: EncodedAudioChunk): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: AudioDecoder, ev: AudioDecoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: AudioDecoder, ev: AudioDecoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var AudioDecoder: { + prototype: AudioDecoder; + new(init: AudioDecoderInit): AudioDecoder; + isConfigSupported(config: AudioDecoderConfig): Promise; +}; + +interface AudioEncoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface AudioEncoder { + readonly encodeQueueSize: number; + readonly state: CodecState; + ondequeue: ((this: AudioEncoder, ev: Event) => any) | null; + close(): void; + configure(config: AudioEncoderConfig): void; + encode(data: AudioData): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: AudioEncoder, ev: AudioEncoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: AudioEncoder, ev: AudioEncoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var AudioEncoder: { + prototype: AudioEncoder; + new(init: AudioEncoderInit): AudioEncoder; + isConfigSupported(config: AudioEncoderConfig): Promise; +}; + +interface EncodedAudioChunk { + readonly byteLength: number; + readonly duration: number | null; + readonly timestamp: number; + readonly type: EncodedAudioChunkType; + copyTo(destination: AllowSharedBufferSource): void; +} + +declare var EncodedAudioChunk: { + prototype: EncodedAudioChunk; + new(init: EncodedAudioChunkInit): EncodedAudioChunk; +}; + +interface EncodedVideoChunk { + readonly byteLength: number; + readonly duration: number | null; + readonly timestamp: number; + readonly type: EncodedVideoChunkType; + copyTo(destination: AllowSharedBufferSource): void; +} + +declare var EncodedVideoChunk: { + prototype: EncodedVideoChunk; + new(init: EncodedVideoChunkInit): EncodedVideoChunk; +}; + +/** Available only in secure contexts. */ +interface ImageDecoder { + readonly complete: boolean; + readonly completed: Promise; + readonly tracks: ImageTrackList; + readonly type: string; + close(): void; + decode(options?: ImageDecodeOptions): Promise; + reset(): void; +} + +declare var ImageDecoder: { + prototype: ImageDecoder; + new(init: ImageDecoderInit): ImageDecoder; + isTypeSupported(type: string): Promise; +}; + +interface ImageTrack { + readonly animated: boolean; + readonly frameCount: number; + readonly repetitionCount: number; + selected: boolean; +} + +declare var ImageTrack: { + prototype: ImageTrack; + new(): ImageTrack; +}; + +interface ImageTrackList { + readonly length: number; + readonly ready: Promise; + readonly selectedIndex: number; + readonly selectedTrack: ImageTrack | null; + [index: number]: ImageTrack; +} + +declare var ImageTrackList: { + prototype: ImageTrackList; + new(): ImageTrackList; +}; + +interface VideoColorSpace { + readonly fullRange: boolean | null; + readonly matrix: VideoMatrixCoefficients | null; + readonly primaries: VideoColorPrimaries | null; + readonly transfer: VideoTransferCharacteristics | null; + toJSON(): VideoColorSpaceInit; +} + +declare var VideoColorSpace: { + prototype: VideoColorSpace; + new(init?: VideoColorSpaceInit): VideoColorSpace; +}; + +interface VideoDecoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface VideoDecoder { + readonly decodeQueueSize: number; + readonly state: CodecState; + ondequeue: ((this: VideoDecoder, ev: Event) => any) | null; + close(): void; + configure(config: VideoDecoderConfig): void; + decode(chunk: EncodedVideoChunk): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: VideoDecoder, ev: VideoDecoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: VideoDecoder, ev: VideoDecoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var VideoDecoder: { + prototype: VideoDecoder; + new(init: VideoDecoderInit): VideoDecoder; + isConfigSupported(config: VideoDecoderConfig): Promise; +}; + +interface VideoEncoderEventMap { + "dequeue": Event; +} + +/** Available only in secure contexts. */ +interface VideoEncoder { + readonly encodeQueueSize: number; + readonly state: CodecState; + close(): void; + ondequeue: ((this: VideoEncoder, ev: Event) => any) | null; + configure(config: VideoEncoderConfig): void; + encode(frame: VideoFrame, options?: VideoEncoderEncodeOptions): void; + flush(): Promise; + reset(): void; + addEventListener( + type: K, + listener: (this: VideoEncoder, ev: VideoEncoderEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: VideoEncoder, ev: VideoEncoderEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +declare var VideoEncoder: { + prototype: VideoEncoder; + new(init: VideoEncoderInit): VideoEncoder; + isConfigSupported(config: VideoEncoderConfig): Promise; +}; + +interface VideoFrame { + readonly codedHeight: number; + readonly codedRect: DOMRectReadOnly | null; + readonly codedWidth: number; + readonly colorSpace: VideoColorSpace; + readonly displayHeight: number; + readonly displayWidth: number; + readonly duration: number | null; + readonly format: VideoPixelFormat | null; + readonly timestamp: number; + readonly visibleRect: DOMRectReadOnly | null; + allocationSize(options?: VideoFrameCopyToOptions): number; + clone(): VideoFrame; + close(): void; + copyTo(destination: AllowSharedBufferSource, options?: VideoFrameCopyToOptions): Promise; +} + +declare var VideoFrame: { + prototype: VideoFrame; + new(source: CanvasImageSource, init?: VideoFrameInit): VideoFrame; + new(data: AllowSharedBufferSource, init: VideoFrameBufferInit): VideoFrame; +}; + +interface AudioDataOutputCallback { + (output: AudioData): void; +} + +interface EncodedAudioChunkOutputCallback { + (output: EncodedAudioChunk, metadata: EncodedAudioChunkMetadata): void; +} + +interface EncodedVideoChunkOutputCallback { + (chunk: EncodedVideoChunk, metadata: EncodedVideoChunkMetadata): void; +} + +interface VideoFrameOutputCallback { + (output: VideoFrame): void; +} + +interface WebCodecsErrorCallback { + (error: DOMException): void; +} + +// type AllowSharedBufferSource = ArrayBuffer | ArrayBufferView; +// type BitrateMode = "constant" | "variable"; +type ImageBufferSource = ArrayBuffer | ArrayBufferView | ReadableStream; +// type AlphaOption = "discard" | "keep"; +// type AudioSampleFormat = "f32" | "f32-planar" | "s16" | "s16-planar" | "s32" | "s32-planar" | "u8" | "u8-planar"; +// type AvcBitstreamFormat = "annexb" | "avc"; +// type CodecState = "closed" | "configured" | "unconfigured"; +// type EncodedAudioChunkType = "delta" | "key"; +// type EncodedVideoChunkType = "delta" | "key"; +type HardwarePreference = "no-preference" | "prefer-hardware" | "prefer-software"; +// type LatencyMode = "quality" | "realtime"; +// type VideoColorPrimaries = "bt470bg" | "bt709" | "smpte170m"; +// type VideoMatrixCoefficients = "bt470bg" | "bt709" | "rgb" | "smpte170m"; +// type VideoPixelFormat = "BGRA" | "BGRX" | "I420" | "I420A" | "I422" | "I444" | "NV12" | "RGBA" | "RGBX"; +// type VideoTransferCharacteristics = "bt709" | "iec61966-2-1" | "smpte170m"; diff --git a/node_modules/@types/emscripten/LICENSE b/node_modules/@types/emscripten/LICENSE new file mode 100644 index 0000000..9e841e7 --- /dev/null +++ b/node_modules/@types/emscripten/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/node_modules/@types/emscripten/README.md b/node_modules/@types/emscripten/README.md new file mode 100644 index 0000000..888b0a1 --- /dev/null +++ b/node_modules/@types/emscripten/README.md @@ -0,0 +1,15 @@ +# Installation +> `npm install --save @types/emscripten` + +# Summary +This package contains type definitions for emscripten (https://emscripten.org). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/emscripten. + +### Additional Details + * Last updated: Tue, 28 May 2024 20:07:23 GMT + * Dependencies: none + +# Credits +These definitions were written by [Kensuke Matsuzaki](https://github.com/zakki), [Periklis Tsirakidis](https://github.com/periklis), [Bumsik Kim](https://github.com/kbumsik), and [Louis DeScioli](https://github.com/lourd). diff --git a/node_modules/@types/emscripten/index.d.ts b/node_modules/@types/emscripten/index.d.ts new file mode 100644 index 0000000..7436fa6 --- /dev/null +++ b/node_modules/@types/emscripten/index.d.ts @@ -0,0 +1,451 @@ +/** Other WebAssembly declarations, for compatibility with older versions of Typescript */ +declare namespace WebAssembly { + interface Module {} +} + +declare namespace Emscripten { + interface FileSystemType { + mount(mount: FS.Mount): FS.FSNode; + syncfs(mount: FS.Mount, populate: () => unknown, done: (err?: number | null) => unknown): void; + } + type EnvironmentType = "WEB" | "NODE" | "SHELL" | "WORKER"; + + type JSType = "number" | "string" | "array" | "boolean"; + type TypeCompatibleWithC = number | string | any[] | boolean; + + type CIntType = "i8" | "i16" | "i32" | "i64"; + type CFloatType = "float" | "double"; + type CPointerType = "i8*" | "i16*" | "i32*" | "i64*" | "float*" | "double*" | "*"; + type CType = CIntType | CFloatType | CPointerType; + + interface CCallOpts { + async?: boolean | undefined; + } +} + +interface EmscriptenModule { + print(str: string): void; + printErr(str: string): void; + arguments: string[]; + environment: Emscripten.EnvironmentType; + preInit: Array<{ (): void }>; + preRun: Array<{ (): void }>; + postRun: Array<{ (): void }>; + onAbort: { (what: any): void }; + onRuntimeInitialized: { (): void }; + preinitializedWebGLContext: WebGLRenderingContext; + noInitialRun: boolean; + noExitRuntime: boolean; + logReadFiles: boolean; + filePackagePrefixURL: string; + wasmBinary: ArrayBuffer; + + destroy(object: object): void; + getPreloadedPackage(remotePackageName: string, remotePackageSize: number): ArrayBuffer; + instantiateWasm( + imports: WebAssembly.Imports, + successCallback: (module: WebAssembly.Instance) => void, + ): WebAssembly.Exports | undefined; + locateFile(url: string, scriptDirectory: string): string; + onCustomMessage(event: MessageEvent): void; + + // USE_TYPED_ARRAYS == 1 + HEAP: Int32Array; + IHEAP: Int32Array; + FHEAP: Float64Array; + + // USE_TYPED_ARRAYS == 2 + HEAP8: Int8Array; + HEAP16: Int16Array; + HEAP32: Int32Array; + HEAPU8: Uint8Array; + HEAPU16: Uint16Array; + HEAPU32: Uint32Array; + HEAPF32: Float32Array; + HEAPF64: Float64Array; + HEAP64: BigInt64Array; + HEAPU64: BigUint64Array; + + TOTAL_STACK: number; + TOTAL_MEMORY: number; + FAST_MEMORY: number; + + addOnPreRun(cb: () => any): void; + addOnInit(cb: () => any): void; + addOnPreMain(cb: () => any): void; + addOnExit(cb: () => any): void; + addOnPostRun(cb: () => any): void; + + preloadedImages: any; + preloadedAudios: any; + + _malloc(size: number): number; + _free(ptr: number): void; +} + +/** + * A factory function is generated when setting the `MODULARIZE` build option + * to `1` in your Emscripten build. It return a Promise that resolves to an + * initialized, ready-to-call `EmscriptenModule` instance. + * + * By default, the factory function will be named `Module`. It's recommended to + * use the `EXPORT_ES6` option, in which the factory function will be the + * default export. If used without `EXPORT_ES6`, the factory function will be a + * global variable. You can rename the variable using the `EXPORT_NAME` build + * option. It's left to you to declare any global variables as needed in your + * application's types. + * @param moduleOverrides Default properties for the initialized module. + */ +type EmscriptenModuleFactory = ( + moduleOverrides?: Partial, +) => Promise; + +declare namespace FS { + interface Lookup { + path: string; + node: FSNode; + } + + interface Analyze { + isRoot: boolean; + exists: boolean; + error: Error; + name: string; + path: Lookup["path"]; + object: Lookup["node"]; + parentExists: boolean; + parentPath: Lookup["path"]; + parentObject: Lookup["node"]; + } + + interface Mount { + type: Emscripten.FileSystemType; + opts: object; + mountpoint: string; + mounts: Mount[]; + root: FSNode; + } + + class FSStream { + constructor(); + object: FSNode; + readonly isRead: boolean; + readonly isWrite: boolean; + readonly isAppend: boolean; + flags: number; + position: number; + fd?: number; + nfd?: number; + } + + interface StreamOps { + open(stream: FSStream): void; + close(stream: FSStream): void; + read(stream: FSStream, buffer: Uint8Array, offset: number, length: number, position: number): number; + write(stream: FSStream, buffer: Uint8Array, offset: number, length: number, position: number): number; + llseek(stream: FSStream, offset: number, whence: number): number; + } + + class FSNode { + parent: FSNode; + mount: Mount; + mounted?: Mount; + id: number; + name: string; + mode: number; + rdev: number; + readMode: number; + writeMode: number; + constructor(parent: FSNode, name: string, mode: number, rdev: number); + read: boolean; + write: boolean; + readonly isFolder: boolean; + readonly isDevice: boolean; + } + + interface NodeOps { + getattr(node: FSNode): Stats; + setattr(node: FSNode, attr: Stats): void; + lookup(parent: FSNode, name: string): FSNode; + mknod(parent: FSNode, name: string, mode: number, dev: unknown): FSNode; + rename(oldNode: FSNode, newDir: FSNode, newName: string): void; + unlink(parent: FSNode, name: string): void; + rmdir(parent: FSNode, name: string): void; + readdir(node: FSNode): string[]; + symlink(parent: FSNode, newName: string, oldPath: string): void; + readlink(node: FSNode): string; + } + + interface Stats { + dev: number; + ino: number; + mode: number; + nlink: number; + uid: number; + gid: number; + rdev: number; + size: number; + blksize: number; + blocks: number; + atime: Date; + mtime: Date; + ctime: Date; + timestamp?: number; + } + + class ErrnoError extends Error { + name: "ErronoError"; + errno: number; + code: string; + constructor(errno: number); + } + + let ignorePermissions: boolean; + let trackingDelegate: { + onOpenFile(path: string, trackingFlags: number): unknown; + onCloseFile(path: string): unknown; + onSeekFile(path: string, position: number, whence: number): unknown; + onReadFile(path: string, bytesRead: number): unknown; + onWriteToFile(path: string, bytesWritten: number): unknown; + onMakeDirectory(path: string, mode: number): unknown; + onMakeSymlink(oldpath: string, newpath: string): unknown; + willMovePath(old_path: string, new_path: string): unknown; + onMovePath(old_path: string, new_path: string): unknown; + willDeletePath(path: string): unknown; + onDeletePath(path: string): unknown; + }; + let tracking: any; + let genericErrors: Record; + + // + // paths + // + function lookupPath( + path: string, + opts: Partial<{ + follow_mount: boolean; + /** + * by default, lookupPath will not follow a symlink if it is the final path component. + * setting opts.follow = true will override this behavior. + */ + follow: boolean; + recurse_count: number; + parent: boolean; + }>, + ): Lookup; + function getPath(node: FSNode): string; + function analyzePath(path: string, dontResolveLastLink?: boolean): Analyze; + + // + // nodes + // + function isFile(mode: number): boolean; + function isDir(mode: number): boolean; + function isLink(mode: number): boolean; + function isChrdev(mode: number): boolean; + function isBlkdev(mode: number): boolean; + function isFIFO(mode: number): boolean; + function isSocket(mode: number): boolean; + + // + // devices + // + function major(dev: number): number; + function minor(dev: number): number; + function makedev(ma: number, mi: number): number; + function registerDevice(dev: number, ops: Partial): void; + function getDevice(dev: number): { stream_ops: StreamOps }; + + // + // core + // + function getMounts(mount: Mount): Mount[]; + function syncfs(populate: boolean, callback: (e: any) => any): void; + function syncfs(callback: (e: any) => any, populate?: boolean): void; + function mount(type: Emscripten.FileSystemType, opts: any, mountpoint: string): any; + function unmount(mountpoint: string): void; + + function mkdir(path: string, mode?: number): FSNode; + function mkdev(path: string, mode?: number, dev?: number): FSNode; + function symlink(oldpath: string, newpath: string): FSNode; + function rename(old_path: string, new_path: string): void; + function rmdir(path: string): void; + function readdir(path: string): string[]; + function unlink(path: string): void; + function readlink(path: string): string; + function stat(path: string, dontFollow?: boolean): Stats; + function lstat(path: string): Stats; + function chmod(path: string, mode: number, dontFollow?: boolean): void; + function lchmod(path: string, mode: number): void; + function fchmod(fd: number, mode: number): void; + function chown(path: string, uid: number, gid: number, dontFollow?: boolean): void; + function lchown(path: string, uid: number, gid: number): void; + function fchown(fd: number, uid: number, gid: number): void; + function truncate(path: string, len: number): void; + function ftruncate(fd: number, len: number): void; + function utime(path: string, atime: number, mtime: number): void; + function open(path: string, flags: string, mode?: number, fd_start?: number, fd_end?: number): FSStream; + function close(stream: FSStream): void; + function llseek(stream: FSStream, offset: number, whence: number): number; + function read(stream: FSStream, buffer: ArrayBufferView, offset: number, length: number, position?: number): number; + function write( + stream: FSStream, + buffer: ArrayBufferView, + offset: number, + length: number, + position?: number, + canOwn?: boolean, + ): number; + function allocate(stream: FSStream, offset: number, length: number): void; + function mmap( + stream: FSStream, + buffer: ArrayBufferView, + offset: number, + length: number, + position: number, + prot: number, + flags: number, + ): { + allocated: boolean; + ptr: number; + }; + function ioctl(stream: FSStream, cmd: any, arg: any): any; + function readFile(path: string, opts: { encoding: "binary"; flags?: string | undefined }): Uint8Array; + function readFile(path: string, opts: { encoding: "utf8"; flags?: string | undefined }): string; + function readFile(path: string, opts?: { flags?: string | undefined }): Uint8Array; + function writeFile(path: string, data: string | ArrayBufferView, opts?: { flags?: string | undefined }): void; + + // + // module-level FS code + // + function cwd(): string; + function chdir(path: string): void; + function init( + input: null | (() => number | null), + output: null | ((c: number) => any), + error: null | ((c: number) => any), + ): void; + + function createLazyFile( + parent: string | FSNode, + name: string, + url: string, + canRead: boolean, + canWrite: boolean, + ): FSNode; + function createPreloadedFile( + parent: string | FSNode, + name: string, + url: string, + canRead: boolean, + canWrite: boolean, + onload?: () => void, + onerror?: () => void, + dontCreateFile?: boolean, + canOwn?: boolean, + ): void; + function createDataFile( + parent: string | FSNode, + name: string, + data: ArrayBufferView, + canRead: boolean, + canWrite: boolean, + canOwn: boolean, + ): FSNode; +} + +declare var MEMFS: Emscripten.FileSystemType; +declare var NODEFS: Emscripten.FileSystemType; +declare var IDBFS: Emscripten.FileSystemType; + +// https://emscripten.org/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html +type StringToType = R extends Emscripten.JSType ? { + number: number; + string: string; + array: number[] | string[] | boolean[] | Uint8Array | Int8Array; + boolean: boolean; + null: null; + }[R] + : never; + +type ArgsToType> = Extract< + { + [P in keyof T]: StringToType; + }, + any[] +>; + +type ReturnToType = R extends null ? null : StringToType>; + +// Below runtime function/variable declarations are exportable by +// -s EXTRA_EXPORTED_RUNTIME_METHODS. You can extend or merge +// EmscriptenModule interface to add runtime functions. +// +// For example, by using -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall']" +// You can access ccall() via Module["ccall"]. In this case, you should +// extend EmscriptenModule to pass the compiler check like the following: +// +// interface YourOwnEmscriptenModule extends EmscriptenModule { +// ccall: typeof ccall; +// } +// +// See: https://emscripten.org/docs/getting_started/FAQ.html#why-do-i-get-typeerror-module-something-is-not-a-function + +declare function cwrap | [], R extends Emscripten.JSType | null>( + ident: string, + returnType: R, + argTypes: I, + opts?: Emscripten.CCallOpts, +): (...arg: ArgsToType) => ReturnToType; + +declare function ccall | [], R extends Emscripten.JSType | null>( + ident: string, + returnType: R, + argTypes: I, + args: ArgsToType, + opts?: Emscripten.CCallOpts, +): ReturnToType; + +declare function setValue(ptr: number, value: any, type: Emscripten.CType, noSafe?: boolean): void; +declare function getValue(ptr: number, type: Emscripten.CType, noSafe?: boolean): number; + +declare function allocate( + slab: number[] | ArrayBufferView | number, + types: Emscripten.CType | Emscripten.CType[], + allocator: number, + ptr?: number, +): number; + +declare function stackAlloc(size: number): number; +declare function stackSave(): number; +declare function stackRestore(ptr: number): void; + +declare function UTF8ToString(ptr: number, maxBytesToRead?: number): string; +declare function stringToUTF8(str: string, outPtr: number, maxBytesToRead?: number): void; +declare function lengthBytesUTF8(str: string): number; +declare function allocateUTF8(str: string): number; +declare function allocateUTF8OnStack(str: string): number; +declare function UTF16ToString(ptr: number): string; +declare function stringToUTF16(str: string, outPtr: number, maxBytesToRead?: number): void; +declare function lengthBytesUTF16(str: string): number; +declare function UTF32ToString(ptr: number): string; +declare function stringToUTF32(str: string, outPtr: number, maxBytesToRead?: number): void; +declare function lengthBytesUTF32(str: string): number; + +declare function intArrayFromString(stringy: string, dontAddNull?: boolean, length?: number): number[]; +declare function intArrayToString(array: number[]): string; +declare function writeStringToMemory(str: string, buffer: number, dontAddNull: boolean): void; +declare function writeArrayToMemory(array: number[], buffer: number): void; +declare function writeAsciiToMemory(str: string, buffer: number, dontAddNull: boolean): void; + +declare function addRunDependency(id: any): void; +declare function removeRunDependency(id: any): void; + +declare function addFunction(func: (...args: any[]) => any, signature?: string): number; +declare function removeFunction(funcPtr: number): void; + +declare var ALLOC_NORMAL: number; +declare var ALLOC_STACK: number; +declare var ALLOC_STATIC: number; +declare var ALLOC_DYNAMIC: number; +declare var ALLOC_NONE: number; diff --git a/node_modules/@types/emscripten/package.json b/node_modules/@types/emscripten/package.json new file mode 100644 index 0000000..f2ddacc --- /dev/null +++ b/node_modules/@types/emscripten/package.json @@ -0,0 +1,40 @@ +{ + "name": "@types/emscripten", + "version": "1.39.13", + "description": "TypeScript definitions for emscripten", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/emscripten", + "license": "MIT", + "contributors": [ + { + "name": "Kensuke Matsuzaki", + "githubUsername": "zakki", + "url": "https://github.com/zakki" + }, + { + "name": "Periklis Tsirakidis", + "githubUsername": "periklis", + "url": "https://github.com/periklis" + }, + { + "name": "Bumsik Kim", + "githubUsername": "kbumsik", + "url": "https://github.com/kbumsik" + }, + { + "name": "Louis DeScioli", + "githubUsername": "lourd", + "url": "https://github.com/lourd" + } + ], + "main": "", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git", + "directory": "types/emscripten" + }, + "scripts": {}, + "dependencies": {}, + "typesPublisherContentHash": "e4c38466f07759bfefe22fd073222d18f79b78112fc989c972f3e86c81b49800", + "typeScriptVersion": "4.7" +} \ No newline at end of file diff --git a/node_modules/barcode-detector/LICENSE b/node_modules/barcode-detector/LICENSE new file mode 100644 index 0000000..5dd3d5b --- /dev/null +++ b/node_modules/barcode-detector/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Ze-Zheng Wu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/barcode-detector/README.md b/node_modules/barcode-detector/README.md new file mode 100644 index 0000000..4f4226d --- /dev/null +++ b/node_modules/barcode-detector/README.md @@ -0,0 +1,263 @@ +# barcode-detector + +[![npm](https://img.shields.io/npm/v/barcode-detector)](https://www.npmjs.com/package/barcode-detector/v/latest) [![npm bundle size (scoped)](https://img.shields.io/bundlephobia/minzip/barcode-detector)](https://www.npmjs.com/package/barcode-detector/v/latest) [![jsDelivr hits (npm scoped)](https://img.shields.io/jsdelivr/npm/hm/barcode-detector?color=%23ff5627)](https://cdn.jsdelivr.net/npm/barcode-detector@latest/) + +A [Barcode Detection API](https://wicg.github.io/shape-detection-api/#barcode-detection-api) polyfill that uses [ZXing-C++ WebAssembly](https://github.com/Sec-ant/zxing-wasm) under the hood. + +Supported barcode formats: `aztec`, `code_128`, `code_39`, `code_93`, `codabar`, `databar`, `databar_expanded`, `data_matrix`, `dx_film_edge`, `ean_13`, `ean_8`, `itf`, `maxi_code` (only generated ones, and no position info), `micro_qr_code`, `pdf417`, `qr_code`, `rm_qr_code`, `upc_a`, `upc_e`, `linear_codes` and `matrix_codes` (for convenience). + +## Install + +To install, run the following command: + +```bash +npm i barcode-detector +``` + +## Recommended Usage with Node + ESM + +This package can be imported in three different ways: + +### Pure Module + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; +``` + +To avoid potential namespace collisions, you can also rename the export: + +```ts +import { BarcodeDetector as BarcodeDetectorPolyfill } from "barcode-detector/pure"; +``` + +This approach is beneficial when you want to use a package to detect barcodes without polluting `globalThis`, or when your runtime already provides an implementation of the Barcode Detection API, but you still want this package to function. + +### Side Effects + +```ts +import "barcode-detector/side-effects"; +``` + +This approach is beneficial when you need a drop-in polyfill. If there's already an implementation of Barcode Detection API on `globalThis`, this won't take effect (type declarations will, as we cannot optionally declare types). In such cases, please use the [pure module](#pure-module) instead. + +### Both + +```ts +import { BarcodeDetector } from "barcode-detector"; +``` + +This approach combines the [pure module](#pure-module) and [side effects](#side-effects). + +## Recommended Usage in Modern Browsers + +For [modern browsers that support ES modules](https://caniuse.com/es6-module), this package can be imported via the ` + + + + ``` + +2. Script scoped access: + + ```html + + ``` + +3. With import maps: + + ```html + + + + + + ``` + +## Usage with Legacy Compatibility + +Starting from v1.2, this package supports IIFE and CJS build outputs for use cases that require legacy compatibility. + +### IIFE + +For legacy browsers that lack support for module type ` + + + + + + +``` + +### CJS + +This package can also be consumed as a commonjs package: + +1. Vanilla Javascript: + + ```js + // src/index.js + const { BarcodeDetector } = require("barcode-detector/pure"); + ``` + +2. With Typescript: + + ```ts + // src/index.ts + import { BarcodeDetector } from "barcode-detector/pure"; + ``` + + `tsconfig.json`: + + ```json + { + "compilerOptions": { + "module": "CommonJS", + "moduleResolution": "Node", + "skipLibCheck": true + }, + "include": ["src"] + } + ``` + +## `setZXingModuleOverrides` + +In addition to `BarcodeDetector`, this package exports another function called `setZXingModuleOverrides`. + +This package employs [zxing-wasm](https://github.com/Sec-ant/zxing-wasm) to enable the core barcode reading functionality. As a result, a `.wasm` binary file is fetched at runtime. The default fetch path for this binary file is: + +``` +https://fastly.jsdelivr.net/npm/zxing-wasm@/dist/reader/zxing_reader.wasm +``` + +The `setZXingModuleOverrides` function allows you to govern where the `.wasm` binary is served from, thereby enabling offline use of the package, use within a local network, or within a site having strict [CSP](https://developer.mozilla.org/docs/Web/HTTP/CSP) rules. + +For instance, should you want to inline this `.wasm` file in your build output for offline usage, with the assistance of build tools, you could try: + +```ts +// src/index.ts +import wasmFile from "../node_modules/zxing-wasm/dist/reader/zxing_reader.wasm?url"; + +import { + setZXingModuleOverrides, + BarcodeDetector, +} from "barcode-detector/pure"; + +setZXingModuleOverrides({ + locateFile: (path, prefix) => { + if (path.endsWith(".wasm")) { + return wasmFile; + } + return prefix + path; + }, +}); + +const barcodeDetector = new BarcodeDetector(); + +// detect barcodes +// ... +``` + +Alternatively, the `.wasm` file could be copied to your dist folder to be served from your local server, without incorporating it into the output as an extensive base64 data URL. + +It's noteworthy that you'll always want to choose the correct version of the `.wasm` file, so the APIs exported by it are exactly what the js code expects. + +For more information on how to use this function, you can check [the notes here](https://github.com/Sec-ant/zxing-wasm#notes) and [discussions here](https://github.com/Sec-ant/barcode-detector/issues/18) and [here](https://github.com/gruhn/vue-qrcode-reader/issues/354). + +This function is exported from all the subpaths, including the [side effects](#side-effects). + +## API + +Please check the [spec](https://wicg.github.io/shape-detection-api/#barcode-detection-api), [MDN doc](https://developer.mozilla.org/docs/Web/API/Barcode_Detection_API) and [Chromium implementation](https://github.com/chromium/chromium/tree/main/third_party/blink/renderer/modules/shapedetection) for more information. + +## Lifecycle Events + +The `BarcodeDetector` provided by this package also extends class `EventTarget` and provides 2 lifecycle events: `load` and `error`. You can use `addEventListener` and `removeEventListener` to register and remove callback hooks on these events. + +### `load` Event + +The `load` event, which is a `CustomEvent`, will be dispatched on the successful instantiation of ZXing wasm module. For advanced usage, the instantiated module is passed as the `detail` parameter. + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; + +const barcodeDetector = new BarcodeDetector(); + +barcodeDetector.addEventListener("load", ({ detail }) => { + console.log(detail); // zxing wasm module +}); +``` + +### `error` Event + +The `error` event, which is a `CustomEvent`, will be dispatched if the instantiation of ZXing wasm module is failed. An error is passed as the `detail` parameter. + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; + +const barcodeDetector = new BarcodeDetector(); + +barcodeDetector.addEventListener("error", ({ detail }) => { + console.log(detail); // an error +}); +``` + +## Example + +```ts +import { BarcodeDetector } from "barcode-detector/pure"; + +const barcodeDetector: BarcodeDetector = new BarcodeDetector({ + formats: ["qr_code"], +}); + +const imageFile = await fetch( + "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Hello%20world!", +).then((resp) => resp.blob()); + +barcodeDetector.detect(imageFile).then(console.log); +``` + +## License + +The source code in this repository, as well as the build output, except for the parts listed below, is licensed under the [MIT license](./LICENSE). + +Test samples and resources are collected from [zxing-cpp/zxing-cpp](https://github.com/zxing-cpp/zxing-cpp), which is licensed under the [Apache-2.0 license](https://raw.githubusercontent.com/zxing-cpp/zxing-cpp/master/LICENSE), and [web-platform-tests/wpt](https://github.com/web-platform-tests/wpt), which is licensed under the [3-Clause BSD license](https://raw.githubusercontent.com/web-platform-tests/wpt/master/LICENSE.md). diff --git a/node_modules/barcode-detector/dist/cjs/BarcodeDetector.d.ts b/node_modules/barcode-detector/dist/cjs/BarcodeDetector.d.ts new file mode 100644 index 0000000..6dca7d7 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/BarcodeDetector.d.ts @@ -0,0 +1,35 @@ +/// +import { type ZXingReaderModule } from "zxing-wasm/reader"; +import { type BarcodeFormat, type ReadResultBarcodeFormat } from "./utils.js"; +export { type BarcodeFormat } from "./utils.js"; +export interface BarcodeDetectorOptions { + formats?: BarcodeFormat[]; +} +export interface Point2D { + x: number; + y: number; +} +export interface DetectedBarcode { + boundingBox: DOMRectReadOnly; + rawValue: string; + format: ReadResultBarcodeFormat; + cornerPoints: [Point2D, Point2D, Point2D, Point2D]; +} +interface CustomEventMap { + load: CustomEvent; + error: CustomEvent; +} +type ChangeEventListener = (type: K, callback: ((evt: CustomEventMap[K]) => void) | { + handleEvent(evt: CustomEventMap[K]): void; +} | null, options?: boolean | AddEventListenerOptions | undefined) => void; +export interface BarcodeDetector { + addEventListener: ChangeEventListener; + removeEventListener: ChangeEventListener; +} +export declare class BarcodeDetector extends EventTarget { + #private; + constructor(barcodeDectorOptions?: BarcodeDetectorOptions); + static getSupportedFormats(): Promise; + detect(image: ImageBitmapSourceWebCodecs): Promise; +} +export { setZXingModuleOverrides } from "zxing-wasm/reader"; diff --git a/node_modules/barcode-detector/dist/cjs/index.d.ts b/node_modules/barcode-detector/dist/cjs/index.d.ts new file mode 100644 index 0000000..5785a01 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/index.d.ts @@ -0,0 +1,2 @@ +import "./side-effects.js"; +export * from "./pure.js"; diff --git a/node_modules/barcode-detector/dist/cjs/index.js b/node_modules/barcode-detector/dist/cjs/index.js new file mode 100644 index 0000000..b986716 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/index.js @@ -0,0 +1 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./side-effects.js");const e=require("./pure.js");exports.BarcodeDetector=e.BarcodeDetector;exports.setZXingModuleOverrides=e.setZXingModuleOverrides; diff --git a/node_modules/barcode-detector/dist/cjs/package.json b/node_modules/barcode-detector/dist/cjs/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/node_modules/barcode-detector/dist/cjs/pure.d.ts b/node_modules/barcode-detector/dist/cjs/pure.d.ts new file mode 100644 index 0000000..29bd716 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/pure.d.ts @@ -0,0 +1 @@ +export * from "./BarcodeDetector.js"; diff --git a/node_modules/barcode-detector/dist/cjs/pure.js b/node_modules/barcode-detector/dist/cjs/pure.js new file mode 100644 index 0000000..0dd6016 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/pure.js @@ -0,0 +1,3 @@ +"use strict";var Ye=(o,h,s)=>{if(!h.has(o))throw TypeError("Cannot "+s)};var re=(o,h,s)=>(Ye(o,h,"read from private field"),s?s.call(o):h.get(o)),ze=(o,h,s)=>{if(h.has(o))throw TypeError("Cannot add the same private member more than once");h instanceof WeakSet?h.add(o):h.set(o,s)},Ne=(o,h,s,$)=>(Ye(o,h,"write to private field"),$?$.call(o,s):h.set(o,s),s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Qe=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],Da=[...Qe,["unknown"]].map(o=>o[0]),It=new Map(Qe);function xa(o){for(const[h,s]of It)if(o===s)return h;return"unknown"}function Fa(o){if(Ze(o))return{width:o.naturalWidth,height:o.naturalHeight};if(Je(o))return{width:o.width.baseVal.value,height:o.height.baseVal.value};if(Ke(o))return{width:o.videoWidth,height:o.videoHeight};if(er(o))return{width:o.width,height:o.height};if(nr(o))return{width:o.displayWidth,height:o.displayHeight};if(tr(o))return{width:o.width,height:o.height};if(rr(o))return{width:o.width,height:o.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ze(o){try{return o instanceof HTMLImageElement}catch{return!1}}function Je(o){try{return o instanceof SVGImageElement}catch{return!1}}function Ke(o){try{return o instanceof HTMLVideoElement}catch{return!1}}function tr(o){try{return o instanceof HTMLCanvasElement}catch{return!1}}function er(o){try{return o instanceof ImageBitmap}catch{return!1}}function rr(o){try{return o instanceof OffscreenCanvas}catch{return!1}}function nr(o){try{return o instanceof VideoFrame}catch{return!1}}function ar(o){try{return o instanceof Blob}catch{return!1}}function Sa(o){try{return o instanceof ImageData}catch{return!1}}function Ma(o,h){try{const s=new OffscreenCanvas(o,h);if(s.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return s;throw void 0}catch{const s=document.createElement("canvas");return s.width=o,s.height=h,s}}async function or(o){if(Ze(o)&&!await Wa(o))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Je(o)&&!await ka(o))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(nr(o)&&Ha(o))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(Ke(o)&&(o.readyState===0||o.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(er(o)&&Ua(o))throw new DOMException("The image source is detached.","InvalidStateError");const{width:h,height:s}=Fa(o);if(h===0||s===0)return null;const g=Ma(h,s).getContext("2d");g.drawImage(o,0,0);try{return g.getImageData(0,0,h,s)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function ja(o){let h;try{if(globalThis.createImageBitmap)h=await createImageBitmap(o);else if(globalThis.Image){h=new Image;let $="";try{$=URL.createObjectURL(o),h.src=$,await h.decode()}finally{URL.revokeObjectURL($)}}else return o}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await or(h)}function Ia(o){const{width:h,height:s}=o;if(h===0||s===0)return null;const $=o.getContext("2d");try{return $.getImageData(0,0,h,s)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function Ra(o){if(ar(o))return await ja(o);if(Sa(o)){if(Ba(o))throw new DOMException("The image data has been detached.","InvalidStateError");return o}return tr(o)||rr(o)?Ia(o):await or(o)}async function Wa(o){try{return await o.decode(),!0}catch{return!1}}async function ka(o){var h;try{return await((h=o.decode)==null?void 0:h.call(o)),!0}catch{return!1}}function Ha(o){return o.format===null}function Ba(o){return o.data.buffer.byteLength===0}function Ua(o){return o.width===0&&o.height===0}function Ge(o,h){return o instanceof DOMException?new DOMException(`${h}: ${o.message}`,o.name):o instanceof Error?new o.constructor(`${h}: ${o.message}`):new Error(`${h}: ${o}`)}const Xe=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Va(o){return o.join("|")}function La(o){const h=qe(o);let s=0,$=Xe.length-1;for(;s<=$;){const g=Math.floor((s+$)/2),b=Xe[g],H=qe(b);if(H===h)return b;H{const s=o.match(/_(.+?)\.wasm$/);return s?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${s[1]}/${o}`:h+o}};let ne=new WeakMap;function ae(o,h){var s;const $=ne.get(o);if($!=null&&$.modulePromise&&(h===void 0||Object.is(h,$.moduleOverrides)))return $.modulePromise;const g=(s=h!=null?h:$==null?void 0:$.moduleOverrides)!=null?s:Qa,b=o({...g});return ne.set(o,{moduleOverrides:g,modulePromise:b}),b}function Za(o,h){ne.set(o,{moduleOverrides:h})}async function Ja(o,h,s=lt){const $={...lt,...s},g=await ae(o),{size:b}=h,H=new Uint8Array(await h.arrayBuffer()),L=g._malloc(b);g.HEAPU8.set(H,L);const B=g.readBarcodesFromImage(L,b,ir(g,$));g._free(L);const S=[];for(let Y=0;Y{var o=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(h={}){var s=h,$,g;s.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},s),H="./this.program",L=typeof window=="object",B=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function Y(t){return s.locateFile?s.locateFile(t,S):S+t}var G;(L||B)&&(B?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),o&&(S=o),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",B&&(G=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),s.print||console.log.bind(console);var U=s.printErr||console.error.bind(console);Object.assign(s,b),b=null,s.arguments&&s.arguments,s.thisProgram&&(H=s.thisProgram),s.quit&&s.quit;var Q;s.wasmBinary&&(Q=s.wasmBinary),typeof WebAssembly!="object"&&bt("no native wasm support detected");var tt,dt=!1,V,W,at,ft,k,_,oe,ie;function se(){var t=tt.buffer;s.HEAP8=V=new Int8Array(t),s.HEAP16=at=new Int16Array(t),s.HEAPU8=W=new Uint8Array(t),s.HEAPU16=ft=new Uint16Array(t),s.HEAP32=k=new Int32Array(t),s.HEAPU32=_=new Uint32Array(t),s.HEAPF32=oe=new Float32Array(t),s.HEAPF64=ie=new Float64Array(t)}var ue=[],ce=[],le=[];function ur(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)dr(s.preRun.shift());Wt(ue)}function cr(){Wt(ce)}function lr(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)hr(s.postRun.shift());Wt(le)}function dr(t){ue.unshift(t)}function fr(t){ce.unshift(t)}function hr(t){le.unshift(t)}var et=0,ht=null;function pr(t){var e;et++,(e=s.monitorRunDependencies)===null||e===void 0||e.call(s,et)}function mr(t){var e;if(et--,(e=s.monitorRunDependencies)===null||e===void 0||e.call(s,et),et==0&&ht){var r=ht;ht=null,r()}}function bt(t){var e;(e=s.onAbort)===null||e===void 0||e.call(s,t),t="Aborted("+t+")",U(t),dt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var vr="data:application/octet-stream;base64,",de=t=>t.startsWith(vr),ot;ot="zxing_reader.wasm",de(ot)||(ot=Y(ot));function fe(t){if(t==ot&&Q)return new Uint8Array(Q);if(G)return G(t);throw"both async and sync fetching of the wasm failed"}function yr(t){return!Q&&(L||B)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>fe(t)):Promise.resolve().then(()=>fe(t))}function he(t,e,r){return yr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{U(`failed to asynchronously prepare wasm: ${n}`),bt(n)})}function gr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!de(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,r);return i.then(n,function(u){return U(`wasm streaming compile failed: ${u}`),U("falling back to ArrayBuffer instantiation"),he(e,r,n)})}):he(e,r,n)}function wr(){var t={a:sa};function e(n,a){return M=n.exports,tt=M.ia,se(),Te=M.ma,fr(M.ja),mr(),M}pr();function r(n){e(n.instance)}if(s.instantiateWasm)try{return s.instantiateWasm(t,e)}catch(n){U(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return gr(Q,ot,t,r).catch(g),{}}var Wt=t=>{for(;t.length>0;)t.shift()(s)};s.noExitRuntime;var Ct=[],Tt=0,$r=t=>{var e=new kt(t);return e.get_caught()||(e.set_caught(!0),Tt--),e.set_rethrown(!1),Ct.push(e),We(e.excPtr),e.get_exception_ptr()},Z=0,br=()=>{P(0,0);var t=Ct.pop();Re(t.excPtr),Z=0};function kt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,V[this.ptr+12>>0]=e},this.get_caught=function(){return V[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,V[this.ptr+13>>0]=e},this.get_rethrown=function(){return V[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=He(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var Cr=t=>{throw Z||(Z=t),Z},Ht=t=>{var e=Z;if(!e)return $t(0),0;var r=new kt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return $t(0),e;for(var a in t){var i=t[a];if(i===0||i===n)break;var u=r.ptr+16;if(ke(i,n,u))return $t(i),e}return $t(n),e},Tr=()=>Ht([]),_r=t=>Ht([t]),Pr=(t,e)=>Ht([t,e]),Er=()=>{var t=Ct.pop();t||bt("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(Ct.push(t),t.set_rethrown(!0),t.set_caught(!1),Tt++),Z=e,Z},Ar=(t,e,r)=>{var n=new kt(t);throw n.init(e,r),Z=t,Tt++,Z},Or=()=>Tt,_t={},Bt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Ut(t){return this.fromWireType(k[t>>2])}var it={},rt={},Pt={},pe,Et=t=>{throw new pe(t)},nt=(t,e,r)=>{t.forEach(function(c){Pt[c]=e});function n(c){var l=r(c);l.length!==t.length&&Et("Mismatched type converter count");for(var f=0;f{rt.hasOwnProperty(c)?a[l]=rt[c]:(i.push(c),it.hasOwnProperty(c)||(it[c]=[]),it[c].push(()=>{a[l]=rt[c],++u,u===i.length&&n(a)}))}),i.length===0&&n(a)},Dr=t=>{var e=_t[t];delete _t[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,i=a.map(u=>u.getterReturnType).concat(a.map(u=>u.setterArgumentType));nt([t],i,u=>{var c={};return a.forEach((l,f)=>{var p=l.fieldName,v=u[f],y=l.getter,w=l.getterContext,E=u[f+a.length],x=l.setter,T=l.setterContext;c[p]={read:R=>v.fromWireType(y(w,R)),write:(R,d)=>{var m=[];x(T,R,E.toWireType(m,d)),Bt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var p in c)f[p]=c[p].read(l);return n(l),f},toWireType:(l,f)=>{for(var p in c)if(!(p in f))throw new TypeError(`Missing field: "${p}"`);var v=r();for(p in c)c[p].write(v,f[p]);return l!==null&&l.push(n,v),v},argPackAdvance:q,readValueFromPointer:Ut,destructorFunction:n}]})},xr=(t,e,r,n,a)=>{},Fr=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);me=t},me,I=t=>{for(var e="",r=t;W[r];)e+=me[W[r++]];return e},st,C=t=>{throw new st(t)};function Sr(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),rt.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(rt[t]=e,delete Pt[t],it.hasOwnProperty(t)){var a=it[t];delete it[t],a.forEach(i=>i())}}function X(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Sr(t,e,r)}var q=8,Mr=(t,e,r,n)=>{e=I(e),X(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?r:n},argPackAdvance:q,readValueFromPointer:function(a){return this.fromWireType(W[a])},destructorFunction:null})},jr=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Vt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Lt=!1,ve=t=>{},Ir=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},ye=t=>{t.count.value-=1;var e=t.count.value===0;e&&Ir(t)},ge=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=ge(t,e,r.baseClass);return n===null?null:r.downcast(n)},we={},Rr=()=>Object.keys(vt).length,Wr=()=>{var t=[];for(var e in vt)vt.hasOwnProperty(e)&&t.push(vt[e]);return t},pt=[],Yt=()=>{for(;pt.length;){var t=pt.pop();t.$$.deleteScheduled=!1,t.delete()}},mt,kr=t=>{mt=t,pt.length&&mt&&mt(Yt)},Hr=()=>{s.getInheritedInstanceCount=Rr,s.getLiveInheritedInstances=Wr,s.flushPendingDeletes=Yt,s.setDelayFunction=kr},vt={},Br=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},Ur=(t,e)=>(e=Br(t,e),vt[e]),At=(t,e)=>{(!e.ptrType||!e.ptr)&&Et("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&Et("Both smartPtrType and smartPtr must be specified"),e.count={value:1},yt(Object.create(t,{$$:{value:e,writable:!0}}))};function Vr(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=Ur(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?At(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):At(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var i=this.registeredClass.getActualType(e),u=we[i];if(!u)return a.call(this);var c;this.isConst?c=u.constPointerType:c=u.pointerType;var l=ge(e,this.registeredClass,c.registeredClass);return l===null?a.call(this):this.isSmartPointer?At(c.registeredClass.instancePrototype,{ptrType:c,ptr:l,smartPtrType:this,smartPtr:t}):At(c.registeredClass.instancePrototype,{ptrType:c,ptr:l})}var yt=t=>typeof FinalizationRegistry>"u"?(yt=e=>e,t):(Lt=new FinalizationRegistry(e=>{ye(e.$$)}),yt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Lt.register(e,a,e)}return e},ve=e=>Lt.unregister(e),yt(t)),Lr=()=>{Object.assign(Ot.prototype,{isAliasOf(t){if(!(this instanceof Ot)||!(t instanceof Ot))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Vt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=yt(Object.create(Object.getPrototypeOf(this),{$$:{value:jr(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Vt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),ve(this),ye(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Vt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),pt.push(this),pt.length===1&&mt&&mt(Yt),this.$$.deleteScheduled=!0,this}})};function Ot(){}var gt=(t,e)=>Object.defineProperty(e,"name",{value:t}),$e=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},zt=(t,e,r)=>{s.hasOwnProperty(t)?((r===void 0||s[t].overloadTable!==void 0&&s[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),$e(s,t,t),s.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[t].overloadTable[r]=e):(s[t]=e,r!==void 0&&(s[t].numArguments=r))},Yr=48,zr=57,Nr=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Yr&&e<=zr?`_${t}`:t};function Gr(t,e,r,n,a,i,u,c){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=i,this.upcast=u,this.downcast=c,this.pureVirtualFunctions=[]}var Nt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function Xr(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${Zt(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Nt(e.$$.ptr,r,this.registeredClass);return n}function qr(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${Zt(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Nt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,J.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function Qr(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${Zt(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Nt(e.$$.ptr,r,this.registeredClass);return n}function be(t){return this.fromWireType(_[t>>2])}var Zr=()=>{Object.assign(Dt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:q,readValueFromPointer:be,deleteObject(t){t!==null&&t.delete()},fromWireType:Vr})};function Dt(t,e,r,n,a,i,u,c,l,f,p){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=i,this.sharingPolicy=u,this.rawGetPointee=c,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=p,!a&&e.baseClass===void 0?n?(this.toWireType=Xr,this.destructorFunction=null):(this.toWireType=Qr,this.destructorFunction=null):this.toWireType=qr}var Ce=(t,e,r)=>{s.hasOwnProperty(t)||Et("Replacing nonexistant public symbol"),s[t].overloadTable!==void 0&&r!==void 0?s[t].overloadTable[r]=e:(s[t]=e,s[t].argCount=r)},Jr=(t,e,r)=>{var n=s["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},xt=[],Te,A=t=>{var e=xt[t];return e||(t>=xt.length&&(xt.length=t+1),xt[t]=e=Te.get(t)),e},Kr=(t,e,r)=>{if(t.includes("j"))return Jr(t,e,r);var n=A(e).apply(null,r);return n},tn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Kr(t,e,r)}},N=(t,e)=>{t=I(t);function r(){return t.includes("j")?tn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},en=(t,e)=>{var r=gt(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},_e,Pe=t=>{var e=Ie(t),r=I(e);return K(e),r},Ft=(t,e)=>{var r=[],n={};function a(i){if(!n[i]&&!rt[i]){if(Pt[i]){Pt[i].forEach(a);return}r.push(i),n[i]=!0}}throw e.forEach(a),new _e(`${t}: `+r.map(Pe).join([", "]))},rn=(t,e,r,n,a,i,u,c,l,f,p,v,y)=>{p=I(p),i=N(a,i),c&&(c=N(u,c)),f&&(f=N(l,f)),y=N(v,y);var w=Nr(p);zt(w,function(){Ft(`Cannot construct ${p} due to unbound types`,[n])}),nt([t,e,r],n?[n]:[],function(E){E=E[0];var x,T;n?(x=E.registeredClass,T=x.instancePrototype):T=Ot.prototype;var R=gt(p,function(){if(Object.getPrototypeOf(this)!==d)throw new st("Use 'new' to construct "+p);if(m.constructor_body===void 0)throw new st(p+" has no accessible constructor");var Le=m.constructor_body[arguments.length];if(Le===void 0)throw new st(`Tried to invoke ctor of ${p} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return Le.apply(this,arguments)}),d=Object.create(T,{constructor:{value:R}});R.prototype=d;var m=new Gr(p,R,d,y,x,i,c,f);if(m.baseClass){var F,j;(j=(F=m.baseClass).__derivedClasses)!==null&&j!==void 0||(F.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var ut=new Dt(p,m,!0,!1,!1),jt=new Dt(p+"*",m,!1,!1,!1),Ve=new Dt(p+" const*",m,!1,!0,!1);return we[t]={pointerType:jt,constPointerType:Ve},Ce(w,R),[ut,jt,Ve]})},Gt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function nn(t){for(var e=1;e{var u=Gt(e,r);a=N(n,a),nt([],[t],function(c){c=c[0];var l=`constructor ${c.name}`;if(c.registeredClass.constructor_body===void 0&&(c.registeredClass.constructor_body=[]),c.registeredClass.constructor_body[e-1]!==void 0)throw new st(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${c.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return c.registeredClass.constructor_body[e-1]=()=>{Ft(`Cannot construct ${c.name} due to unbound types`,u)},nt([],u,f=>(f.splice(1,0,null),c.registeredClass.constructor_body[e-1]=Xt(l,f,null,a,i),[])),[]})},Ee=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},on=(t,e,r,n,a,i,u,c,l)=>{var f=Gt(r,n);e=I(e),e=Ee(e),i=N(a,i),nt([],[t],function(p){p=p[0];var v=`${p.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),c&&p.registeredClass.pureVirtualFunctions.push(e);function y(){Ft(`Cannot call ${v} due to unbound types`,f)}var w=p.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==p.name&&E.argCount===r-2?(y.argCount=r-2,y.className=p.name,w[e]=y):($e(w,e,v),w[e].overloadTable[r-2]=y),nt([],f,function(x){var T=Xt(v,x,p,i,u);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function sn(){Object.assign(Ae.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function Ae(){this.allocated=[void 0],this.freelist=[]}var z=new Ae,qt=t=>{t>=z.reserved&&--z.get(t).refcount===0&&z.free(t)},un=()=>{for(var t=0,e=z.reserved;e{z.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),z.reserved=z.allocated.length,s.count_emval_handles=un},J={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),z.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return z.allocate({refcount:1,value:t})}}},ln=(t,e)=>{e=I(e),X(t,{name:e,fromWireType:r=>{var n=J.toValue(r);return qt(r),n},toWireType:(r,n)=>J.toHandle(n),argPackAdvance:q,readValueFromPointer:Ut,destructorFunction:null})},dn=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(V[n>>0])}:function(n){return this.fromWireType(W[n>>0])};case 2:return r?function(n){return this.fromWireType(at[n>>1])}:function(n){return this.fromWireType(ft[n>>1])};case 4:return r?function(n){return this.fromWireType(k[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},fn=(t,e,r,n)=>{e=I(e);function a(){}a.values={},X(t,{name:e,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,u)=>u.value,argPackAdvance:q,readValueFromPointer:dn(e,r,n),destructorFunction:null}),zt(e,a)},Qt=(t,e)=>{var r=rt[t];return r===void 0&&C(e+" has unknown type "+Pe(t)),r},hn=(t,e,r)=>{var n=Qt(t,"enum");e=I(e);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:gt(`${n.name}_${e}`,function(){})}});a.values[r]=i,a[e]=i},Zt=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},pn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(oe[r>>2])};case 8:return function(r){return this.fromWireType(ie[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},mn=(t,e,r)=>{e=I(e),X(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:q,readValueFromPointer:pn(e,r),destructorFunction:null})},vn=(t,e,r,n,a,i,u)=>{var c=Gt(e,r);t=I(t),t=Ee(t),a=N(n,a),zt(t,function(){Ft(`Cannot call ${t} due to unbound types`,c)},e-1),nt([],c,function(l){var f=[l[0],null].concat(l.slice(1));return Ce(t,Xt(t,f,null,a,i),e-1),[]})},yn=(t,e,r)=>{switch(e){case 1:return r?n=>V[n>>0]:n=>W[n>>0];case 2:return r?n=>at[n>>1]:n=>ft[n>>1];case 4:return r?n=>k[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},gn=(t,e,r,n,a)=>{e=I(e);var i=p=>p;if(n===0){var u=32-8*r;i=p=>p<>>u}var c=e.includes("unsigned"),l=(p,v)=>{},f;c?f=function(p,v){return l(v,this.name),v>>>0}:f=function(p,v){return l(v,this.name),v},X(t,{name:e,fromWireType:i,toWireType:f,argPackAdvance:q,readValueFromPointer:yn(e,r,n!==0),destructorFunction:null})},wn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function i(u){var c=_[u>>2],l=_[u+4>>2];return new a(V.buffer,l,c)}r=I(r),X(t,{name:r,fromWireType:i,argPackAdvance:q,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},Oe=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,i=r+n-1,u=0;u=55296&&c<=57343){var l=t.charCodeAt(++u);c=65536+((c&1023)<<10)|l&1023}if(c<=127){if(r>=i)break;e[r++]=c}else if(c<=2047){if(r+1>=i)break;e[r++]=192|c>>6,e[r++]=128|c&63}else if(c<=65535){if(r+2>=i)break;e[r++]=224|c>>12,e[r++]=128|c>>6&63,e[r++]=128|c&63}else{if(r+3>=i)break;e[r++]=240|c>>18,e[r++]=128|c>>12&63,e[r++]=128|c>>6&63,e[r++]=128|c&63}}return e[r]=0,r-a},$n=(t,e,r)=>Oe(t,W,e,r),De=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},xe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,bn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&xe)return xe.decode(t.subarray(e,a));for(var i="";e>10,56320|f&1023)}}return i},Jt=(t,e)=>t?bn(W,t,e):"",Cn=(t,e)=>{e=I(e);var r=e==="std::string";X(t,{name:e,fromWireType(n){var a=_[n>>2],i=n+4,u;if(r)for(var c=i,l=0;l<=a;++l){var f=i+l;if(l==a||W[f]==0){var p=f-c,v=Jt(c,p);u===void 0?u=v:(u+="\0",u+=v),c=f+1}}else{for(var y=new Array(a),l=0;l>2]=i,r&&u)$n(a,l,i+1);else if(u)for(var f=0;f255&&(K(l),C("String has UTF-16 code units that do not fit in 8 bits")),W[l+f]=p}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&ft[n];)++n;if(r=n<<1,r-t>32&&Fe)return Fe.decode(W.subarray(t,r));for(var i="",u=0;!(u>=e/2);++u){var c=at[t+u*2>>1];if(c==0)break;i+=String.fromCharCode(c)}return i},_n=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,i=r>1]=c,e+=2}return at[e>>1]=0,e-a},Pn=t=>t.length*2,En=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=k[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},An=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,i=a+r-4,u=0;u=55296&&c<=57343){var l=t.charCodeAt(++u);c=65536+((c&1023)<<10)|l&1023}if(k[e>>2]=c,e+=4,e+4>i)break}return k[e>>2]=0,e-a},On=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},Dn=(t,e,r)=>{r=I(r);var n,a,i,u,c;e===2?(n=Tn,a=_n,u=Pn,i=()=>ft,c=1):e===4&&(n=En,a=An,u=On,i=()=>_,c=2),X(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],p=i(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||p[E>>c]==0){var x=E-y,T=n(y,x);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return K(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var p=u(f),v=ee(4+p+e);return _[v>>2]=p>>c,a(f,v+4,p+e),l!==null&&l.push(K,v),v},argPackAdvance:q,readValueFromPointer:Ut,destructorFunction(l){K(l)}})},xn=(t,e,r,n,a,i)=>{_t[t]={name:I(e),rawConstructor:N(r,n),rawDestructor:N(a,i),fields:[]}},Fn=(t,e,r,n,a,i,u,c,l,f)=>{_t[t].fields.push({fieldName:I(e),getterReturnType:r,getter:N(n,a),getterContext:i,setterArgumentType:u,setter:N(c,l),setterContext:f})},Sn=(t,e)=>{e=I(e),X(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},Kt=[],Mn=(t,e,r,n)=>(t=Kt[t],e=J.toValue(e),t(null,e,r,n)),jn={},In=t=>{var e=jn[t];return e===void 0?I(t):e},Se=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Rn=t=>t===0?J.toHandle(Se()):(t=In(t),J.toHandle(Se()[t])),Wn=t=>{var e=Kt.length;return Kt.push(t),e},kn=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},Hn=Reflect.construct,Bn=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=J.toHandle(n)),a},Un=(t,e,r)=>{var n=kn(t,e),a=n.shift();t--;var i=new Array(t),u=(l,f,p,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return Wn(gt(c,u))},Vn=t=>{t>4&&(z.get(t).refcount+=1)},Ln=t=>{var e=J.toValue(t);Bt(e),qt(t)},Yn=(t,e)=>{t=Qt(t,"_emval_take_value");var r=t.readValueFromPointer(e);return J.toHandle(r)},zn=()=>{bt("")},Nn=(t,e,r)=>W.copyWithin(t,e,e+r),Gn=()=>2147483648,Xn=t=>{var e=tt.buffer,r=(t-e.byteLength+65535)/65536;try{return tt.grow(r),se(),1}catch{}},qn=t=>{var e=W.length;t>>>=0;var r=Gn();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var i=e*(1+.2/a);i=Math.min(i,t+100663296);var u=Math.min(r,n(Math.max(t,i),65536)),c=Xn(u);if(c)return!0}return!1},te={},Qn=()=>H||"./this.program",wt=()=>{if(!wt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Qn()};for(var r in te)te[r]===void 0?delete e[r]:e[r]=te[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);wt.strings=n}return wt.strings},Zn=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);V[e>>0]=0},Jn=(t,e)=>{var r=0;return wt().forEach((n,a)=>{var i=e+r;_[t+a*4>>2]=i,Zn(n,i),r+=n.length+1}),0},Kn=(t,e)=>{var r=wt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},ta=t=>t,St=t=>t%4===0&&(t%100!==0||t%400===0),ea=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Me=[31,29,31,30,31,30,31,31,30,31,30,31],je=[31,28,31,30,31,30,31,31,30,31,30,31],ra=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=St(r.getFullYear()),a=r.getMonth(),i=(n?Me:je)[a];if(e>i-r.getDate())e-=i-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function na(t,e,r){var n=r>0?r:De(t)+1,a=new Array(n),i=Oe(t,a,0,a.length);return e&&(a.length=i),a}var aa=(t,e)=>{V.set(t,e)},oa=(t,e,r,n)=>{var a=_[n+40>>2],i={tm_sec:k[n>>2],tm_min:k[n+4>>2],tm_hour:k[n+8>>2],tm_mday:k[n+12>>2],tm_mon:k[n+16>>2],tm_year:k[n+20>>2],tm_wday:k[n+24>>2],tm_yday:k[n+28>>2],tm_isdst:k[n+32>>2],tm_gmtoff:k[n+36>>2],tm_zone:a?Jt(a):""},u=Jt(r),c={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in c)u=u.replace(new RegExp(l,"g"),c[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],p=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,F){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=F(d.getFullYear()-m.getFullYear()))===0&&(j=F(d.getMonth()-m.getMonth()))===0&&(j=F(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function x(d){var m=ra(new Date(d.tm_year+1900,0,1),d.tm_yday),F=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),ut=E(F),jt=E(j);return w(ut,m)<=0?w(jt,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>p[d.tm_mon].substring(0,3),"%B":d=>p[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>x(d).toString().substring(2),"%G":d=>x(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+ea(St(d.tm_year+1900)?Me:je,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var F=(d.tm_wday+371-d.tm_yday)%7;F!=4&&(F!=3||!St(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&St(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,F=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(F?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};u=u.replace(/%%/g,"\0\0");for(var l in T)u.includes(l)&&(u=u.replace(new RegExp(l,"g"),T[l](i)));u=u.replace(/\0\0/g,"%");var R=na(u,!1);return R.length>e?0:(aa(R,t),R.length-1)},ia=(t,e,r,n,a)=>oa(t,e,r,n);pe=s.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},Fr(),st=s.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},Lr(),Hr(),Zr(),_e=s.UnboundTypeError=en(Error,"UnboundTypeError"),sn(),cn();var sa={s:$r,u:br,b:Tr,g:_r,q:Pr,J:Er,f:Ar,V:Or,d:Cr,da:Dr,Q:xr,_:Mr,ca:rn,ba:an,w:on,Y:ln,x:fn,h:hn,L:mn,M:vn,t:gn,o:wn,K:Cn,C:Dn,A:xn,ea:Fn,$:Sn,R:Mn,ha:qt,fa:Rn,Z:Un,N:Vn,O:Ln,aa:Yn,B:zn,X:Nn,W:qn,T:Jn,U:Kn,E:Ta,D:fa,F:Ca,n:_a,a:ua,e:pa,m:da,k:va,H:$a,v:ga,G:ba,z:Ea,P:Oa,l:ma,j:ha,c:la,p:ca,I:wa,r:Pa,i:ya,y:Aa,ga:ta,S:ia},M=wr(),K=s._free=t=>(K=s._free=M.ka)(t),ee=s._malloc=t=>(ee=s._malloc=M.la)(t),Ie=t=>(Ie=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),$t=t=>($t=M.pa)(t),O=()=>(O=M.qa)(),D=t=>(D=M.ra)(t),Re=t=>(Re=M.sa)(t),We=t=>(We=M.ta)(t),ke=(t,e,r)=>(ke=M.ua)(t,e,r),He=t=>(He=M.va)(t);s.dynCall_viijii=(t,e,r,n,a,i,u)=>(s.dynCall_viijii=M.wa)(t,e,r,n,a,i,u);var Be=s.dynCall_jiiii=(t,e,r,n,a)=>(Be=s.dynCall_jiiii=M.xa)(t,e,r,n,a);s.dynCall_iiiiij=(t,e,r,n,a,i,u)=>(s.dynCall_iiiiij=M.ya)(t,e,r,n,a,i,u),s.dynCall_iiiiijj=(t,e,r,n,a,i,u,c,l)=>(s.dynCall_iiiiijj=M.za)(t,e,r,n,a,i,u,c,l),s.dynCall_iiiiiijj=(t,e,r,n,a,i,u,c,l,f)=>(s.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,i,u,c,l,f);function ua(t,e){var r=O();try{return A(t)(e)}catch(n){if(D(r),n!==n+0)throw n;P(1,0)}}function ca(t,e,r,n){var a=O();try{A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function la(t,e,r){var n=O();try{A(t)(e,r)}catch(a){if(D(n),a!==a+0)throw a;P(1,0)}}function da(t,e,r,n){var a=O();try{return A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function fa(t,e,r,n,a){var i=O();try{return A(t)(e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}function ha(t,e){var r=O();try{A(t)(e)}catch(n){if(D(r),n!==n+0)throw n;P(1,0)}}function pa(t,e,r){var n=O();try{return A(t)(e,r)}catch(a){if(D(n),a!==a+0)throw a;P(1,0)}}function ma(t){var e=O();try{A(t)()}catch(r){if(D(e),r!==r+0)throw r;P(1,0)}}function va(t,e,r,n,a){var i=O();try{return A(t)(e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}function ya(t,e,r,n,a,i,u,c,l,f,p){var v=O();try{A(t)(e,r,n,a,i,u,c,l,f,p)}catch(y){if(D(v),y!==y+0)throw y;P(1,0)}}function ga(t,e,r,n,a,i,u){var c=O();try{return A(t)(e,r,n,a,i,u)}catch(l){if(D(c),l!==l+0)throw l;P(1,0)}}function wa(t,e,r,n,a){var i=O();try{A(t)(e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}function $a(t,e,r,n,a,i){var u=O();try{return A(t)(e,r,n,a,i)}catch(c){if(D(u),c!==c+0)throw c;P(1,0)}}function ba(t,e,r,n,a,i,u,c){var l=O();try{return A(t)(e,r,n,a,i,u,c)}catch(f){if(D(l),f!==f+0)throw f;P(1,0)}}function Ca(t,e,r,n){var a=O();try{return A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function Ta(t,e,r,n){var a=O();try{return A(t)(e,r,n)}catch(i){if(D(a),i!==i+0)throw i;P(1,0)}}function _a(t){var e=O();try{return A(t)()}catch(r){if(D(e),r!==r+0)throw r;P(1,0)}}function Pa(t,e,r,n,a,i,u,c){var l=O();try{A(t)(e,r,n,a,i,u,c)}catch(f){if(D(l),f!==f+0)throw f;P(1,0)}}function Ea(t,e,r,n,a,i,u,c,l,f,p,v){var y=O();try{return A(t)(e,r,n,a,i,u,c,l,f,p,v)}catch(w){if(D(y),w!==w+0)throw w;P(1,0)}}function Aa(t,e,r,n,a,i,u,c,l,f,p,v,y,w,E,x){var T=O();try{A(t)(e,r,n,a,i,u,c,l,f,p,v,y,w,E,x)}catch(R){if(D(T),R!==R+0)throw R;P(1,0)}}function Oa(t,e,r,n,a){var i=O();try{return Be(t,e,r,n,a)}catch(u){if(D(i),u!==u+0)throw u;P(1,0)}}var Mt;ht=function t(){Mt||Ue(),Mt||(ht=t)};function Ue(){if(et>0||(ur(),et>0))return;function t(){Mt||(Mt=!0,s.calledRun=!0,!dt&&(cr(),$(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),lr()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),t()},1)):t()}if(s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ue(),h.ready}})();function to(o){return ae(Rt,o)}function eo(o){return Za(Rt,o)}async function ro(o,h){return Ja(Rt,o,h)}async function no(o,h){return Ka(Rt,o,h)}var ct;class ao extends EventTarget{constructor(s={}){var $;super();ze(this,ct,void 0);try{const g=($=s==null?void 0:s.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!It.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),Ne(this,ct,g!=null?g:[]),to().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw Ge(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return Da.filter(s=>s!=="unknown")}async detect(s){try{const $=await Ra(s);if($===null)return[];let g;try{ar($)?g=await ro($,{tryHarder:!0,formats:re(this,ct).map(b=>It.get(b))}):g=await no($,{tryHarder:!0,formats:re(this,ct).map(b=>It.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:H,y:L},topRight:{x:B,y:S},bottomLeft:{x:Y,y:G},bottomRight:{x:U,y:Q}}=b.position,tt=Math.min(H,B,Y,U),dt=Math.min(L,S,G,Q),V=Math.max(H,B,Y,U),W=Math.max(L,S,G,Q);return{boundingBox:new DOMRectReadOnly(tt,dt,V-tt,W-dt),rawValue:b.text,format:xa(b.format),cornerPoints:[{x:H,y:L},{x:B,y:S},{x:U,y:Q},{x:Y,y:G}]}})}catch($){throw Ge($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}ct=new WeakMap;exports.BarcodeDetector=ao;exports.setZXingModuleOverrides=eo; diff --git a/node_modules/barcode-detector/dist/cjs/side-effects.d.ts b/node_modules/barcode-detector/dist/cjs/side-effects.d.ts new file mode 100644 index 0000000..9b0973c --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/side-effects.d.ts @@ -0,0 +1,8 @@ +export { setZXingModuleOverrides } from "./BarcodeDetector.js"; +declare global { + var BarcodeDetector: typeof import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeDetector = import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeFormat = import("./BarcodeDetector.js").BarcodeFormat; + type BarcodeDetectorOptions = import("./BarcodeDetector.js").BarcodeDetectorOptions; + type DetectedBarcode = import("./BarcodeDetector.js").DetectedBarcode; +} diff --git a/node_modules/barcode-detector/dist/cjs/side-effects.js b/node_modules/barcode-detector/dist/cjs/side-effects.js new file mode 100644 index 0000000..4173943 --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/side-effects.js @@ -0,0 +1 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./pure.js");var e;(e=globalThis.BarcodeDetector)!=null||(globalThis.BarcodeDetector=r.BarcodeDetector);exports.setZXingModuleOverrides=r.setZXingModuleOverrides; diff --git a/node_modules/barcode-detector/dist/cjs/utils.d.ts b/node_modules/barcode-detector/dist/cjs/utils.d.ts new file mode 100644 index 0000000..65583cb --- /dev/null +++ b/node_modules/barcode-detector/dist/cjs/utils.d.ts @@ -0,0 +1,15 @@ +/// +import { type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat } from "zxing-wasm/reader"; +export declare const BARCODE_FORMATS: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +export type BarcodeFormat = (typeof BARCODE_FORMATS)[number]; +export type ReadResultBarcodeFormat = Exclude; +export declare const formatMap: Map<"aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown", ReadInputBarcodeFormat>; +export declare function convertFormat(target: ReadOutputBarcodeFormat): ReadResultBarcodeFormat; +export declare function isBlob(image: ImageBitmapSourceWebCodecs): image is Blob; +export declare function getImageDataOrBlobFromImageBitmapSource(image: ImageBitmapSourceWebCodecs): Promise; +declare global { + interface SVGImageElement { + decode?(): Promise; + } +} +export declare function addPrefixToExceptionOrError(e: unknown, prefix: string): TypeError | DOMException; diff --git a/node_modules/barcode-detector/dist/es/BarcodeDetector.d.ts b/node_modules/barcode-detector/dist/es/BarcodeDetector.d.ts new file mode 100644 index 0000000..6dca7d7 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/BarcodeDetector.d.ts @@ -0,0 +1,35 @@ +/// +import { type ZXingReaderModule } from "zxing-wasm/reader"; +import { type BarcodeFormat, type ReadResultBarcodeFormat } from "./utils.js"; +export { type BarcodeFormat } from "./utils.js"; +export interface BarcodeDetectorOptions { + formats?: BarcodeFormat[]; +} +export interface Point2D { + x: number; + y: number; +} +export interface DetectedBarcode { + boundingBox: DOMRectReadOnly; + rawValue: string; + format: ReadResultBarcodeFormat; + cornerPoints: [Point2D, Point2D, Point2D, Point2D]; +} +interface CustomEventMap { + load: CustomEvent; + error: CustomEvent; +} +type ChangeEventListener = (type: K, callback: ((evt: CustomEventMap[K]) => void) | { + handleEvent(evt: CustomEventMap[K]): void; +} | null, options?: boolean | AddEventListenerOptions | undefined) => void; +export interface BarcodeDetector { + addEventListener: ChangeEventListener; + removeEventListener: ChangeEventListener; +} +export declare class BarcodeDetector extends EventTarget { + #private; + constructor(barcodeDectorOptions?: BarcodeDetectorOptions); + static getSupportedFormats(): Promise; + detect(image: ImageBitmapSourceWebCodecs): Promise; +} +export { setZXingModuleOverrides } from "zxing-wasm/reader"; diff --git a/node_modules/barcode-detector/dist/es/index.d.ts b/node_modules/barcode-detector/dist/es/index.d.ts new file mode 100644 index 0000000..5785a01 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/index.d.ts @@ -0,0 +1,2 @@ +import "./side-effects.js"; +export * from "./pure.js"; diff --git a/node_modules/barcode-detector/dist/es/index.js b/node_modules/barcode-detector/dist/es/index.js new file mode 100644 index 0000000..d82ed8f --- /dev/null +++ b/node_modules/barcode-detector/dist/es/index.js @@ -0,0 +1,6 @@ +import "./side-effects.js"; +import { BarcodeDetector as t, setZXingModuleOverrides as d } from "./pure.js"; +export { + t as BarcodeDetector, + d as setZXingModuleOverrides +}; diff --git a/node_modules/barcode-detector/dist/es/pure.d.ts b/node_modules/barcode-detector/dist/es/pure.d.ts new file mode 100644 index 0000000..29bd716 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/pure.d.ts @@ -0,0 +1 @@ +export * from "./BarcodeDetector.js"; diff --git a/node_modules/barcode-detector/dist/es/pure.js b/node_modules/barcode-detector/dist/es/pure.js new file mode 100644 index 0000000..98b66d9 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/pure.js @@ -0,0 +1,2252 @@ +var Ye = (o, h, s) => { + if (!h.has(o)) + throw TypeError("Cannot " + s); +}; +var re = (o, h, s) => (Ye(o, h, "read from private field"), s ? s.call(o) : h.get(o)), ze = (o, h, s) => { + if (h.has(o)) + throw TypeError("Cannot add the same private member more than once"); + h instanceof WeakSet ? h.add(o) : h.set(o, s); +}, Ne = (o, h, s, $) => (Ye(o, h, "write to private field"), $ ? $.call(o, s) : h.set(o, s), s); +const Qe = [ + ["aztec", "Aztec"], + ["code_128", "Code128"], + ["code_39", "Code39"], + ["code_93", "Code93"], + ["codabar", "Codabar"], + ["databar", "DataBar"], + ["databar_expanded", "DataBarExpanded"], + ["data_matrix", "DataMatrix"], + ["dx_film_edge", "DXFilmEdge"], + ["ean_13", "EAN-13"], + ["ean_8", "EAN-8"], + ["itf", "ITF"], + ["maxi_code", "MaxiCode"], + ["micro_qr_code", "MicroQRCode"], + ["pdf417", "PDF417"], + ["qr_code", "QRCode"], + ["rm_qr_code", "rMQRCode"], + ["upc_a", "UPC-A"], + ["upc_e", "UPC-E"], + ["linear_codes", "Linear-Codes"], + ["matrix_codes", "Matrix-Codes"] +], Da = [...Qe, ["unknown"]].map((o) => o[0]), It = new Map( + Qe +); +function xa(o) { + for (const [h, s] of It) + if (o === s) + return h; + return "unknown"; +} +function Fa(o) { + if (Ze(o)) + return { + width: o.naturalWidth, + height: o.naturalHeight + }; + if (Je(o)) + return { + width: o.width.baseVal.value, + height: o.height.baseVal.value + }; + if (Ke(o)) + return { + width: o.videoWidth, + height: o.videoHeight + }; + if (er(o)) + return { + width: o.width, + height: o.height + }; + if (nr(o)) + return { + width: o.displayWidth, + height: o.displayHeight + }; + if (tr(o)) + return { + width: o.width, + height: o.height + }; + if (rr(o)) + return { + width: o.width, + height: o.height + }; + throw new TypeError( + "The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'." + ); +} +function Ze(o) { + try { + return o instanceof HTMLImageElement; + } catch { + return !1; + } +} +function Je(o) { + try { + return o instanceof SVGImageElement; + } catch { + return !1; + } +} +function Ke(o) { + try { + return o instanceof HTMLVideoElement; + } catch { + return !1; + } +} +function tr(o) { + try { + return o instanceof HTMLCanvasElement; + } catch { + return !1; + } +} +function er(o) { + try { + return o instanceof ImageBitmap; + } catch { + return !1; + } +} +function rr(o) { + try { + return o instanceof OffscreenCanvas; + } catch { + return !1; + } +} +function nr(o) { + try { + return o instanceof VideoFrame; + } catch { + return !1; + } +} +function ar(o) { + try { + return o instanceof Blob; + } catch { + return !1; + } +} +function Ma(o) { + try { + return o instanceof ImageData; + } catch { + return !1; + } +} +function Sa(o, h) { + try { + const s = new OffscreenCanvas(o, h); + if (s.getContext("2d") instanceof OffscreenCanvasRenderingContext2D) + return s; + throw void 0; + } catch { + const s = document.createElement("canvas"); + return s.width = o, s.height = h, s; + } +} +async function or(o) { + if (Ze(o) && !await Wa(o)) + throw new DOMException( + "Failed to load or decode HTMLImageElement.", + "InvalidStateError" + ); + if (Je(o) && !await ka(o)) + throw new DOMException( + "Failed to load or decode SVGImageElement.", + "InvalidStateError" + ); + if (nr(o) && Ha(o)) + throw new DOMException("VideoFrame is closed.", "InvalidStateError"); + if (Ke(o) && (o.readyState === 0 || o.readyState === 1)) + throw new DOMException("Invalid element or state.", "InvalidStateError"); + if (er(o) && Ua(o)) + throw new DOMException( + "The image source is detached.", + "InvalidStateError" + ); + const { width: h, height: s } = Fa(o); + if (h === 0 || s === 0) + return null; + const g = Sa(h, s).getContext("2d"); + g.drawImage(o, 0, 0); + try { + return g.getImageData(0, 0, h, s); + } catch { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function ja(o) { + let h; + try { + if (globalThis.createImageBitmap) + h = await createImageBitmap(o); + else if (globalThis.Image) { + h = new Image(); + let $ = ""; + try { + $ = URL.createObjectURL(o), h.src = $, await h.decode(); + } finally { + URL.revokeObjectURL($); + } + } else + return o; + } catch { + throw new DOMException( + "Failed to load or decode Blob.", + "InvalidStateError" + ); + } + return await or(h); +} +function Ia(o) { + const { width: h, height: s } = o; + if (h === 0 || s === 0) + return null; + const $ = o.getContext("2d"); + try { + return $.getImageData(0, 0, h, s); + } catch { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Ra(o) { + if (ar(o)) + return await ja(o); + if (Ma(o)) { + if (Ba(o)) + throw new DOMException( + "The image data has been detached.", + "InvalidStateError" + ); + return o; + } + return tr(o) || rr(o) ? Ia(o) : await or(o); +} +async function Wa(o) { + try { + return await o.decode(), !0; + } catch { + return !1; + } +} +async function ka(o) { + var h; + try { + return await ((h = o.decode) == null ? void 0 : h.call(o)), !0; + } catch { + return !1; + } +} +function Ha(o) { + return o.format === null; +} +function Ba(o) { + return o.data.buffer.byteLength === 0; +} +function Ua(o) { + return o.width === 0 && o.height === 0; +} +function Ge(o, h) { + return o instanceof DOMException ? new DOMException(`${h}: ${o.message}`, o.name) : o instanceof Error ? new o.constructor(`${h}: ${o.message}`) : new Error(`${h}: ${o}`); +} +const Xe = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function Va(o) { + return o.join("|"); +} +function La(o) { + const h = qe(o); + let s = 0, $ = Xe.length - 1; + for (; s <= $; ) { + const g = Math.floor((s + $) / 2), b = Xe[g], H = qe(b); + if (H === h) + return b; + H < h ? s = g + 1 : $ = g - 1; + } + return "None"; +} +function qe(o) { + return o.toLowerCase().replace(/_-\[\]/g, ""); +} +function Ya(o, h) { + return o.Binarizer[h]; +} +function za(o, h) { + return o.CharacterSet[h]; +} +const Na = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function Ga(o) { + return Na[o.value]; +} +function Xa(o, h) { + return o.EanAddOnSymbol[h]; +} +function qa(o, h) { + return o.TextMode[h]; +} +const lt = { + formats: [], + tryHarder: !0, + tryRotate: !0, + tryInvert: !0, + tryDownscale: !0, + binarizer: "LocalAverage", + isPure: !1, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: !1, + validateCode39CheckSum: !1, + validateITFCheckSum: !1, + returnCodabarStartEnd: !1, + returnErrors: !1, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function ir(o, h) { + return { + ...h, + formats: Va(h.formats), + binarizer: Ya(o, h.binarizer), + eanAddOnSymbol: Xa( + o, + h.eanAddOnSymbol + ), + textMode: qa(o, h.textMode), + characterSet: za( + o, + h.characterSet + ) + }; +} +function sr(o) { + return { + ...o, + format: La(o.format), + eccLevel: o.eccLevel, + contentType: Ga(o.contentType) + }; +} +const Qa = { + locateFile: (o, h) => { + const s = o.match(/_(.+?)\.wasm$/); + return s ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${s[1]}/${o}` : h + o; + } +}; +let ne = /* @__PURE__ */ new WeakMap(); +function ae(o, h) { + var s; + const $ = ne.get(o); + if ($ != null && $.modulePromise && (h === void 0 || Object.is(h, $.moduleOverrides))) + return $.modulePromise; + const g = (s = h != null ? h : $ == null ? void 0 : $.moduleOverrides) != null ? s : Qa, b = o({ + ...g + }); + return ne.set(o, { + moduleOverrides: g, + modulePromise: b + }), b; +} +function Za(o, h) { + ne.set(o, { + moduleOverrides: h + }); +} +async function Ja(o, h, s = lt) { + const $ = { + ...lt, + ...s + }, g = await ae(o), { size: b } = h, H = new Uint8Array(await h.arrayBuffer()), L = g._malloc(b); + g.HEAPU8.set(H, L); + const B = g.readBarcodesFromImage( + L, + b, + ir(g, $) + ); + g._free(L); + const M = []; + for (let Y = 0; Y < B.size(); ++Y) + M.push( + sr(B.get(Y)) + ); + return M; +} +async function Ka(o, h, s = lt) { + const $ = { + ...lt, + ...s + }, g = await ae(o), { + data: b, + width: H, + height: L, + data: { byteLength: B } + } = h, M = g._malloc(B); + g.HEAPU8.set(b, M); + const Y = g.readBarcodesFromPixmap( + M, + H, + L, + ir(g, $) + ); + g._free(M); + const G = []; + for (let U = 0; U < Y.size(); ++U) + G.push( + sr(Y.get(U)) + ); + return G; +} +({ + ...lt, + formats: [...lt.formats] +}); +var Rt = (() => { + var o = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(h = {}) { + var s = h, $, g; + s.ready = new Promise((t, e) => { + $ = t, g = e; + }); + var b = Object.assign({}, s), H = "./this.program", L = typeof window == "object", B = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var M = ""; + function Y(t) { + return s.locateFile ? s.locateFile(t, M) : M + t; + } + var G; + (L || B) && (B ? M = self.location.href : typeof document < "u" && document.currentScript && (M = document.currentScript.src), o && (M = o), M.indexOf("blob:") !== 0 ? M = M.substr(0, M.replace(/[?#].*/, "").lastIndexOf("/") + 1) : M = "", B && (G = (t) => { + var e = new XMLHttpRequest(); + return e.open("GET", t, !1), e.responseType = "arraybuffer", e.send(null), new Uint8Array(e.response); + })), s.print || console.log.bind(console); + var U = s.printErr || console.error.bind(console); + Object.assign(s, b), b = null, s.arguments && s.arguments, s.thisProgram && (H = s.thisProgram), s.quit && s.quit; + var Q; + s.wasmBinary && (Q = s.wasmBinary), typeof WebAssembly != "object" && bt("no native wasm support detected"); + var tt, dt = !1, V, W, at, ft, k, T, oe, ie; + function se() { + var t = tt.buffer; + s.HEAP8 = V = new Int8Array(t), s.HEAP16 = at = new Int16Array(t), s.HEAPU8 = W = new Uint8Array(t), s.HEAPU16 = ft = new Uint16Array(t), s.HEAP32 = k = new Int32Array(t), s.HEAPU32 = T = new Uint32Array(t), s.HEAPF32 = oe = new Float32Array(t), s.HEAPF64 = ie = new Float64Array(t); + } + var ue = [], ce = [], le = []; + function ur() { + if (s.preRun) + for (typeof s.preRun == "function" && (s.preRun = [s.preRun]); s.preRun.length; ) + dr(s.preRun.shift()); + Wt(ue); + } + function cr() { + Wt(ce); + } + function lr() { + if (s.postRun) + for (typeof s.postRun == "function" && (s.postRun = [s.postRun]); s.postRun.length; ) + hr(s.postRun.shift()); + Wt(le); + } + function dr(t) { + ue.unshift(t); + } + function fr(t) { + ce.unshift(t); + } + function hr(t) { + le.unshift(t); + } + var et = 0, ht = null; + function pr(t) { + var e; + et++, (e = s.monitorRunDependencies) === null || e === void 0 || e.call(s, et); + } + function mr(t) { + var e; + if (et--, (e = s.monitorRunDependencies) === null || e === void 0 || e.call(s, et), et == 0 && ht) { + var r = ht; + ht = null, r(); + } + } + function bt(t) { + var e; + (e = s.onAbort) === null || e === void 0 || e.call(s, t), t = "Aborted(" + t + ")", U(t), dt = !0, t += ". Build with -sASSERTIONS for more info."; + var r = new WebAssembly.RuntimeError(t); + throw g(r), r; + } + var vr = "data:application/octet-stream;base64,", de = (t) => t.startsWith(vr), ot; + ot = "zxing_reader.wasm", de(ot) || (ot = Y(ot)); + function fe(t) { + if (t == ot && Q) + return new Uint8Array(Q); + if (G) + return G(t); + throw "both async and sync fetching of the wasm failed"; + } + function yr(t) { + return !Q && (L || B) && typeof fetch == "function" ? fetch(t, { + credentials: "same-origin" + }).then((e) => { + if (!e.ok) + throw "failed to load wasm binary file at '" + t + "'"; + return e.arrayBuffer(); + }).catch(() => fe(t)) : Promise.resolve().then(() => fe(t)); + } + function he(t, e, r) { + return yr(t).then((n) => WebAssembly.instantiate(n, e)).then((n) => n).then(r, (n) => { + U(`failed to asynchronously prepare wasm: ${n}`), bt(n); + }); + } + function gr(t, e, r, n) { + return !t && typeof WebAssembly.instantiateStreaming == "function" && !de(e) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((a) => { + var i = WebAssembly.instantiateStreaming(a, r); + return i.then(n, function(u) { + return U(`wasm streaming compile failed: ${u}`), U("falling back to ArrayBuffer instantiation"), he(e, r, n); + }); + }) : he(e, r, n); + } + function wr() { + var t = { + a: sa + }; + function e(n, a) { + return S = n.exports, tt = S.ia, se(), _e = S.ma, fr(S.ja), mr(), S; + } + pr(); + function r(n) { + e(n.instance); + } + if (s.instantiateWasm) + try { + return s.instantiateWasm(t, e); + } catch (n) { + U(`Module.instantiateWasm callback failed with error: ${n}`), g(n); + } + return gr(Q, ot, t, r).catch(g), {}; + } + var Wt = (t) => { + for (; t.length > 0; ) + t.shift()(s); + }; + s.noExitRuntime; + var Ct = [], _t = 0, $r = (t) => { + var e = new kt(t); + return e.get_caught() || (e.set_caught(!0), _t--), e.set_rethrown(!1), Ct.push(e), We(e.excPtr), e.get_exception_ptr(); + }, Z = 0, br = () => { + P(0, 0); + var t = Ct.pop(); + Re(t.excPtr), Z = 0; + }; + function kt(t) { + this.excPtr = t, this.ptr = t - 24, this.set_type = function(e) { + T[this.ptr + 4 >> 2] = e; + }, this.get_type = function() { + return T[this.ptr + 4 >> 2]; + }, this.set_destructor = function(e) { + T[this.ptr + 8 >> 2] = e; + }, this.get_destructor = function() { + return T[this.ptr + 8 >> 2]; + }, this.set_caught = function(e) { + e = e ? 1 : 0, V[this.ptr + 12 >> 0] = e; + }, this.get_caught = function() { + return V[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(e) { + e = e ? 1 : 0, V[this.ptr + 13 >> 0] = e; + }, this.get_rethrown = function() { + return V[this.ptr + 13 >> 0] != 0; + }, this.init = function(e, r) { + this.set_adjusted_ptr(0), this.set_type(e), this.set_destructor(r); + }, this.set_adjusted_ptr = function(e) { + T[this.ptr + 16 >> 2] = e; + }, this.get_adjusted_ptr = function() { + return T[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var e = He(this.get_type()); + if (e) + return T[this.excPtr >> 2]; + var r = this.get_adjusted_ptr(); + return r !== 0 ? r : this.excPtr; + }; + } + var Cr = (t) => { + throw Z || (Z = t), Z; + }, Ht = (t) => { + var e = Z; + if (!e) + return $t(0), 0; + var r = new kt(e); + r.set_adjusted_ptr(e); + var n = r.get_type(); + if (!n) + return $t(0), e; + for (var a in t) { + var i = t[a]; + if (i === 0 || i === n) + break; + var u = r.ptr + 16; + if (ke(i, n, u)) + return $t(i), e; + } + return $t(n), e; + }, _r = () => Ht([]), Tr = (t) => Ht([t]), Pr = (t, e) => Ht([t, e]), Er = () => { + var t = Ct.pop(); + t || bt("no exception to throw"); + var e = t.excPtr; + throw t.get_rethrown() || (Ct.push(t), t.set_rethrown(!0), t.set_caught(!1), _t++), Z = e, Z; + }, Ar = (t, e, r) => { + var n = new kt(t); + throw n.init(e, r), Z = t, _t++, Z; + }, Or = () => _t, Tt = {}, Bt = (t) => { + for (; t.length; ) { + var e = t.pop(), r = t.pop(); + r(e); + } + }; + function Ut(t) { + return this.fromWireType(k[t >> 2]); + } + var it = {}, rt = {}, Pt = {}, pe, Et = (t) => { + throw new pe(t); + }, nt = (t, e, r) => { + t.forEach(function(c) { + Pt[c] = e; + }); + function n(c) { + var l = r(c); + l.length !== t.length && Et("Mismatched type converter count"); + for (var f = 0; f < t.length; ++f) + X(t[f], l[f]); + } + var a = new Array(e.length), i = [], u = 0; + e.forEach((c, l) => { + rt.hasOwnProperty(c) ? a[l] = rt[c] : (i.push(c), it.hasOwnProperty(c) || (it[c] = []), it[c].push(() => { + a[l] = rt[c], ++u, u === i.length && n(a); + })); + }), i.length === 0 && n(a); + }, Dr = (t) => { + var e = Tt[t]; + delete Tt[t]; + var r = e.rawConstructor, n = e.rawDestructor, a = e.fields, i = a.map((u) => u.getterReturnType).concat(a.map((u) => u.setterArgumentType)); + nt([t], i, (u) => { + var c = {}; + return a.forEach((l, f) => { + var p = l.fieldName, v = u[f], y = l.getter, w = l.getterContext, E = u[f + a.length], x = l.setter, _ = l.setterContext; + c[p] = { + read: (R) => v.fromWireType(y(w, R)), + write: (R, d) => { + var m = []; + x(_, R, E.toWireType(m, d)), Bt(m); + } + }; + }), [{ + name: e.name, + fromWireType: (l) => { + var f = {}; + for (var p in c) + f[p] = c[p].read(l); + return n(l), f; + }, + toWireType: (l, f) => { + for (var p in c) + if (!(p in f)) + throw new TypeError(`Missing field: "${p}"`); + var v = r(); + for (p in c) + c[p].write(v, f[p]); + return l !== null && l.push(n, v), v; + }, + argPackAdvance: q, + readValueFromPointer: Ut, + destructorFunction: n + }]; + }); + }, xr = (t, e, r, n, a) => { + }, Fr = () => { + for (var t = new Array(256), e = 0; e < 256; ++e) + t[e] = String.fromCharCode(e); + me = t; + }, me, I = (t) => { + for (var e = "", r = t; W[r]; ) + e += me[W[r++]]; + return e; + }, st, C = (t) => { + throw new st(t); + }; + function Mr(t, e) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = e.name; + if (t || C(`type "${n}" must have a positive integer typeid pointer`), rt.hasOwnProperty(t)) { + if (r.ignoreDuplicateRegistrations) + return; + C(`Cannot register type '${n}' twice`); + } + if (rt[t] = e, delete Pt[t], it.hasOwnProperty(t)) { + var a = it[t]; + delete it[t], a.forEach((i) => i()); + } + } + function X(t, e) { + let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in e)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return Mr(t, e, r); + } + var q = 8, Sr = (t, e, r, n) => { + e = I(e), X(t, { + name: e, + fromWireType: function(a) { + return !!a; + }, + toWireType: function(a, i) { + return i ? r : n; + }, + argPackAdvance: q, + readValueFromPointer: function(a) { + return this.fromWireType(W[a]); + }, + destructorFunction: null + }); + }, jr = (t) => ({ + count: t.count, + deleteScheduled: t.deleteScheduled, + preservePointerOnDelete: t.preservePointerOnDelete, + ptr: t.ptr, + ptrType: t.ptrType, + smartPtr: t.smartPtr, + smartPtrType: t.smartPtrType + }), Vt = (t) => { + function e(r) { + return r.$$.ptrType.registeredClass.name; + } + C(e(t) + " instance already deleted"); + }, Lt = !1, ve = (t) => { + }, Ir = (t) => { + t.smartPtr ? t.smartPtrType.rawDestructor(t.smartPtr) : t.ptrType.registeredClass.rawDestructor(t.ptr); + }, ye = (t) => { + t.count.value -= 1; + var e = t.count.value === 0; + e && Ir(t); + }, ge = (t, e, r) => { + if (e === r) + return t; + if (r.baseClass === void 0) + return null; + var n = ge(t, e, r.baseClass); + return n === null ? null : r.downcast(n); + }, we = {}, Rr = () => Object.keys(vt).length, Wr = () => { + var t = []; + for (var e in vt) + vt.hasOwnProperty(e) && t.push(vt[e]); + return t; + }, pt = [], Yt = () => { + for (; pt.length; ) { + var t = pt.pop(); + t.$$.deleteScheduled = !1, t.delete(); + } + }, mt, kr = (t) => { + mt = t, pt.length && mt && mt(Yt); + }, Hr = () => { + s.getInheritedInstanceCount = Rr, s.getLiveInheritedInstances = Wr, s.flushPendingDeletes = Yt, s.setDelayFunction = kr; + }, vt = {}, Br = (t, e) => { + for (e === void 0 && C("ptr should not be undefined"); t.baseClass; ) + e = t.upcast(e), t = t.baseClass; + return e; + }, Ur = (t, e) => (e = Br(t, e), vt[e]), At = (t, e) => { + (!e.ptrType || !e.ptr) && Et("makeClassHandle requires ptr and ptrType"); + var r = !!e.smartPtrType, n = !!e.smartPtr; + return r !== n && Et("Both smartPtrType and smartPtr must be specified"), e.count = { + value: 1 + }, yt(Object.create(t, { + $$: { + value: e, + writable: !0 + } + })); + }; + function Vr(t) { + var e = this.getPointee(t); + if (!e) + return this.destructor(t), null; + var r = Ur(this.registeredClass, e); + if (r !== void 0) { + if (r.$$.count.value === 0) + return r.$$.ptr = e, r.$$.smartPtr = t, r.clone(); + var n = r.clone(); + return this.destructor(t), n; + } + function a() { + return this.isSmartPointer ? At(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: e, + smartPtrType: this, + smartPtr: t + }) : At(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: t + }); + } + var i = this.registeredClass.getActualType(e), u = we[i]; + if (!u) + return a.call(this); + var c; + this.isConst ? c = u.constPointerType : c = u.pointerType; + var l = ge(e, this.registeredClass, c.registeredClass); + return l === null ? a.call(this) : this.isSmartPointer ? At(c.registeredClass.instancePrototype, { + ptrType: c, + ptr: l, + smartPtrType: this, + smartPtr: t + }) : At(c.registeredClass.instancePrototype, { + ptrType: c, + ptr: l + }); + } + var yt = (t) => typeof FinalizationRegistry > "u" ? (yt = (e) => e, t) : (Lt = new FinalizationRegistry((e) => { + ye(e.$$); + }), yt = (e) => { + var r = e.$$, n = !!r.smartPtr; + if (n) { + var a = { + $$: r + }; + Lt.register(e, a, e); + } + return e; + }, ve = (e) => Lt.unregister(e), yt(t)), Lr = () => { + Object.assign(Ot.prototype, { + isAliasOf(t) { + if (!(this instanceof Ot) || !(t instanceof Ot)) + return !1; + var e = this.$$.ptrType.registeredClass, r = this.$$.ptr; + t.$$ = t.$$; + for (var n = t.$$.ptrType.registeredClass, a = t.$$.ptr; e.baseClass; ) + r = e.upcast(r), e = e.baseClass; + for (; n.baseClass; ) + a = n.upcast(a), n = n.baseClass; + return e === n && r === a; + }, + clone() { + if (this.$$.ptr || Vt(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var t = yt(Object.create(Object.getPrototypeOf(this), { + $$: { + value: jr(this.$$) + } + })); + return t.$$.count.value += 1, t.$$.deleteScheduled = !1, t; + }, + delete() { + this.$$.ptr || Vt(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && C("Object already scheduled for deletion"), ve(this), ye(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || Vt(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && C("Object already scheduled for deletion"), pt.push(this), pt.length === 1 && mt && mt(Yt), this.$$.deleteScheduled = !0, this; + } + }); + }; + function Ot() { + } + var gt = (t, e) => Object.defineProperty(e, "name", { + value: t + }), $e = (t, e, r) => { + if (t[e].overloadTable === void 0) { + var n = t[e]; + t[e] = function() { + return t[e].overloadTable.hasOwnProperty(arguments.length) || C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`), t[e].overloadTable[arguments.length].apply(this, arguments); + }, t[e].overloadTable = [], t[e].overloadTable[n.argCount] = n; + } + }, zt = (t, e, r) => { + s.hasOwnProperty(t) ? ((r === void 0 || s[t].overloadTable !== void 0 && s[t].overloadTable[r] !== void 0) && C(`Cannot register public name '${t}' twice`), $e(s, t, t), s.hasOwnProperty(r) && C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`), s[t].overloadTable[r] = e) : (s[t] = e, r !== void 0 && (s[t].numArguments = r)); + }, Yr = 48, zr = 57, Nr = (t) => { + if (t === void 0) + return "_unknown"; + t = t.replace(/[^a-zA-Z0-9_]/g, "$"); + var e = t.charCodeAt(0); + return e >= Yr && e <= zr ? `_${t}` : t; + }; + function Gr(t, e, r, n, a, i, u, c) { + this.name = t, this.constructor = e, this.instancePrototype = r, this.rawDestructor = n, this.baseClass = a, this.getActualType = i, this.upcast = u, this.downcast = c, this.pureVirtualFunctions = []; + } + var Nt = (t, e, r) => { + for (; e !== r; ) + e.upcast || C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`), t = e.upcast(t), e = e.baseClass; + return t; + }; + function Xr(t, e) { + if (e === null) + return this.isReference && C(`null is not a valid ${this.name}`), 0; + e.$$ || C(`Cannot pass "${Zt(e)}" as a ${this.name}`), e.$$.ptr || C(`Cannot pass deleted object as a pointer of type ${this.name}`); + var r = e.$$.ptrType.registeredClass, n = Nt(e.$$.ptr, r, this.registeredClass); + return n; + } + function qr(t, e) { + var r; + if (e === null) + return this.isReference && C(`null is not a valid ${this.name}`), this.isSmartPointer ? (r = this.rawConstructor(), t !== null && t.push(this.rawDestructor, r), r) : 0; + (!e || !e.$$) && C(`Cannot pass "${Zt(e)}" as a ${this.name}`), e.$$.ptr || C(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && e.$$.ptrType.isConst && C(`Cannot convert argument of type ${e.$$.smartPtrType ? e.$$.smartPtrType.name : e.$$.ptrType.name} to parameter type ${this.name}`); + var n = e.$$.ptrType.registeredClass; + if (r = Nt(e.$$.ptr, n, this.registeredClass), this.isSmartPointer) + switch (e.$$.smartPtr === void 0 && C("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + e.$$.smartPtrType === this ? r = e.$$.smartPtr : C(`Cannot convert argument of type ${e.$$.smartPtrType ? e.$$.smartPtrType.name : e.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + r = e.$$.smartPtr; + break; + case 2: + if (e.$$.smartPtrType === this) + r = e.$$.smartPtr; + else { + var a = e.clone(); + r = this.rawShare(r, J.toHandle(() => a.delete())), t !== null && t.push(this.rawDestructor, r); + } + break; + default: + C("Unsupporting sharing policy"); + } + return r; + } + function Qr(t, e) { + if (e === null) + return this.isReference && C(`null is not a valid ${this.name}`), 0; + e.$$ || C(`Cannot pass "${Zt(e)}" as a ${this.name}`), e.$$.ptr || C(`Cannot pass deleted object as a pointer of type ${this.name}`), e.$$.ptrType.isConst && C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`); + var r = e.$$.ptrType.registeredClass, n = Nt(e.$$.ptr, r, this.registeredClass); + return n; + } + function be(t) { + return this.fromWireType(T[t >> 2]); + } + var Zr = () => { + Object.assign(Dt.prototype, { + getPointee(t) { + return this.rawGetPointee && (t = this.rawGetPointee(t)), t; + }, + destructor(t) { + var e; + (e = this.rawDestructor) === null || e === void 0 || e.call(this, t); + }, + argPackAdvance: q, + readValueFromPointer: be, + deleteObject(t) { + t !== null && t.delete(); + }, + fromWireType: Vr + }); + }; + function Dt(t, e, r, n, a, i, u, c, l, f, p) { + this.name = t, this.registeredClass = e, this.isReference = r, this.isConst = n, this.isSmartPointer = a, this.pointeeType = i, this.sharingPolicy = u, this.rawGetPointee = c, this.rawConstructor = l, this.rawShare = f, this.rawDestructor = p, !a && e.baseClass === void 0 ? n ? (this.toWireType = Xr, this.destructorFunction = null) : (this.toWireType = Qr, this.destructorFunction = null) : this.toWireType = qr; + } + var Ce = (t, e, r) => { + s.hasOwnProperty(t) || Et("Replacing nonexistant public symbol"), s[t].overloadTable !== void 0 && r !== void 0 ? s[t].overloadTable[r] = e : (s[t] = e, s[t].argCount = r); + }, Jr = (t, e, r) => { + var n = s["dynCall_" + t]; + return r && r.length ? n.apply(null, [e].concat(r)) : n.call(null, e); + }, xt = [], _e, A = (t) => { + var e = xt[t]; + return e || (t >= xt.length && (xt.length = t + 1), xt[t] = e = _e.get(t)), e; + }, Kr = (t, e, r) => { + if (t.includes("j")) + return Jr(t, e, r); + var n = A(e).apply(null, r); + return n; + }, tn = (t, e) => { + var r = []; + return function() { + return r.length = 0, Object.assign(r, arguments), Kr(t, e, r); + }; + }, N = (t, e) => { + t = I(t); + function r() { + return t.includes("j") ? tn(t, e) : A(e); + } + var n = r(); + return typeof n != "function" && C(`unknown function pointer with signature ${t}: ${e}`), n; + }, en = (t, e) => { + var r = gt(e, function(n) { + this.name = e, this.message = n; + var a = new Error(n).stack; + a !== void 0 && (this.stack = this.toString() + ` +` + a.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return r.prototype = Object.create(t.prototype), r.prototype.constructor = r, r.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, r; + }, Te, Pe = (t) => { + var e = Ie(t), r = I(e); + return K(e), r; + }, Ft = (t, e) => { + var r = [], n = {}; + function a(i) { + if (!n[i] && !rt[i]) { + if (Pt[i]) { + Pt[i].forEach(a); + return; + } + r.push(i), n[i] = !0; + } + } + throw e.forEach(a), new Te(`${t}: ` + r.map(Pe).join([", "])); + }, rn = (t, e, r, n, a, i, u, c, l, f, p, v, y) => { + p = I(p), i = N(a, i), c && (c = N(u, c)), f && (f = N(l, f)), y = N(v, y); + var w = Nr(p); + zt(w, function() { + Ft(`Cannot construct ${p} due to unbound types`, [n]); + }), nt([t, e, r], n ? [n] : [], function(E) { + E = E[0]; + var x, _; + n ? (x = E.registeredClass, _ = x.instancePrototype) : _ = Ot.prototype; + var R = gt(p, function() { + if (Object.getPrototypeOf(this) !== d) + throw new st("Use 'new' to construct " + p); + if (m.constructor_body === void 0) + throw new st(p + " has no accessible constructor"); + var Le = m.constructor_body[arguments.length]; + if (Le === void 0) + throw new st(`Tried to invoke ctor of ${p} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`); + return Le.apply(this, arguments); + }), d = Object.create(_, { + constructor: { + value: R + } + }); + R.prototype = d; + var m = new Gr(p, R, d, y, x, i, c, f); + if (m.baseClass) { + var F, j; + (j = (F = m.baseClass).__derivedClasses) !== null && j !== void 0 || (F.__derivedClasses = []), m.baseClass.__derivedClasses.push(m); + } + var ut = new Dt(p, m, !0, !1, !1), jt = new Dt(p + "*", m, !1, !1, !1), Ve = new Dt(p + " const*", m, !1, !0, !1); + return we[t] = { + pointerType: jt, + constPointerType: Ve + }, Ce(w, R), [ut, jt, Ve]; + }); + }, Gt = (t, e) => { + for (var r = [], n = 0; n < t; n++) + r.push(T[e + n * 4 >> 2]); + return r; + }; + function nn(t) { + for (var e = 1; e < t.length; ++e) + if (t[e] !== null && t[e].destructorFunction === void 0) + return !0; + return !1; + } + function Xt(t, e, r, n, a, i) { + var u = e.length; + u < 2 && C("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var c = e[1] !== null && r !== null, l = nn(e), f = e[0].name !== "void", p = u - 2, v = new Array(p), y = [], w = [], E = function() { + arguments.length !== p && C(`function ${t} called with ${arguments.length} arguments, expected ${p}`), w.length = 0; + var x; + y.length = c ? 2 : 1, y[0] = a, c && (x = e[1].toWireType(w, this), y[1] = x); + for (var _ = 0; _ < p; ++_) + v[_] = e[_ + 2].toWireType(w, arguments[_]), y.push(v[_]); + var R = n.apply(null, y); + function d(m) { + if (l) + Bt(w); + else + for (var F = c ? 1 : 2; F < e.length; F++) { + var j = F === 1 ? x : v[F - 2]; + e[F].destructorFunction !== null && e[F].destructorFunction(j); + } + if (f) + return e[0].fromWireType(m); + } + return d(R); + }; + return gt(t, E); + } + var an = (t, e, r, n, a, i) => { + var u = Gt(e, r); + a = N(n, a), nt([], [t], function(c) { + c = c[0]; + var l = `constructor ${c.name}`; + if (c.registeredClass.constructor_body === void 0 && (c.registeredClass.constructor_body = []), c.registeredClass.constructor_body[e - 1] !== void 0) + throw new st(`Cannot register multiple constructors with identical number of parameters (${e - 1}) for class '${c.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return c.registeredClass.constructor_body[e - 1] = () => { + Ft(`Cannot construct ${c.name} due to unbound types`, u); + }, nt([], u, (f) => (f.splice(1, 0, null), c.registeredClass.constructor_body[e - 1] = Xt(l, f, null, a, i), [])), []; + }); + }, Ee = (t) => { + t = t.trim(); + const e = t.indexOf("("); + return e !== -1 ? t.substr(0, e) : t; + }, on = (t, e, r, n, a, i, u, c, l) => { + var f = Gt(r, n); + e = I(e), e = Ee(e), i = N(a, i), nt([], [t], function(p) { + p = p[0]; + var v = `${p.name}.${e}`; + e.startsWith("@@") && (e = Symbol[e.substring(2)]), c && p.registeredClass.pureVirtualFunctions.push(e); + function y() { + Ft(`Cannot call ${v} due to unbound types`, f); + } + var w = p.registeredClass.instancePrototype, E = w[e]; + return E === void 0 || E.overloadTable === void 0 && E.className !== p.name && E.argCount === r - 2 ? (y.argCount = r - 2, y.className = p.name, w[e] = y) : ($e(w, e, v), w[e].overloadTable[r - 2] = y), nt([], f, function(x) { + var _ = Xt(v, x, p, i, u); + return w[e].overloadTable === void 0 ? (_.argCount = r - 2, w[e] = _) : w[e].overloadTable[r - 2] = _, []; + }), []; + }); + }; + function sn() { + Object.assign(Ae.prototype, { + get(t) { + return this.allocated[t]; + }, + has(t) { + return this.allocated[t] !== void 0; + }, + allocate(t) { + var e = this.freelist.pop() || this.allocated.length; + return this.allocated[e] = t, e; + }, + free(t) { + this.allocated[t] = void 0, this.freelist.push(t); + } + }); + } + function Ae() { + this.allocated = [void 0], this.freelist = []; + } + var z = new Ae(), qt = (t) => { + t >= z.reserved && --z.get(t).refcount === 0 && z.free(t); + }, un = () => { + for (var t = 0, e = z.reserved; e < z.allocated.length; ++e) + z.allocated[e] !== void 0 && ++t; + return t; + }, cn = () => { + z.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), z.reserved = z.allocated.length, s.count_emval_handles = un; + }, J = { + toValue: (t) => (t || C("Cannot use deleted val. handle = " + t), z.get(t).value), + toHandle: (t) => { + switch (t) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return z.allocate({ + refcount: 1, + value: t + }); + } + } + }, ln = (t, e) => { + e = I(e), X(t, { + name: e, + fromWireType: (r) => { + var n = J.toValue(r); + return qt(r), n; + }, + toWireType: (r, n) => J.toHandle(n), + argPackAdvance: q, + readValueFromPointer: Ut, + destructorFunction: null + }); + }, dn = (t, e, r) => { + switch (e) { + case 1: + return r ? function(n) { + return this.fromWireType(V[n >> 0]); + } : function(n) { + return this.fromWireType(W[n >> 0]); + }; + case 2: + return r ? function(n) { + return this.fromWireType(at[n >> 1]); + } : function(n) { + return this.fromWireType(ft[n >> 1]); + }; + case 4: + return r ? function(n) { + return this.fromWireType(k[n >> 2]); + } : function(n) { + return this.fromWireType(T[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${e}): ${t}`); + } + }, fn = (t, e, r, n) => { + e = I(e); + function a() { + } + a.values = {}, X(t, { + name: e, + constructor: a, + fromWireType: function(i) { + return this.constructor.values[i]; + }, + toWireType: (i, u) => u.value, + argPackAdvance: q, + readValueFromPointer: dn(e, r, n), + destructorFunction: null + }), zt(e, a); + }, Qt = (t, e) => { + var r = rt[t]; + return r === void 0 && C(e + " has unknown type " + Pe(t)), r; + }, hn = (t, e, r) => { + var n = Qt(t, "enum"); + e = I(e); + var a = n.constructor, i = Object.create(n.constructor.prototype, { + value: { + value: r + }, + constructor: { + value: gt(`${n.name}_${e}`, function() { + }) + } + }); + a.values[r] = i, a[e] = i; + }, Zt = (t) => { + if (t === null) + return "null"; + var e = typeof t; + return e === "object" || e === "array" || e === "function" ? t.toString() : "" + t; + }, pn = (t, e) => { + switch (e) { + case 4: + return function(r) { + return this.fromWireType(oe[r >> 2]); + }; + case 8: + return function(r) { + return this.fromWireType(ie[r >> 3]); + }; + default: + throw new TypeError(`invalid float width (${e}): ${t}`); + } + }, mn = (t, e, r) => { + e = I(e), X(t, { + name: e, + fromWireType: (n) => n, + toWireType: (n, a) => a, + argPackAdvance: q, + readValueFromPointer: pn(e, r), + destructorFunction: null + }); + }, vn = (t, e, r, n, a, i, u) => { + var c = Gt(e, r); + t = I(t), t = Ee(t), a = N(n, a), zt(t, function() { + Ft(`Cannot call ${t} due to unbound types`, c); + }, e - 1), nt([], c, function(l) { + var f = [l[0], null].concat(l.slice(1)); + return Ce(t, Xt(t, f, null, a, i), e - 1), []; + }); + }, yn = (t, e, r) => { + switch (e) { + case 1: + return r ? (n) => V[n >> 0] : (n) => W[n >> 0]; + case 2: + return r ? (n) => at[n >> 1] : (n) => ft[n >> 1]; + case 4: + return r ? (n) => k[n >> 2] : (n) => T[n >> 2]; + default: + throw new TypeError(`invalid integer width (${e}): ${t}`); + } + }, gn = (t, e, r, n, a) => { + e = I(e); + var i = (p) => p; + if (n === 0) { + var u = 32 - 8 * r; + i = (p) => p << u >>> u; + } + var c = e.includes("unsigned"), l = (p, v) => { + }, f; + c ? f = function(p, v) { + return l(v, this.name), v >>> 0; + } : f = function(p, v) { + return l(v, this.name), v; + }, X(t, { + name: e, + fromWireType: i, + toWireType: f, + argPackAdvance: q, + readValueFromPointer: yn(e, r, n !== 0), + destructorFunction: null + }); + }, wn = (t, e, r) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], a = n[e]; + function i(u) { + var c = T[u >> 2], l = T[u + 4 >> 2]; + return new a(V.buffer, l, c); + } + r = I(r), X(t, { + name: r, + fromWireType: i, + argPackAdvance: q, + readValueFromPointer: i + }, { + ignoreDuplicateRegistrations: !0 + }); + }, Oe = (t, e, r, n) => { + if (!(n > 0)) + return 0; + for (var a = r, i = r + n - 1, u = 0; u < t.length; ++u) { + var c = t.charCodeAt(u); + if (c >= 55296 && c <= 57343) { + var l = t.charCodeAt(++u); + c = 65536 + ((c & 1023) << 10) | l & 1023; + } + if (c <= 127) { + if (r >= i) + break; + e[r++] = c; + } else if (c <= 2047) { + if (r + 1 >= i) + break; + e[r++] = 192 | c >> 6, e[r++] = 128 | c & 63; + } else if (c <= 65535) { + if (r + 2 >= i) + break; + e[r++] = 224 | c >> 12, e[r++] = 128 | c >> 6 & 63, e[r++] = 128 | c & 63; + } else { + if (r + 3 >= i) + break; + e[r++] = 240 | c >> 18, e[r++] = 128 | c >> 12 & 63, e[r++] = 128 | c >> 6 & 63, e[r++] = 128 | c & 63; + } + } + return e[r] = 0, r - a; + }, $n = (t, e, r) => Oe(t, W, e, r), De = (t) => { + for (var e = 0, r = 0; r < t.length; ++r) { + var n = t.charCodeAt(r); + n <= 127 ? e++ : n <= 2047 ? e += 2 : n >= 55296 && n <= 57343 ? (e += 4, ++r) : e += 3; + } + return e; + }, xe = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, bn = (t, e, r) => { + for (var n = e + r, a = e; t[a] && !(a >= n); ) + ++a; + if (a - e > 16 && t.buffer && xe) + return xe.decode(t.subarray(e, a)); + for (var i = ""; e < a; ) { + var u = t[e++]; + if (!(u & 128)) { + i += String.fromCharCode(u); + continue; + } + var c = t[e++] & 63; + if ((u & 224) == 192) { + i += String.fromCharCode((u & 31) << 6 | c); + continue; + } + var l = t[e++] & 63; + if ((u & 240) == 224 ? u = (u & 15) << 12 | c << 6 | l : u = (u & 7) << 18 | c << 12 | l << 6 | t[e++] & 63, u < 65536) + i += String.fromCharCode(u); + else { + var f = u - 65536; + i += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023); + } + } + return i; + }, Jt = (t, e) => t ? bn(W, t, e) : "", Cn = (t, e) => { + e = I(e); + var r = e === "std::string"; + X(t, { + name: e, + fromWireType(n) { + var a = T[n >> 2], i = n + 4, u; + if (r) + for (var c = i, l = 0; l <= a; ++l) { + var f = i + l; + if (l == a || W[f] == 0) { + var p = f - c, v = Jt(c, p); + u === void 0 ? u = v : (u += "\0", u += v), c = f + 1; + } + } + else { + for (var y = new Array(a), l = 0; l < a; ++l) + y[l] = String.fromCharCode(W[i + l]); + u = y.join(""); + } + return K(n), u; + }, + toWireType(n, a) { + a instanceof ArrayBuffer && (a = new Uint8Array(a)); + var i, u = typeof a == "string"; + u || a instanceof Uint8Array || a instanceof Uint8ClampedArray || a instanceof Int8Array || C("Cannot pass non-string to std::string"), r && u ? i = De(a) : i = a.length; + var c = ee(4 + i + 1), l = c + 4; + if (T[c >> 2] = i, r && u) + $n(a, l, i + 1); + else if (u) + for (var f = 0; f < i; ++f) { + var p = a.charCodeAt(f); + p > 255 && (K(l), C("String has UTF-16 code units that do not fit in 8 bits")), W[l + f] = p; + } + else + for (var f = 0; f < i; ++f) + W[l + f] = a[f]; + return n !== null && n.push(K, c), c; + }, + argPackAdvance: q, + readValueFromPointer: be, + destructorFunction(n) { + K(n); + } + }); + }, Fe = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, _n = (t, e) => { + for (var r = t, n = r >> 1, a = n + e / 2; !(n >= a) && ft[n]; ) + ++n; + if (r = n << 1, r - t > 32 && Fe) + return Fe.decode(W.subarray(t, r)); + for (var i = "", u = 0; !(u >= e / 2); ++u) { + var c = at[t + u * 2 >> 1]; + if (c == 0) + break; + i += String.fromCharCode(c); + } + return i; + }, Tn = (t, e, r) => { + var n; + if ((n = r) !== null && n !== void 0 || (r = 2147483647), r < 2) + return 0; + r -= 2; + for (var a = e, i = r < t.length * 2 ? r / 2 : t.length, u = 0; u < i; ++u) { + var c = t.charCodeAt(u); + at[e >> 1] = c, e += 2; + } + return at[e >> 1] = 0, e - a; + }, Pn = (t) => t.length * 2, En = (t, e) => { + for (var r = 0, n = ""; !(r >= e / 4); ) { + var a = k[t + r * 4 >> 2]; + if (a == 0) + break; + if (++r, a >= 65536) { + var i = a - 65536; + n += String.fromCharCode(55296 | i >> 10, 56320 | i & 1023); + } else + n += String.fromCharCode(a); + } + return n; + }, An = (t, e, r) => { + var n; + if ((n = r) !== null && n !== void 0 || (r = 2147483647), r < 4) + return 0; + for (var a = e, i = a + r - 4, u = 0; u < t.length; ++u) { + var c = t.charCodeAt(u); + if (c >= 55296 && c <= 57343) { + var l = t.charCodeAt(++u); + c = 65536 + ((c & 1023) << 10) | l & 1023; + } + if (k[e >> 2] = c, e += 4, e + 4 > i) + break; + } + return k[e >> 2] = 0, e - a; + }, On = (t) => { + for (var e = 0, r = 0; r < t.length; ++r) { + var n = t.charCodeAt(r); + n >= 55296 && n <= 57343 && ++r, e += 4; + } + return e; + }, Dn = (t, e, r) => { + r = I(r); + var n, a, i, u, c; + e === 2 ? (n = _n, a = Tn, u = Pn, i = () => ft, c = 1) : e === 4 && (n = En, a = An, u = On, i = () => T, c = 2), X(t, { + name: r, + fromWireType: (l) => { + for (var f = T[l >> 2], p = i(), v, y = l + 4, w = 0; w <= f; ++w) { + var E = l + 4 + w * e; + if (w == f || p[E >> c] == 0) { + var x = E - y, _ = n(y, x); + v === void 0 ? v = _ : (v += "\0", v += _), y = E + e; + } + } + return K(l), v; + }, + toWireType: (l, f) => { + typeof f != "string" && C(`Cannot pass non-string to C++ string type ${r}`); + var p = u(f), v = ee(4 + p + e); + return T[v >> 2] = p >> c, a(f, v + 4, p + e), l !== null && l.push(K, v), v; + }, + argPackAdvance: q, + readValueFromPointer: Ut, + destructorFunction(l) { + K(l); + } + }); + }, xn = (t, e, r, n, a, i) => { + Tt[t] = { + name: I(e), + rawConstructor: N(r, n), + rawDestructor: N(a, i), + fields: [] + }; + }, Fn = (t, e, r, n, a, i, u, c, l, f) => { + Tt[t].fields.push({ + fieldName: I(e), + getterReturnType: r, + getter: N(n, a), + getterContext: i, + setterArgumentType: u, + setter: N(c, l), + setterContext: f + }); + }, Mn = (t, e) => { + e = I(e), X(t, { + isVoid: !0, + name: e, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (r, n) => { + } + }); + }, Kt = [], Sn = (t, e, r, n) => (t = Kt[t], e = J.toValue(e), t(null, e, r, n)), jn = {}, In = (t) => { + var e = jn[t]; + return e === void 0 ? I(t) : e; + }, Me = () => { + if (typeof globalThis == "object") + return globalThis; + function t(e) { + e.$$$embind_global$$$ = e; + var r = typeof $$$embind_global$$$ == "object" && e.$$$embind_global$$$ == e; + return r || delete e.$$$embind_global$$$, r; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && t(global) ? $$$embind_global$$$ = global : typeof self == "object" && t(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, Rn = (t) => t === 0 ? J.toHandle(Me()) : (t = In(t), J.toHandle(Me()[t])), Wn = (t) => { + var e = Kt.length; + return Kt.push(t), e; + }, kn = (t, e) => { + for (var r = new Array(t), n = 0; n < t; ++n) + r[n] = Qt(T[e + n * 4 >> 2], "parameter " + n); + return r; + }, Hn = Reflect.construct, Bn = (t, e, r) => { + var n = [], a = t.toWireType(n, r); + return n.length && (T[e >> 2] = J.toHandle(n)), a; + }, Un = (t, e, r) => { + var n = kn(t, e), a = n.shift(); + t--; + var i = new Array(t), u = (l, f, p, v) => { + for (var y = 0, w = 0; w < t; ++w) + i[w] = n[w].readValueFromPointer(v + y), y += n[w].argPackAdvance; + for (var E = r === 1 ? Hn(f, i) : f.apply(l, i), w = 0; w < t; ++w) { + var x, _; + (x = (_ = n[w]).deleteObject) === null || x === void 0 || x.call(_, i[w]); + } + return Bn(a, p, E); + }, c = `methodCaller<(${n.map((l) => l.name).join(", ")}) => ${a.name}>`; + return Wn(gt(c, u)); + }, Vn = (t) => { + t > 4 && (z.get(t).refcount += 1); + }, Ln = (t) => { + var e = J.toValue(t); + Bt(e), qt(t); + }, Yn = (t, e) => { + t = Qt(t, "_emval_take_value"); + var r = t.readValueFromPointer(e); + return J.toHandle(r); + }, zn = () => { + bt(""); + }, Nn = (t, e, r) => W.copyWithin(t, e, e + r), Gn = () => 2147483648, Xn = (t) => { + var e = tt.buffer, r = (t - e.byteLength + 65535) / 65536; + try { + return tt.grow(r), se(), 1; + } catch { + } + }, qn = (t) => { + var e = W.length; + t >>>= 0; + var r = Gn(); + if (t > r) + return !1; + for (var n = (l, f) => l + (f - l % f) % f, a = 1; a <= 4; a *= 2) { + var i = e * (1 + 0.2 / a); + i = Math.min(i, t + 100663296); + var u = Math.min(r, n(Math.max(t, i), 65536)), c = Xn(u); + if (c) + return !0; + } + return !1; + }, te = {}, Qn = () => H || "./this.program", wt = () => { + if (!wt.strings) { + var t = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", e = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: t, + _: Qn() + }; + for (var r in te) + te[r] === void 0 ? delete e[r] : e[r] = te[r]; + var n = []; + for (var r in e) + n.push(`${r}=${e[r]}`); + wt.strings = n; + } + return wt.strings; + }, Zn = (t, e) => { + for (var r = 0; r < t.length; ++r) + V[e++ >> 0] = t.charCodeAt(r); + V[e >> 0] = 0; + }, Jn = (t, e) => { + var r = 0; + return wt().forEach((n, a) => { + var i = e + r; + T[t + a * 4 >> 2] = i, Zn(n, i), r += n.length + 1; + }), 0; + }, Kn = (t, e) => { + var r = wt(); + T[t >> 2] = r.length; + var n = 0; + return r.forEach((a) => n += a.length + 1), T[e >> 2] = n, 0; + }, ta = (t) => t, Mt = (t) => t % 4 === 0 && (t % 100 !== 0 || t % 400 === 0), ea = (t, e) => { + for (var r = 0, n = 0; n <= e; r += t[n++]) + ; + return r; + }, Se = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], je = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], ra = (t, e) => { + for (var r = new Date(t.getTime()); e > 0; ) { + var n = Mt(r.getFullYear()), a = r.getMonth(), i = (n ? Se : je)[a]; + if (e > i - r.getDate()) + e -= i - r.getDate() + 1, r.setDate(1), a < 11 ? r.setMonth(a + 1) : (r.setMonth(0), r.setFullYear(r.getFullYear() + 1)); + else + return r.setDate(r.getDate() + e), r; + } + return r; + }; + function na(t, e, r) { + var n = r > 0 ? r : De(t) + 1, a = new Array(n), i = Oe(t, a, 0, a.length); + return e && (a.length = i), a; + } + var aa = (t, e) => { + V.set(t, e); + }, oa = (t, e, r, n) => { + var a = T[n + 40 >> 2], i = { + tm_sec: k[n >> 2], + tm_min: k[n + 4 >> 2], + tm_hour: k[n + 8 >> 2], + tm_mday: k[n + 12 >> 2], + tm_mon: k[n + 16 >> 2], + tm_year: k[n + 20 >> 2], + tm_wday: k[n + 24 >> 2], + tm_yday: k[n + 28 >> 2], + tm_isdst: k[n + 32 >> 2], + tm_gmtoff: k[n + 36 >> 2], + tm_zone: a ? Jt(a) : "" + }, u = Jt(r), c = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var l in c) + u = u.replace(new RegExp(l, "g"), c[l]); + var f = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], p = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function v(d, m, F) { + for (var j = typeof d == "number" ? d.toString() : d || ""; j.length < m; ) + j = F[0] + j; + return j; + } + function y(d, m) { + return v(d, m, "0"); + } + function w(d, m) { + function F(ut) { + return ut < 0 ? -1 : ut > 0 ? 1 : 0; + } + var j; + return (j = F(d.getFullYear() - m.getFullYear())) === 0 && (j = F(d.getMonth() - m.getMonth())) === 0 && (j = F(d.getDate() - m.getDate())), j; + } + function E(d) { + switch (d.getDay()) { + case 0: + return new Date(d.getFullYear() - 1, 11, 29); + case 1: + return d; + case 2: + return new Date(d.getFullYear(), 0, 3); + case 3: + return new Date(d.getFullYear(), 0, 2); + case 4: + return new Date(d.getFullYear(), 0, 1); + case 5: + return new Date(d.getFullYear() - 1, 11, 31); + case 6: + return new Date(d.getFullYear() - 1, 11, 30); + } + } + function x(d) { + var m = ra(new Date(d.tm_year + 1900, 0, 1), d.tm_yday), F = new Date(m.getFullYear(), 0, 4), j = new Date(m.getFullYear() + 1, 0, 4), ut = E(F), jt = E(j); + return w(ut, m) <= 0 ? w(jt, m) <= 0 ? m.getFullYear() + 1 : m.getFullYear() : m.getFullYear() - 1; + } + var _ = { + "%a": (d) => f[d.tm_wday].substring(0, 3), + "%A": (d) => f[d.tm_wday], + "%b": (d) => p[d.tm_mon].substring(0, 3), + "%B": (d) => p[d.tm_mon], + "%C": (d) => { + var m = d.tm_year + 1900; + return y(m / 100 | 0, 2); + }, + "%d": (d) => y(d.tm_mday, 2), + "%e": (d) => v(d.tm_mday, 2, " "), + "%g": (d) => x(d).toString().substring(2), + "%G": (d) => x(d), + "%H": (d) => y(d.tm_hour, 2), + "%I": (d) => { + var m = d.tm_hour; + return m == 0 ? m = 12 : m > 12 && (m -= 12), y(m, 2); + }, + "%j": (d) => y(d.tm_mday + ea(Mt(d.tm_year + 1900) ? Se : je, d.tm_mon - 1), 3), + "%m": (d) => y(d.tm_mon + 1, 2), + "%M": (d) => y(d.tm_min, 2), + "%n": () => ` +`, + "%p": (d) => d.tm_hour >= 0 && d.tm_hour < 12 ? "AM" : "PM", + "%S": (d) => y(d.tm_sec, 2), + "%t": () => " ", + "%u": (d) => d.tm_wday || 7, + "%U": (d) => { + var m = d.tm_yday + 7 - d.tm_wday; + return y(Math.floor(m / 7), 2); + }, + "%V": (d) => { + var m = Math.floor((d.tm_yday + 7 - (d.tm_wday + 6) % 7) / 7); + if ((d.tm_wday + 371 - d.tm_yday - 2) % 7 <= 2 && m++, m) { + if (m == 53) { + var F = (d.tm_wday + 371 - d.tm_yday) % 7; + F != 4 && (F != 3 || !Mt(d.tm_year)) && (m = 1); + } + } else { + m = 52; + var j = (d.tm_wday + 7 - d.tm_yday - 1) % 7; + (j == 4 || j == 5 && Mt(d.tm_year % 400 - 1)) && m++; + } + return y(m, 2); + }, + "%w": (d) => d.tm_wday, + "%W": (d) => { + var m = d.tm_yday + 7 - (d.tm_wday + 6) % 7; + return y(Math.floor(m / 7), 2); + }, + "%y": (d) => (d.tm_year + 1900).toString().substring(2), + "%Y": (d) => d.tm_year + 1900, + "%z": (d) => { + var m = d.tm_gmtoff, F = m >= 0; + return m = Math.abs(m) / 60, m = m / 60 * 100 + m % 60, (F ? "+" : "-") + ("0000" + m).slice(-4); + }, + "%Z": (d) => d.tm_zone, + "%%": () => "%" + }; + u = u.replace(/%%/g, "\0\0"); + for (var l in _) + u.includes(l) && (u = u.replace(new RegExp(l, "g"), _[l](i))); + u = u.replace(/\0\0/g, "%"); + var R = na(u, !1); + return R.length > e ? 0 : (aa(R, t), R.length - 1); + }, ia = (t, e, r, n, a) => oa(t, e, r, n); + pe = s.InternalError = class extends Error { + constructor(t) { + super(t), this.name = "InternalError"; + } + }, Fr(), st = s.BindingError = class extends Error { + constructor(t) { + super(t), this.name = "BindingError"; + } + }, Lr(), Hr(), Zr(), Te = s.UnboundTypeError = en(Error, "UnboundTypeError"), sn(), cn(); + var sa = { + s: $r, + u: br, + b: _r, + g: Tr, + q: Pr, + J: Er, + f: Ar, + V: Or, + d: Cr, + da: Dr, + Q: xr, + _: Sr, + ca: rn, + ba: an, + w: on, + Y: ln, + x: fn, + h: hn, + L: mn, + M: vn, + t: gn, + o: wn, + K: Cn, + C: Dn, + A: xn, + ea: Fn, + $: Mn, + R: Sn, + ha: qt, + fa: Rn, + Z: Un, + N: Vn, + O: Ln, + aa: Yn, + B: zn, + X: Nn, + W: qn, + T: Jn, + U: Kn, + E: _a, + D: fa, + F: Ca, + n: Ta, + a: ua, + e: pa, + m: da, + k: va, + H: $a, + v: ga, + G: ba, + z: Ea, + P: Oa, + l: ma, + j: ha, + c: la, + p: ca, + I: wa, + r: Pa, + i: ya, + y: Aa, + ga: ta, + S: ia + }, S = wr(), K = s._free = (t) => (K = s._free = S.ka)(t), ee = s._malloc = (t) => (ee = s._malloc = S.la)(t), Ie = (t) => (Ie = S.na)(t), P = (t, e) => (P = S.oa)(t, e), $t = (t) => ($t = S.pa)(t), O = () => (O = S.qa)(), D = (t) => (D = S.ra)(t), Re = (t) => (Re = S.sa)(t), We = (t) => (We = S.ta)(t), ke = (t, e, r) => (ke = S.ua)(t, e, r), He = (t) => (He = S.va)(t); + s.dynCall_viijii = (t, e, r, n, a, i, u) => (s.dynCall_viijii = S.wa)(t, e, r, n, a, i, u); + var Be = s.dynCall_jiiii = (t, e, r, n, a) => (Be = s.dynCall_jiiii = S.xa)(t, e, r, n, a); + s.dynCall_iiiiij = (t, e, r, n, a, i, u) => (s.dynCall_iiiiij = S.ya)(t, e, r, n, a, i, u), s.dynCall_iiiiijj = (t, e, r, n, a, i, u, c, l) => (s.dynCall_iiiiijj = S.za)(t, e, r, n, a, i, u, c, l), s.dynCall_iiiiiijj = (t, e, r, n, a, i, u, c, l, f) => (s.dynCall_iiiiiijj = S.Aa)(t, e, r, n, a, i, u, c, l, f); + function ua(t, e) { + var r = O(); + try { + return A(t)(e); + } catch (n) { + if (D(r), n !== n + 0) + throw n; + P(1, 0); + } + } + function ca(t, e, r, n) { + var a = O(); + try { + A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function la(t, e, r) { + var n = O(); + try { + A(t)(e, r); + } catch (a) { + if (D(n), a !== a + 0) + throw a; + P(1, 0); + } + } + function da(t, e, r, n) { + var a = O(); + try { + return A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function fa(t, e, r, n, a) { + var i = O(); + try { + return A(t)(e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + function ha(t, e) { + var r = O(); + try { + A(t)(e); + } catch (n) { + if (D(r), n !== n + 0) + throw n; + P(1, 0); + } + } + function pa(t, e, r) { + var n = O(); + try { + return A(t)(e, r); + } catch (a) { + if (D(n), a !== a + 0) + throw a; + P(1, 0); + } + } + function ma(t) { + var e = O(); + try { + A(t)(); + } catch (r) { + if (D(e), r !== r + 0) + throw r; + P(1, 0); + } + } + function va(t, e, r, n, a) { + var i = O(); + try { + return A(t)(e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + function ya(t, e, r, n, a, i, u, c, l, f, p) { + var v = O(); + try { + A(t)(e, r, n, a, i, u, c, l, f, p); + } catch (y) { + if (D(v), y !== y + 0) + throw y; + P(1, 0); + } + } + function ga(t, e, r, n, a, i, u) { + var c = O(); + try { + return A(t)(e, r, n, a, i, u); + } catch (l) { + if (D(c), l !== l + 0) + throw l; + P(1, 0); + } + } + function wa(t, e, r, n, a) { + var i = O(); + try { + A(t)(e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + function $a(t, e, r, n, a, i) { + var u = O(); + try { + return A(t)(e, r, n, a, i); + } catch (c) { + if (D(u), c !== c + 0) + throw c; + P(1, 0); + } + } + function ba(t, e, r, n, a, i, u, c) { + var l = O(); + try { + return A(t)(e, r, n, a, i, u, c); + } catch (f) { + if (D(l), f !== f + 0) + throw f; + P(1, 0); + } + } + function Ca(t, e, r, n) { + var a = O(); + try { + return A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function _a(t, e, r, n) { + var a = O(); + try { + return A(t)(e, r, n); + } catch (i) { + if (D(a), i !== i + 0) + throw i; + P(1, 0); + } + } + function Ta(t) { + var e = O(); + try { + return A(t)(); + } catch (r) { + if (D(e), r !== r + 0) + throw r; + P(1, 0); + } + } + function Pa(t, e, r, n, a, i, u, c) { + var l = O(); + try { + A(t)(e, r, n, a, i, u, c); + } catch (f) { + if (D(l), f !== f + 0) + throw f; + P(1, 0); + } + } + function Ea(t, e, r, n, a, i, u, c, l, f, p, v) { + var y = O(); + try { + return A(t)(e, r, n, a, i, u, c, l, f, p, v); + } catch (w) { + if (D(y), w !== w + 0) + throw w; + P(1, 0); + } + } + function Aa(t, e, r, n, a, i, u, c, l, f, p, v, y, w, E, x) { + var _ = O(); + try { + A(t)(e, r, n, a, i, u, c, l, f, p, v, y, w, E, x); + } catch (R) { + if (D(_), R !== R + 0) + throw R; + P(1, 0); + } + } + function Oa(t, e, r, n, a) { + var i = O(); + try { + return Be(t, e, r, n, a); + } catch (u) { + if (D(i), u !== u + 0) + throw u; + P(1, 0); + } + } + var St; + ht = function t() { + St || Ue(), St || (ht = t); + }; + function Ue() { + if (et > 0 || (ur(), et > 0)) + return; + function t() { + St || (St = !0, s.calledRun = !0, !dt && (cr(), $(s), s.onRuntimeInitialized && s.onRuntimeInitialized(), lr())); + } + s.setStatus ? (s.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + s.setStatus(""); + }, 1), t(); + }, 1)) : t(); + } + if (s.preInit) + for (typeof s.preInit == "function" && (s.preInit = [s.preInit]); s.preInit.length > 0; ) + s.preInit.pop()(); + return Ue(), h.ready; + }; +})(); +function to(o) { + return ae( + Rt, + o + ); +} +function ao(o) { + return Za( + Rt, + o + ); +} +async function eo(o, h) { + return Ja( + Rt, + o, + h + ); +} +async function ro(o, h) { + return Ka( + Rt, + o, + h + ); +} +var ct; +class oo extends EventTarget { + constructor(s = {}) { + var $; + super(); + ze(this, ct, void 0); + try { + const g = ($ = s == null ? void 0 : s.formats) == null ? void 0 : $.filter( + (b) => b !== "unknown" + ); + if ((g == null ? void 0 : g.length) === 0) + throw new TypeError("Hint option provided, but is empty."); + g == null || g.forEach((b) => { + if (!It.has(b)) + throw new TypeError( + `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.` + ); + }), Ne(this, ct, g != null ? g : []), to().then((b) => { + this.dispatchEvent( + new CustomEvent("load", { + detail: b + }) + ); + }).catch((b) => { + this.dispatchEvent(new CustomEvent("error", { detail: b })); + }); + } catch (g) { + throw Ge( + g, + "Failed to construct 'BarcodeDetector'" + ); + } + } + static async getSupportedFormats() { + return Da.filter((s) => s !== "unknown"); + } + async detect(s) { + try { + const $ = await Ra(s); + if ($ === null) + return []; + let g; + try { + ar($) ? g = await eo($, { + tryHarder: !0, + formats: re(this, ct).map((b) => It.get(b)) + }) : g = await ro($, { + tryHarder: !0, + formats: re(this, ct).map((b) => It.get(b)) + }); + } catch (b) { + throw console.error(b), new DOMException( + "Barcode detection service unavailable.", + "NotSupportedError" + ); + } + return g.map((b) => { + const { + topLeft: { x: H, y: L }, + topRight: { x: B, y: M }, + bottomLeft: { x: Y, y: G }, + bottomRight: { x: U, y: Q } + } = b.position, tt = Math.min(H, B, Y, U), dt = Math.min(L, M, G, Q), V = Math.max(H, B, Y, U), W = Math.max(L, M, G, Q); + return { + boundingBox: new DOMRectReadOnly( + tt, + dt, + V - tt, + W - dt + ), + rawValue: b.text, + format: xa(b.format), + cornerPoints: [ + { + x: H, + y: L + }, + { + x: B, + y: M + }, + { + x: U, + y: Q + }, + { + x: Y, + y: G + } + ] + }; + }); + } catch ($) { + throw Ge( + $, + "Failed to execute 'detect' on 'BarcodeDetector'" + ); + } + } +} +ct = new WeakMap(); +export { + oo as BarcodeDetector, + ao as setZXingModuleOverrides +}; diff --git a/node_modules/barcode-detector/dist/es/side-effects.d.ts b/node_modules/barcode-detector/dist/es/side-effects.d.ts new file mode 100644 index 0000000..9b0973c --- /dev/null +++ b/node_modules/barcode-detector/dist/es/side-effects.d.ts @@ -0,0 +1,8 @@ +export { setZXingModuleOverrides } from "./BarcodeDetector.js"; +declare global { + var BarcodeDetector: typeof import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeDetector = import("./BarcodeDetector.js").BarcodeDetector; + type BarcodeFormat = import("./BarcodeDetector.js").BarcodeFormat; + type BarcodeDetectorOptions = import("./BarcodeDetector.js").BarcodeDetectorOptions; + type DetectedBarcode = import("./BarcodeDetector.js").DetectedBarcode; +} diff --git a/node_modules/barcode-detector/dist/es/side-effects.js b/node_modules/barcode-detector/dist/es/side-effects.js new file mode 100644 index 0000000..4780bf2 --- /dev/null +++ b/node_modules/barcode-detector/dist/es/side-effects.js @@ -0,0 +1,7 @@ +import { BarcodeDetector as o } from "./pure.js"; +import { setZXingModuleOverrides as d } from "./pure.js"; +var e; +(e = globalThis.BarcodeDetector) != null || (globalThis.BarcodeDetector = o); +export { + d as setZXingModuleOverrides +}; diff --git a/node_modules/barcode-detector/dist/es/utils.d.ts b/node_modules/barcode-detector/dist/es/utils.d.ts new file mode 100644 index 0000000..65583cb --- /dev/null +++ b/node_modules/barcode-detector/dist/es/utils.d.ts @@ -0,0 +1,15 @@ +/// +import { type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat } from "zxing-wasm/reader"; +export declare const BARCODE_FORMATS: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +export type BarcodeFormat = (typeof BARCODE_FORMATS)[number]; +export type ReadResultBarcodeFormat = Exclude; +export declare const formatMap: Map<"aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown", ReadInputBarcodeFormat>; +export declare function convertFormat(target: ReadOutputBarcodeFormat): ReadResultBarcodeFormat; +export declare function isBlob(image: ImageBitmapSourceWebCodecs): image is Blob; +export declare function getImageDataOrBlobFromImageBitmapSource(image: ImageBitmapSourceWebCodecs): Promise; +declare global { + interface SVGImageElement { + decode?(): Promise; + } +} +export declare function addPrefixToExceptionOrError(e: unknown, prefix: string): TypeError | DOMException; diff --git a/node_modules/barcode-detector/dist/iife/index.js b/node_modules/barcode-detector/dist/iife/index.js new file mode 100644 index 0000000..a9cab46 --- /dev/null +++ b/node_modules/barcode-detector/dist/iife/index.js @@ -0,0 +1,3 @@ +var BarcodeDetectionAPI=function(I){"use strict";var cr=(I,B,z)=>{if(!B.has(I))throw TypeError("Cannot "+z)};var se=(I,B,z)=>(cr(I,B,"read from private field"),z?z.call(I):B.get(I)),lr=(I,B,z)=>{if(B.has(I))throw TypeError("Cannot add the same private member more than once");B instanceof WeakSet?B.add(I):B.set(I,z)},dr=(I,B,z,nt)=>(cr(I,B,"write to private field"),nt?nt.call(I,z):B.set(I,z),z);var ct,Te;const B=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],z=[...B,["unknown"]].map(i=>i[0]),nt=new Map(B);function fr(i){for(const[p,c]of nt)if(i===c)return p;return"unknown"}function hr(i){if(ue(i))return{width:i.naturalWidth,height:i.naturalHeight};if(ce(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(le(i))return{width:i.videoWidth,height:i.videoHeight};if(fe(i))return{width:i.width,height:i.height};if(pe(i))return{width:i.displayWidth,height:i.displayHeight};if(de(i))return{width:i.width,height:i.height};if(he(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function ue(i){try{return i instanceof HTMLImageElement}catch{return!1}}function ce(i){try{return i instanceof SVGImageElement}catch{return!1}}function le(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function de(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function fe(i){try{return i instanceof ImageBitmap}catch{return!1}}function he(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function pe(i){try{return i instanceof VideoFrame}catch{return!1}}function me(i){try{return i instanceof Blob}catch{return!1}}function pr(i){try{return i instanceof ImageData}catch{return!1}}function mr(i,p){try{const c=new OffscreenCanvas(i,p);if(c.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return c;throw void 0}catch{const c=document.createElement("canvas");return c.width=i,c.height=p,c}}async function ve(i){if(ue(i)&&!await wr(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(ce(i)&&!await $r(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(pe(i)&&br(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(le(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(fe(i)&&Tr(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:p,height:c}=hr(i);if(p===0||c===0)return null;const g=mr(p,c).getContext("2d");g.drawImage(i,0,0);try{return g.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function vr(i){let p;try{if(globalThis.createImageBitmap)p=await createImageBitmap(i);else if(globalThis.Image){p=new Image;let $="";try{$=URL.createObjectURL(i),p.src=$,await p.decode()}finally{URL.revokeObjectURL($)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await ve(p)}function yr(i){const{width:p,height:c}=i;if(p===0||c===0)return null;const $=i.getContext("2d");try{return $.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function gr(i){if(me(i))return await vr(i);if(pr(i)){if(Cr(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return de(i)||he(i)?yr(i):await ve(i)}async function wr(i){try{return await i.decode(),!0}catch{return!1}}async function $r(i){var p;try{return await((p=i.decode)==null?void 0:p.call(i)),!0}catch{return!1}}function br(i){return i.format===null}function Cr(i){return i.data.buffer.byteLength===0}function Tr(i){return i.width===0&&i.height===0}function ye(i,p){return i instanceof DOMException?new DOMException(`${p}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${p}: ${i.message}`):new Error(`${p}: ${i}`)}const ge=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function _r(i){return i.join("|")}function Pr(i){const p=we(i);let c=0,$=ge.length-1;for(;c<=$;){const g=Math.floor((c+$)/2),b=ge[g],U=we(b);if(U===p)return b;U{const c=i.match(/_(.+?)\.wasm$/);return c?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${c[1]}/${i}`:p+i}};let Bt=new WeakMap;function Ut(i,p){var c;const $=Bt.get(i);if($!=null&&$.modulePromise&&(p===void 0||Object.is(p,$.moduleOverrides)))return $.modulePromise;const g=(c=p!=null?p:$==null?void 0:$.moduleOverrides)!=null?c:Sr,b=i({...g});return Bt.set(i,{moduleOverrides:g,modulePromise:b}),b}function Mr(i,p){Bt.set(i,{moduleOverrides:p})}async function jr(i,p,c=ut){const $={...ut,...c},g=await Ut(i),{size:b}=p,U=new Uint8Array(await p.arrayBuffer()),N=g._malloc(b);g.HEAPU8.set(U,N);const V=g.readBarcodesFromImage(N,b,$e(g,$));g._free(N);const S=[];for(let G=0;G{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var c=p,$,g;c.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},c),U="./this.program",N=typeof window=="object",V=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function G(t){return c.locateFile?c.locateFile(t,S):S+t}var Q;(N||V)&&(V?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",V&&(Q=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),c.print||console.log.bind(console);var L=c.printErr||console.error.bind(console);Object.assign(c,b),b=null,c.arguments&&c.arguments,c.thisProgram&&(U=c.thisProgram),c.quit&&c.quit;var K;c.wasmBinary&&(K=c.wasmBinary),typeof WebAssembly!="object"&&Et("no native wasm support detected");var at,mt=!1,Y,k,lt,vt,H,_,_e,Pe;function Ee(){var t=at.buffer;c.HEAP8=Y=new Int8Array(t),c.HEAP16=lt=new Int16Array(t),c.HEAPU8=k=new Uint8Array(t),c.HEAPU16=vt=new Uint16Array(t),c.HEAP32=H=new Int32Array(t),c.HEAPU32=_=new Uint32Array(t),c.HEAPF32=_e=new Float32Array(t),c.HEAPF64=Pe=new Float64Array(t)}var Ae=[],De=[],Oe=[];function Br(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Lr(c.preRun.shift());Vt(Ae)}function Ur(){Vt(De)}function Vr(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)zr(c.postRun.shift());Vt(Oe)}function Lr(t){Ae.unshift(t)}function Yr(t){De.unshift(t)}function zr(t){Oe.unshift(t)}var ot=0,yt=null;function Nr(t){var e;ot++,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot)}function Gr(t){var e;if(ot--,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot),ot==0&&yt){var r=yt;yt=null,r()}}function Et(t){var e;(e=c.onAbort)===null||e===void 0||e.call(c,t),t="Aborted("+t+")",L(t),mt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var Xr="data:application/octet-stream;base64,",Fe=t=>t.startsWith(Xr),dt;dt="zxing_reader.wasm",Fe(dt)||(dt=G(dt));function xe(t){if(t==dt&&K)return new Uint8Array(K);if(Q)return Q(t);throw"both async and sync fetching of the wasm failed"}function qr(t){return!K&&(N||V)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>xe(t)):Promise.resolve().then(()=>xe(t))}function Se(t,e,r){return qr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{L(`failed to asynchronously prepare wasm: ${n}`),Et(n)})}function Qr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!Fe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var o=WebAssembly.instantiateStreaming(a,r);return o.then(n,function(s){return L(`wasm streaming compile failed: ${s}`),L("falling back to ArrayBuffer instantiation"),Se(e,r,n)})}):Se(e,r,n)}function Zr(){var t={a:Ha};function e(n,a){return M=n.exports,at=M.ia,Ee(),Ve=M.ma,Yr(M.ja),Gr(),M}Nr();function r(n){e(n.instance)}if(c.instantiateWasm)try{return c.instantiateWasm(t,e)}catch(n){L(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return Qr(K,dt,t,r).catch(g),{}}var Vt=t=>{for(;t.length>0;)t.shift()(c)};c.noExitRuntime;var At=[],Dt=0,Jr=t=>{var e=new Lt(t);return e.get_caught()||(e.set_caught(!0),Dt--),e.set_rethrown(!1),At.push(e),rr(e.excPtr),e.get_exception_ptr()},tt=0,Kr=()=>{P(0,0);var t=At.pop();er(t.excPtr),tt=0};function Lt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,Y[this.ptr+12>>0]=e},this.get_caught=function(){return Y[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,Y[this.ptr+13>>0]=e},this.get_rethrown=function(){return Y[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=ar(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var tn=t=>{throw tt||(tt=t),tt},Yt=t=>{var e=tt;if(!e)return _t(0),0;var r=new Lt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return _t(0),e;for(var a in t){var o=t[a];if(o===0||o===n)break;var s=r.ptr+16;if(nr(o,n,s))return _t(o),e}return _t(n),e},en=()=>Yt([]),rn=t=>Yt([t]),nn=(t,e)=>Yt([t,e]),an=()=>{var t=At.pop();t||Et("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(At.push(t),t.set_rethrown(!0),t.set_caught(!1),Dt++),tt=e,tt},on=(t,e,r)=>{var n=new Lt(t);throw n.init(e,r),tt=t,Dt++,tt},sn=()=>Dt,Ot={},zt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Nt(t){return this.fromWireType(H[t>>2])}var ft={},it={},Ft={},Me,xt=t=>{throw new Me(t)},st=(t,e,r)=>{t.forEach(function(u){Ft[u]=e});function n(u){var l=r(u);l.length!==t.length&&xt("Mismatched type converter count");for(var f=0;f{it.hasOwnProperty(u)?a[l]=it[u]:(o.push(u),ft.hasOwnProperty(u)||(ft[u]=[]),ft[u].push(()=>{a[l]=it[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)},un=t=>{var e=Ot[t];delete Ot[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,o=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));st([t],o,s=>{var u={};return a.forEach((l,f)=>{var h=l.fieldName,v=s[f],y=l.getter,w=l.getterContext,E=s[f+a.length],F=l.setter,T=l.setterContext;u[h]={read:W=>v.fromWireType(y(w,W)),write:(W,d)=>{var m=[];F(T,W,E.toWireType(m,d)),zt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var h in u)f[h]=u[h].read(l);return n(l),f},toWireType:(l,f)=>{for(var h in u)if(!(h in f))throw new TypeError(`Missing field: "${h}"`);var v=r();for(h in u)u[h].write(v,f[h]);return l!==null&&l.push(n,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:n}]})},cn=(t,e,r,n,a)=>{},ln=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);je=t},je,R=t=>{for(var e="",r=t;k[r];)e+=je[k[r++]];return e},ht,C=t=>{throw new ht(t)};function dn(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),it.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(it[t]=e,delete Ft[t],ft.hasOwnProperty(t)){var a=ft[t];delete ft[t],a.forEach(o=>o())}}function Z(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return dn(t,e,r)}var J=8,fn=(t,e,r,n)=>{e=R(e),Z(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?r:n},argPackAdvance:J,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},hn=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Gt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Xt=!1,Ie=t=>{},pn=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},Re=t=>{t.count.value-=1;var e=t.count.value===0;e&&pn(t)},We=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=We(t,e,r.baseClass);return n===null?null:r.downcast(n)},ke={},mn=()=>Object.keys($t).length,vn=()=>{var t=[];for(var e in $t)$t.hasOwnProperty(e)&&t.push($t[e]);return t},gt=[],qt=()=>{for(;gt.length;){var t=gt.pop();t.$$.deleteScheduled=!1,t.delete()}},wt,yn=t=>{wt=t,gt.length&&wt&&wt(qt)},gn=()=>{c.getInheritedInstanceCount=mn,c.getLiveInheritedInstances=vn,c.flushPendingDeletes=qt,c.setDelayFunction=yn},$t={},wn=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},$n=(t,e)=>(e=wn(t,e),$t[e]),St=(t,e)=>{(!e.ptrType||!e.ptr)&&xt("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&xt("Both smartPtrType and smartPtr must be specified"),e.count={value:1},bt(Object.create(t,{$$:{value:e,writable:!0}}))};function bn(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=$n(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o=this.registeredClass.getActualType(e),s=ke[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=We(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:t}):St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var bt=t=>typeof FinalizationRegistry>"u"?(bt=e=>e,t):(Xt=new FinalizationRegistry(e=>{Re(e.$$)}),bt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Xt.register(e,a,e)}return e},Ie=e=>Xt.unregister(e),bt(t)),Cn=()=>{Object.assign(Mt.prototype,{isAliasOf(t){if(!(this instanceof Mt)||!(t instanceof Mt))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Gt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=bt(Object.create(Object.getPrototypeOf(this),{$$:{value:hn(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),Ie(this),Re(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),gt.push(this),gt.length===1&&wt&&wt(qt),this.$$.deleteScheduled=!0,this}})};function Mt(){}var Ct=(t,e)=>Object.defineProperty(e,"name",{value:t}),He=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},Qt=(t,e,r)=>{c.hasOwnProperty(t)?((r===void 0||c[t].overloadTable!==void 0&&c[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),He(c,t,t),c.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),c[t].overloadTable[r]=e):(c[t]=e,r!==void 0&&(c[t].numArguments=r))},Tn=48,_n=57,Pn=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Tn&&e<=_n?`_${t}`:t};function En(t,e,r,n,a,o,s,u){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Zt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function An(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function Dn(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Zt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,et.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function On(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function Be(t){return this.fromWireType(_[t>>2])}var Fn=()=>{Object.assign(jt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:J,readValueFromPointer:Be,deleteObject(t){t!==null&&t.delete()},fromWireType:bn})};function jt(t,e,r,n,a,o,s,u,l,f,h){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=h,!a&&e.baseClass===void 0?n?(this.toWireType=An,this.destructorFunction=null):(this.toWireType=On,this.destructorFunction=null):this.toWireType=Dn}var Ue=(t,e,r)=>{c.hasOwnProperty(t)||xt("Replacing nonexistant public symbol"),c[t].overloadTable!==void 0&&r!==void 0?c[t].overloadTable[r]=e:(c[t]=e,c[t].argCount=r)},xn=(t,e,r)=>{var n=c["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},It=[],Ve,A=t=>{var e=It[t];return e||(t>=It.length&&(It.length=t+1),It[t]=e=Ve.get(t)),e},Sn=(t,e,r)=>{if(t.includes("j"))return xn(t,e,r);var n=A(e).apply(null,r);return n},Mn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Sn(t,e,r)}},q=(t,e)=>{t=R(t);function r(){return t.includes("j")?Mn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},jn=(t,e)=>{var r=Ct(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Le,Ye=t=>{var e=tr(t),r=R(e);return rt(e),r},Rt=(t,e)=>{var r=[],n={};function a(o){if(!n[o]&&!it[o]){if(Ft[o]){Ft[o].forEach(a);return}r.push(o),n[o]=!0}}throw e.forEach(a),new Le(`${t}: `+r.map(Ye).join([", "]))},In=(t,e,r,n,a,o,s,u,l,f,h,v,y)=>{h=R(h),o=q(a,o),u&&(u=q(s,u)),f&&(f=q(l,f)),y=q(v,y);var w=Pn(h);Qt(w,function(){Rt(`Cannot construct ${h} due to unbound types`,[n])}),st([t,e,r],n?[n]:[],function(E){E=E[0];var F,T;n?(F=E.registeredClass,T=F.instancePrototype):T=Mt.prototype;var W=Ct(h,function(){if(Object.getPrototypeOf(this)!==d)throw new ht("Use 'new' to construct "+h);if(m.constructor_body===void 0)throw new ht(h+" has no accessible constructor");var ur=m.constructor_body[arguments.length];if(ur===void 0)throw new ht(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return ur.apply(this,arguments)}),d=Object.create(T,{constructor:{value:W}});W.prototype=d;var m=new En(h,W,d,y,F,o,u,f);if(m.baseClass){var x,j;(j=(x=m.baseClass).__derivedClasses)!==null&&j!==void 0||(x.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var pt=new jt(h,m,!0,!1,!1),Ht=new jt(h+"*",m,!1,!1,!1),sr=new jt(h+" const*",m,!1,!0,!1);return ke[t]={pointerType:Ht,constPointerType:sr},Ue(w,W),[pt,Ht,sr]})},Jt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function Rn(t){for(var e=1;e{var s=Jt(e,r);a=q(n,a),st([],[t],function(u){u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new ht(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{Rt(`Cannot construct ${u.name} due to unbound types`,s)},st([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[e-1]=Kt(l,f,null,a,o),[])),[]})},ze=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},kn=(t,e,r,n,a,o,s,u,l)=>{var f=Jt(r,n);e=R(e),e=ze(e),o=q(a,o),st([],[t],function(h){h=h[0];var v=`${h.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&h.registeredClass.pureVirtualFunctions.push(e);function y(){Rt(`Cannot call ${v} due to unbound types`,f)}var w=h.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==h.name&&E.argCount===r-2?(y.argCount=r-2,y.className=h.name,w[e]=y):(He(w,e,v),w[e].overloadTable[r-2]=y),st([],f,function(F){var T=Kt(v,F,h,o,s);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function Hn(){Object.assign(Ne.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function Ne(){this.allocated=[void 0],this.freelist=[]}var X=new Ne,te=t=>{t>=X.reserved&&--X.get(t).refcount===0&&X.free(t)},Bn=()=>{for(var t=0,e=X.reserved;e{X.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),X.reserved=X.allocated.length,c.count_emval_handles=Bn},et={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),X.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return X.allocate({refcount:1,value:t})}}},Vn=(t,e)=>{e=R(e),Z(t,{name:e,fromWireType:r=>{var n=et.toValue(r);return te(r),n},toWireType:(r,n)=>et.toHandle(n),argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:null})},Ln=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(Y[n>>0])}:function(n){return this.fromWireType(k[n>>0])};case 2:return r?function(n){return this.fromWireType(lt[n>>1])}:function(n){return this.fromWireType(vt[n>>1])};case 4:return r?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Yn=(t,e,r,n)=>{e=R(e);function a(){}a.values={},Z(t,{name:e,constructor:a,fromWireType:function(o){return this.constructor.values[o]},toWireType:(o,s)=>s.value,argPackAdvance:J,readValueFromPointer:Ln(e,r,n),destructorFunction:null}),Qt(e,a)},ee=(t,e)=>{var r=it[t];return r===void 0&&C(e+" has unknown type "+Ye(t)),r},zn=(t,e,r)=>{var n=ee(t,"enum");e=R(e);var a=n.constructor,o=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:Ct(`${n.name}_${e}`,function(){})}});a.values[r]=o,a[e]=o},re=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},Nn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(_e[r>>2])};case 8:return function(r){return this.fromWireType(Pe[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},Gn=(t,e,r)=>{e=R(e),Z(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:J,readValueFromPointer:Nn(e,r),destructorFunction:null})},Xn=(t,e,r,n,a,o,s)=>{var u=Jt(e,r);t=R(t),t=ze(t),a=q(n,a),Qt(t,function(){Rt(`Cannot call ${t} due to unbound types`,u)},e-1),st([],u,function(l){var f=[l[0],null].concat(l.slice(1));return Ue(t,Kt(t,f,null,a,o),e-1),[]})},qn=(t,e,r)=>{switch(e){case 1:return r?n=>Y[n>>0]:n=>k[n>>0];case 2:return r?n=>lt[n>>1]:n=>vt[n>>1];case 4:return r?n=>H[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Qn=(t,e,r,n,a)=>{e=R(e);var o=h=>h;if(n===0){var s=32-8*r;o=h=>h<>>s}var u=e.includes("unsigned"),l=(h,v)=>{},f;u?f=function(h,v){return l(v,this.name),v>>>0}:f=function(h,v){return l(v,this.name),v},Z(t,{name:e,fromWireType:o,toWireType:f,argPackAdvance:J,readValueFromPointer:qn(e,r,n!==0),destructorFunction:null})},Zn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function o(s){var u=_[s>>2],l=_[s+4>>2];return new a(Y.buffer,l,u)}r=R(r),Z(t,{name:r,fromWireType:o,argPackAdvance:J,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},Ge=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,o=r+n-1,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(r>=o)break;e[r++]=u}else if(u<=2047){if(r+1>=o)break;e[r++]=192|u>>6,e[r++]=128|u&63}else if(u<=65535){if(r+2>=o)break;e[r++]=224|u>>12,e[r++]=128|u>>6&63,e[r++]=128|u&63}else{if(r+3>=o)break;e[r++]=240|u>>18,e[r++]=128|u>>12&63,e[r++]=128|u>>6&63,e[r++]=128|u&63}}return e[r]=0,r-a},Jn=(t,e,r)=>Ge(t,k,e,r),Xe=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},qe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Kn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&qe)return qe.decode(t.subarray(e,a));for(var o="";e>10,56320|f&1023)}}return o},ne=(t,e)=>t?Kn(k,t,e):"",ta=(t,e)=>{e=R(e);var r=e==="std::string";Z(t,{name:e,fromWireType(n){var a=_[n>>2],o=n+4,s;if(r)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||k[f]==0){var h=f-u,v=ne(u,h);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var y=new Array(a),l=0;l>2]=o,r&&s)Jn(a,l,o+1);else if(s)for(var f=0;f255&&(rt(l),C("String has UTF-16 code units that do not fit in 8 bits")),k[l+f]=h}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&vt[n];)++n;if(r=n<<1,r-t>32&&Qe)return Qe.decode(k.subarray(t,r));for(var o="",s=0;!(s>=e/2);++s){var u=lt[t+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},ra=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,o=r>1]=u,e+=2}return lt[e>>1]=0,e-a},na=t=>t.length*2,aa=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=H[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},oa=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,o=a+r-4,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(H[e>>2]=u,e+=4,e+4>o)break}return H[e>>2]=0,e-a},ia=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},sa=(t,e,r)=>{r=R(r);var n,a,o,s,u;e===2?(n=ea,a=ra,s=na,o=()=>vt,u=1):e===4&&(n=aa,a=oa,s=ia,o=()=>_,u=2),Z(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],h=o(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||h[E>>u]==0){var F=E-y,T=n(y,F);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return rt(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var h=s(f),v=ie(4+h+e);return _[v>>2]=h>>u,a(f,v+4,h+e),l!==null&&l.push(rt,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction(l){rt(l)}})},ua=(t,e,r,n,a,o)=>{Ot[t]={name:R(e),rawConstructor:q(r,n),rawDestructor:q(a,o),fields:[]}},ca=(t,e,r,n,a,o,s,u,l,f)=>{Ot[t].fields.push({fieldName:R(e),getterReturnType:r,getter:q(n,a),getterContext:o,setterArgumentType:s,setter:q(u,l),setterContext:f})},la=(t,e)=>{e=R(e),Z(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},ae=[],da=(t,e,r,n)=>(t=ae[t],e=et.toValue(e),t(null,e,r,n)),fa={},ha=t=>{var e=fa[t];return e===void 0?R(t):e},Ze=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},pa=t=>t===0?et.toHandle(Ze()):(t=ha(t),et.toHandle(Ze()[t])),ma=t=>{var e=ae.length;return ae.push(t),e},va=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},ya=Reflect.construct,ga=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=et.toHandle(n)),a},wa=(t,e,r)=>{var n=va(t,e),a=n.shift();t--;var o=new Array(t),s=(l,f,h,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return ma(Ct(u,s))},$a=t=>{t>4&&(X.get(t).refcount+=1)},ba=t=>{var e=et.toValue(t);zt(e),te(t)},Ca=(t,e)=>{t=ee(t,"_emval_take_value");var r=t.readValueFromPointer(e);return et.toHandle(r)},Ta=()=>{Et("")},_a=(t,e,r)=>k.copyWithin(t,e,e+r),Pa=()=>2147483648,Ea=t=>{var e=at.buffer,r=(t-e.byteLength+65535)/65536;try{return at.grow(r),Ee(),1}catch{}},Aa=t=>{var e=k.length;t>>>=0;var r=Pa();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,t+100663296);var s=Math.min(r,n(Math.max(t,o),65536)),u=Ea(s);if(u)return!0}return!1},oe={},Da=()=>U||"./this.program",Tt=()=>{if(!Tt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Da()};for(var r in oe)oe[r]===void 0?delete e[r]:e[r]=oe[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);Tt.strings=n}return Tt.strings},Oa=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);Y[e>>0]=0},Fa=(t,e)=>{var r=0;return Tt().forEach((n,a)=>{var o=e+r;_[t+a*4>>2]=o,Oa(n,o),r+=n.length+1}),0},xa=(t,e)=>{var r=Tt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},Sa=t=>t,Wt=t=>t%4===0&&(t%100!==0||t%400===0),Ma=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Je=[31,29,31,30,31,30,31,31,30,31,30,31],Ke=[31,28,31,30,31,30,31,31,30,31,30,31],ja=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=Wt(r.getFullYear()),a=r.getMonth(),o=(n?Je:Ke)[a];if(e>o-r.getDate())e-=o-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function Ia(t,e,r){var n=r>0?r:Xe(t)+1,a=new Array(n),o=Ge(t,a,0,a.length);return e&&(a.length=o),a}var Ra=(t,e)=>{Y.set(t,e)},Wa=(t,e,r,n)=>{var a=_[n+40>>2],o={tm_sec:H[n>>2],tm_min:H[n+4>>2],tm_hour:H[n+8>>2],tm_mday:H[n+12>>2],tm_mon:H[n+16>>2],tm_year:H[n+20>>2],tm_wday:H[n+24>>2],tm_yday:H[n+28>>2],tm_isdst:H[n+32>>2],tm_gmtoff:H[n+36>>2],tm_zone:a?ne(a):""},s=ne(r),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in u)s=s.replace(new RegExp(l,"g"),u[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,x){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=x(d.getFullYear()-m.getFullYear()))===0&&(j=x(d.getMonth()-m.getMonth()))===0&&(j=x(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function F(d){var m=ja(new Date(d.tm_year+1900,0,1),d.tm_yday),x=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),pt=E(x),Ht=E(j);return w(pt,m)<=0?w(Ht,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>h[d.tm_mon].substring(0,3),"%B":d=>h[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>F(d).toString().substring(2),"%G":d=>F(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+Ma(Wt(d.tm_year+1900)?Je:Ke,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var x=(d.tm_wday+371-d.tm_yday)%7;x!=4&&(x!=3||!Wt(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&Wt(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,x=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(x?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var l in T)s.includes(l)&&(s=s.replace(new RegExp(l,"g"),T[l](o)));s=s.replace(/\0\0/g,"%");var W=Ia(s,!1);return W.length>e?0:(Ra(W,t),W.length-1)},ka=(t,e,r,n,a)=>Wa(t,e,r,n);Me=c.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},ln(),ht=c.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},Cn(),gn(),Fn(),Le=c.UnboundTypeError=jn(Error,"UnboundTypeError"),Hn(),Un();var Ha={s:Jr,u:Kr,b:en,g:rn,q:nn,J:an,f:on,V:sn,d:tn,da:un,Q:cn,_:fn,ca:In,ba:Wn,w:kn,Y:Vn,x:Yn,h:zn,L:Gn,M:Xn,t:Qn,o:Zn,K:ta,C:sa,A:ua,ea:ca,$:la,R:da,ha:te,fa:pa,Z:wa,N:$a,O:ba,aa:Ca,B:Ta,X:_a,W:Aa,T:Fa,U:xa,E:eo,D:Ya,F:to,n:ro,a:Ba,e:Na,m:La,k:Xa,H:Ja,v:Qa,G:Ka,z:ao,P:io,l:Ga,j:za,c:Va,p:Ua,I:Za,r:no,i:qa,y:oo,ga:Sa,S:ka},M=Zr(),rt=c._free=t=>(rt=c._free=M.ka)(t),ie=c._malloc=t=>(ie=c._malloc=M.la)(t),tr=t=>(tr=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),_t=t=>(_t=M.pa)(t),D=()=>(D=M.qa)(),O=t=>(O=M.ra)(t),er=t=>(er=M.sa)(t),rr=t=>(rr=M.ta)(t),nr=(t,e,r)=>(nr=M.ua)(t,e,r),ar=t=>(ar=M.va)(t);c.dynCall_viijii=(t,e,r,n,a,o,s)=>(c.dynCall_viijii=M.wa)(t,e,r,n,a,o,s);var or=c.dynCall_jiiii=(t,e,r,n,a)=>(or=c.dynCall_jiiii=M.xa)(t,e,r,n,a);c.dynCall_iiiiij=(t,e,r,n,a,o,s)=>(c.dynCall_iiiiij=M.ya)(t,e,r,n,a,o,s),c.dynCall_iiiiijj=(t,e,r,n,a,o,s,u,l)=>(c.dynCall_iiiiijj=M.za)(t,e,r,n,a,o,s,u,l),c.dynCall_iiiiiijj=(t,e,r,n,a,o,s,u,l,f)=>(c.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,o,s,u,l,f);function Ba(t,e){var r=D();try{return A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Ua(t,e,r,n){var a=D();try{A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Va(t,e,r){var n=D();try{A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function La(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Ya(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function za(t,e){var r=D();try{A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Na(t,e,r){var n=D();try{return A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Ga(t){var e=D();try{A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function Xa(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function qa(t,e,r,n,a,o,s,u,l,f,h){var v=D();try{A(t)(e,r,n,a,o,s,u,l,f,h)}catch(y){if(O(v),y!==y+0)throw y;P(1,0)}}function Qa(t,e,r,n,a,o,s){var u=D();try{return A(t)(e,r,n,a,o,s)}catch(l){if(O(u),l!==l+0)throw l;P(1,0)}}function Za(t,e,r,n,a){var o=D();try{A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Ja(t,e,r,n,a,o){var s=D();try{return A(t)(e,r,n,a,o)}catch(u){if(O(s),u!==u+0)throw u;P(1,0)}}function Ka(t,e,r,n,a,o,s,u){var l=D();try{return A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function to(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function eo(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function ro(t){var e=D();try{return A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function no(t,e,r,n,a,o,s,u){var l=D();try{A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function ao(t,e,r,n,a,o,s,u,l,f,h,v){var y=D();try{return A(t)(e,r,n,a,o,s,u,l,f,h,v)}catch(w){if(O(y),w!==w+0)throw w;P(1,0)}}function oo(t,e,r,n,a,o,s,u,l,f,h,v,y,w,E,F){var T=D();try{A(t)(e,r,n,a,o,s,u,l,f,h,v,y,w,E,F)}catch(W){if(O(T),W!==W+0)throw W;P(1,0)}}function io(t,e,r,n,a){var o=D();try{return or(t,e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}var kt;yt=function t(){kt||ir(),kt||(yt=t)};function ir(){if(ot>0||(Br(),ot>0))return;function t(){kt||(kt=!0,c.calledRun=!0,!mt&&(Ur(),$(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Vr()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),t()},1)):t()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return ir(),p.ready}})();function Rr(i){return Ut(Pt,i)}function Wr(i){return Mr(Pt,i)}async function kr(i,p){return jr(Pt,i,p)}async function Hr(i,p){return Ir(Pt,i,p)}class Ce extends EventTarget{constructor(c={}){var $;super();lr(this,ct,void 0);try{const g=($=c==null?void 0:c.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!nt.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),dr(this,ct,g!=null?g:[]),Rr().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw ye(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return z.filter(c=>c!=="unknown")}async detect(c){try{const $=await gr(c);if($===null)return[];let g;try{me($)?g=await kr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))}):g=await Hr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:U,y:N},topRight:{x:V,y:S},bottomLeft:{x:G,y:Q},bottomRight:{x:L,y:K}}=b.position,at=Math.min(U,V,G,L),mt=Math.min(N,S,Q,K),Y=Math.max(U,V,G,L),k=Math.max(N,S,Q,K);return{boundingBox:new DOMRectReadOnly(at,mt,Y-at,k-mt),rawValue:b.text,format:fr(b.format),cornerPoints:[{x:U,y:N},{x:V,y:S},{x:L,y:K},{x:G,y:Q}]}})}catch($){throw ye($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}return ct=new WeakMap,(Te=globalThis.BarcodeDetector)!=null||(globalThis.BarcodeDetector=Ce),I.BarcodeDetector=Ce,I.setZXingModuleOverrides=Wr,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),I}({}); diff --git a/node_modules/barcode-detector/dist/iife/pure.js b/node_modules/barcode-detector/dist/iife/pure.js new file mode 100644 index 0000000..111df27 --- /dev/null +++ b/node_modules/barcode-detector/dist/iife/pure.js @@ -0,0 +1,3 @@ +var BarcodeDetectionAPI=function(I){"use strict";var sr=(I,B,z)=>{if(!B.has(I))throw TypeError("Cannot "+z)};var se=(I,B,z)=>(sr(I,B,"read from private field"),z?z.call(I):B.get(I)),ur=(I,B,z)=>{if(B.has(I))throw TypeError("Cannot add the same private member more than once");B instanceof WeakSet?B.add(I):B.set(I,z)},cr=(I,B,z,nt)=>(sr(I,B,"write to private field"),nt?nt.call(I,z):B.set(I,z),z);var ct;const B=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],z=[...B,["unknown"]].map(i=>i[0]),nt=new Map(B);function lr(i){for(const[p,c]of nt)if(i===c)return p;return"unknown"}function dr(i){if(ue(i))return{width:i.naturalWidth,height:i.naturalHeight};if(ce(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(le(i))return{width:i.videoWidth,height:i.videoHeight};if(fe(i))return{width:i.width,height:i.height};if(pe(i))return{width:i.displayWidth,height:i.displayHeight};if(de(i))return{width:i.width,height:i.height};if(he(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function ue(i){try{return i instanceof HTMLImageElement}catch{return!1}}function ce(i){try{return i instanceof SVGImageElement}catch{return!1}}function le(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function de(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function fe(i){try{return i instanceof ImageBitmap}catch{return!1}}function he(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function pe(i){try{return i instanceof VideoFrame}catch{return!1}}function me(i){try{return i instanceof Blob}catch{return!1}}function fr(i){try{return i instanceof ImageData}catch{return!1}}function hr(i,p){try{const c=new OffscreenCanvas(i,p);if(c.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return c;throw void 0}catch{const c=document.createElement("canvas");return c.width=i,c.height=p,c}}async function ve(i){if(ue(i)&&!await yr(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(ce(i)&&!await gr(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(pe(i)&&wr(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(le(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(fe(i)&&br(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:p,height:c}=dr(i);if(p===0||c===0)return null;const g=hr(p,c).getContext("2d");g.drawImage(i,0,0);try{return g.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function pr(i){let p;try{if(globalThis.createImageBitmap)p=await createImageBitmap(i);else if(globalThis.Image){p=new Image;let $="";try{$=URL.createObjectURL(i),p.src=$,await p.decode()}finally{URL.revokeObjectURL($)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await ve(p)}function mr(i){const{width:p,height:c}=i;if(p===0||c===0)return null;const $=i.getContext("2d");try{return $.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function vr(i){if(me(i))return await pr(i);if(fr(i)){if($r(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return de(i)||he(i)?mr(i):await ve(i)}async function yr(i){try{return await i.decode(),!0}catch{return!1}}async function gr(i){var p;try{return await((p=i.decode)==null?void 0:p.call(i)),!0}catch{return!1}}function wr(i){return i.format===null}function $r(i){return i.data.buffer.byteLength===0}function br(i){return i.width===0&&i.height===0}function ye(i,p){return i instanceof DOMException?new DOMException(`${p}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${p}: ${i.message}`):new Error(`${p}: ${i}`)}const ge=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Cr(i){return i.join("|")}function Tr(i){const p=we(i);let c=0,$=ge.length-1;for(;c<=$;){const g=Math.floor((c+$)/2),b=ge[g],U=we(b);if(U===p)return b;U{const c=i.match(/_(.+?)\.wasm$/);return c?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${c[1]}/${i}`:p+i}};let Bt=new WeakMap;function Ut(i,p){var c;const $=Bt.get(i);if($!=null&&$.modulePromise&&(p===void 0||Object.is(p,$.moduleOverrides)))return $.modulePromise;const g=(c=p!=null?p:$==null?void 0:$.moduleOverrides)!=null?c:Fr,b=i({...g});return Bt.set(i,{moduleOverrides:g,modulePromise:b}),b}function xr(i,p){Bt.set(i,{moduleOverrides:p})}async function Sr(i,p,c=ut){const $={...ut,...c},g=await Ut(i),{size:b}=p,U=new Uint8Array(await p.arrayBuffer()),N=g._malloc(b);g.HEAPU8.set(U,N);const V=g.readBarcodesFromImage(N,b,$e(g,$));g._free(N);const S=[];for(let G=0;G{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var c=p,$,g;c.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},c),U="./this.program",N=typeof window=="object",V=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function G(t){return c.locateFile?c.locateFile(t,S):S+t}var Q;(N||V)&&(V?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",V&&(Q=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),c.print||console.log.bind(console);var L=c.printErr||console.error.bind(console);Object.assign(c,b),b=null,c.arguments&&c.arguments,c.thisProgram&&(U=c.thisProgram),c.quit&&c.quit;var K;c.wasmBinary&&(K=c.wasmBinary),typeof WebAssembly!="object"&&Et("no native wasm support detected");var at,mt=!1,Y,k,lt,vt,H,_,Ce,Te;function _e(){var t=at.buffer;c.HEAP8=Y=new Int8Array(t),c.HEAP16=lt=new Int16Array(t),c.HEAPU8=k=new Uint8Array(t),c.HEAPU16=vt=new Uint16Array(t),c.HEAP32=H=new Int32Array(t),c.HEAPU32=_=new Uint32Array(t),c.HEAPF32=Ce=new Float32Array(t),c.HEAPF64=Te=new Float64Array(t)}var Pe=[],Ee=[],Ae=[];function Hr(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Vr(c.preRun.shift());Vt(Pe)}function Br(){Vt(Ee)}function Ur(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Yr(c.postRun.shift());Vt(Ae)}function Vr(t){Pe.unshift(t)}function Lr(t){Ee.unshift(t)}function Yr(t){Ae.unshift(t)}var ot=0,yt=null;function zr(t){var e;ot++,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot)}function Nr(t){var e;if(ot--,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot),ot==0&&yt){var r=yt;yt=null,r()}}function Et(t){var e;(e=c.onAbort)===null||e===void 0||e.call(c,t),t="Aborted("+t+")",L(t),mt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var Gr="data:application/octet-stream;base64,",De=t=>t.startsWith(Gr),dt;dt="zxing_reader.wasm",De(dt)||(dt=G(dt));function Oe(t){if(t==dt&&K)return new Uint8Array(K);if(Q)return Q(t);throw"both async and sync fetching of the wasm failed"}function Xr(t){return!K&&(N||V)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>Oe(t)):Promise.resolve().then(()=>Oe(t))}function Fe(t,e,r){return Xr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{L(`failed to asynchronously prepare wasm: ${n}`),Et(n)})}function qr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!De(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var o=WebAssembly.instantiateStreaming(a,r);return o.then(n,function(s){return L(`wasm streaming compile failed: ${s}`),L("falling back to ArrayBuffer instantiation"),Fe(e,r,n)})}):Fe(e,r,n)}function Qr(){var t={a:ka};function e(n,a){return M=n.exports,at=M.ia,_e(),Be=M.ma,Lr(M.ja),Nr(),M}zr();function r(n){e(n.instance)}if(c.instantiateWasm)try{return c.instantiateWasm(t,e)}catch(n){L(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return qr(K,dt,t,r).catch(g),{}}var Vt=t=>{for(;t.length>0;)t.shift()(c)};c.noExitRuntime;var At=[],Dt=0,Zr=t=>{var e=new Lt(t);return e.get_caught()||(e.set_caught(!0),Dt--),e.set_rethrown(!1),At.push(e),tr(e.excPtr),e.get_exception_ptr()},tt=0,Jr=()=>{P(0,0);var t=At.pop();Ke(t.excPtr),tt=0};function Lt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,Y[this.ptr+12>>0]=e},this.get_caught=function(){return Y[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,Y[this.ptr+13>>0]=e},this.get_rethrown=function(){return Y[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=rr(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var Kr=t=>{throw tt||(tt=t),tt},Yt=t=>{var e=tt;if(!e)return _t(0),0;var r=new Lt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return _t(0),e;for(var a in t){var o=t[a];if(o===0||o===n)break;var s=r.ptr+16;if(er(o,n,s))return _t(o),e}return _t(n),e},tn=()=>Yt([]),en=t=>Yt([t]),rn=(t,e)=>Yt([t,e]),nn=()=>{var t=At.pop();t||Et("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(At.push(t),t.set_rethrown(!0),t.set_caught(!1),Dt++),tt=e,tt},an=(t,e,r)=>{var n=new Lt(t);throw n.init(e,r),tt=t,Dt++,tt},on=()=>Dt,Ot={},zt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Nt(t){return this.fromWireType(H[t>>2])}var ft={},it={},Ft={},xe,xt=t=>{throw new xe(t)},st=(t,e,r)=>{t.forEach(function(u){Ft[u]=e});function n(u){var l=r(u);l.length!==t.length&&xt("Mismatched type converter count");for(var f=0;f{it.hasOwnProperty(u)?a[l]=it[u]:(o.push(u),ft.hasOwnProperty(u)||(ft[u]=[]),ft[u].push(()=>{a[l]=it[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)},sn=t=>{var e=Ot[t];delete Ot[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,o=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));st([t],o,s=>{var u={};return a.forEach((l,f)=>{var h=l.fieldName,v=s[f],y=l.getter,w=l.getterContext,E=s[f+a.length],F=l.setter,T=l.setterContext;u[h]={read:W=>v.fromWireType(y(w,W)),write:(W,d)=>{var m=[];F(T,W,E.toWireType(m,d)),zt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var h in u)f[h]=u[h].read(l);return n(l),f},toWireType:(l,f)=>{for(var h in u)if(!(h in f))throw new TypeError(`Missing field: "${h}"`);var v=r();for(h in u)u[h].write(v,f[h]);return l!==null&&l.push(n,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:n}]})},un=(t,e,r,n,a)=>{},cn=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);Se=t},Se,R=t=>{for(var e="",r=t;k[r];)e+=Se[k[r++]];return e},ht,C=t=>{throw new ht(t)};function ln(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),it.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(it[t]=e,delete Ft[t],ft.hasOwnProperty(t)){var a=ft[t];delete ft[t],a.forEach(o=>o())}}function Z(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return ln(t,e,r)}var J=8,dn=(t,e,r,n)=>{e=R(e),Z(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?r:n},argPackAdvance:J,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},fn=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Gt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Xt=!1,Me=t=>{},hn=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},je=t=>{t.count.value-=1;var e=t.count.value===0;e&&hn(t)},Ie=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=Ie(t,e,r.baseClass);return n===null?null:r.downcast(n)},Re={},pn=()=>Object.keys($t).length,mn=()=>{var t=[];for(var e in $t)$t.hasOwnProperty(e)&&t.push($t[e]);return t},gt=[],qt=()=>{for(;gt.length;){var t=gt.pop();t.$$.deleteScheduled=!1,t.delete()}},wt,vn=t=>{wt=t,gt.length&&wt&&wt(qt)},yn=()=>{c.getInheritedInstanceCount=pn,c.getLiveInheritedInstances=mn,c.flushPendingDeletes=qt,c.setDelayFunction=vn},$t={},gn=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},wn=(t,e)=>(e=gn(t,e),$t[e]),St=(t,e)=>{(!e.ptrType||!e.ptr)&&xt("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&xt("Both smartPtrType and smartPtr must be specified"),e.count={value:1},bt(Object.create(t,{$$:{value:e,writable:!0}}))};function $n(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=wn(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o=this.registeredClass.getActualType(e),s=Re[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=Ie(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:t}):St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var bt=t=>typeof FinalizationRegistry>"u"?(bt=e=>e,t):(Xt=new FinalizationRegistry(e=>{je(e.$$)}),bt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Xt.register(e,a,e)}return e},Me=e=>Xt.unregister(e),bt(t)),bn=()=>{Object.assign(Mt.prototype,{isAliasOf(t){if(!(this instanceof Mt)||!(t instanceof Mt))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Gt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=bt(Object.create(Object.getPrototypeOf(this),{$$:{value:fn(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),Me(this),je(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),gt.push(this),gt.length===1&&wt&&wt(qt),this.$$.deleteScheduled=!0,this}})};function Mt(){}var Ct=(t,e)=>Object.defineProperty(e,"name",{value:t}),We=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},Qt=(t,e,r)=>{c.hasOwnProperty(t)?((r===void 0||c[t].overloadTable!==void 0&&c[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),We(c,t,t),c.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),c[t].overloadTable[r]=e):(c[t]=e,r!==void 0&&(c[t].numArguments=r))},Cn=48,Tn=57,_n=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Cn&&e<=Tn?`_${t}`:t};function Pn(t,e,r,n,a,o,s,u){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Zt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function En(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function An(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Zt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,et.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function Dn(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function ke(t){return this.fromWireType(_[t>>2])}var On=()=>{Object.assign(jt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:J,readValueFromPointer:ke,deleteObject(t){t!==null&&t.delete()},fromWireType:$n})};function jt(t,e,r,n,a,o,s,u,l,f,h){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=h,!a&&e.baseClass===void 0?n?(this.toWireType=En,this.destructorFunction=null):(this.toWireType=Dn,this.destructorFunction=null):this.toWireType=An}var He=(t,e,r)=>{c.hasOwnProperty(t)||xt("Replacing nonexistant public symbol"),c[t].overloadTable!==void 0&&r!==void 0?c[t].overloadTable[r]=e:(c[t]=e,c[t].argCount=r)},Fn=(t,e,r)=>{var n=c["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},It=[],Be,A=t=>{var e=It[t];return e||(t>=It.length&&(It.length=t+1),It[t]=e=Be.get(t)),e},xn=(t,e,r)=>{if(t.includes("j"))return Fn(t,e,r);var n=A(e).apply(null,r);return n},Sn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),xn(t,e,r)}},q=(t,e)=>{t=R(t);function r(){return t.includes("j")?Sn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},Mn=(t,e)=>{var r=Ct(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Ue,Ve=t=>{var e=Je(t),r=R(e);return rt(e),r},Rt=(t,e)=>{var r=[],n={};function a(o){if(!n[o]&&!it[o]){if(Ft[o]){Ft[o].forEach(a);return}r.push(o),n[o]=!0}}throw e.forEach(a),new Ue(`${t}: `+r.map(Ve).join([", "]))},jn=(t,e,r,n,a,o,s,u,l,f,h,v,y)=>{h=R(h),o=q(a,o),u&&(u=q(s,u)),f&&(f=q(l,f)),y=q(v,y);var w=_n(h);Qt(w,function(){Rt(`Cannot construct ${h} due to unbound types`,[n])}),st([t,e,r],n?[n]:[],function(E){E=E[0];var F,T;n?(F=E.registeredClass,T=F.instancePrototype):T=Mt.prototype;var W=Ct(h,function(){if(Object.getPrototypeOf(this)!==d)throw new ht("Use 'new' to construct "+h);if(m.constructor_body===void 0)throw new ht(h+" has no accessible constructor");var ir=m.constructor_body[arguments.length];if(ir===void 0)throw new ht(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return ir.apply(this,arguments)}),d=Object.create(T,{constructor:{value:W}});W.prototype=d;var m=new Pn(h,W,d,y,F,o,u,f);if(m.baseClass){var x,j;(j=(x=m.baseClass).__derivedClasses)!==null&&j!==void 0||(x.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var pt=new jt(h,m,!0,!1,!1),Ht=new jt(h+"*",m,!1,!1,!1),or=new jt(h+" const*",m,!1,!0,!1);return Re[t]={pointerType:Ht,constPointerType:or},He(w,W),[pt,Ht,or]})},Jt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function In(t){for(var e=1;e{var s=Jt(e,r);a=q(n,a),st([],[t],function(u){u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new ht(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{Rt(`Cannot construct ${u.name} due to unbound types`,s)},st([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[e-1]=Kt(l,f,null,a,o),[])),[]})},Le=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},Wn=(t,e,r,n,a,o,s,u,l)=>{var f=Jt(r,n);e=R(e),e=Le(e),o=q(a,o),st([],[t],function(h){h=h[0];var v=`${h.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&h.registeredClass.pureVirtualFunctions.push(e);function y(){Rt(`Cannot call ${v} due to unbound types`,f)}var w=h.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==h.name&&E.argCount===r-2?(y.argCount=r-2,y.className=h.name,w[e]=y):(We(w,e,v),w[e].overloadTable[r-2]=y),st([],f,function(F){var T=Kt(v,F,h,o,s);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function kn(){Object.assign(Ye.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function Ye(){this.allocated=[void 0],this.freelist=[]}var X=new Ye,te=t=>{t>=X.reserved&&--X.get(t).refcount===0&&X.free(t)},Hn=()=>{for(var t=0,e=X.reserved;e{X.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),X.reserved=X.allocated.length,c.count_emval_handles=Hn},et={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),X.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return X.allocate({refcount:1,value:t})}}},Un=(t,e)=>{e=R(e),Z(t,{name:e,fromWireType:r=>{var n=et.toValue(r);return te(r),n},toWireType:(r,n)=>et.toHandle(n),argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:null})},Vn=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(Y[n>>0])}:function(n){return this.fromWireType(k[n>>0])};case 2:return r?function(n){return this.fromWireType(lt[n>>1])}:function(n){return this.fromWireType(vt[n>>1])};case 4:return r?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Ln=(t,e,r,n)=>{e=R(e);function a(){}a.values={},Z(t,{name:e,constructor:a,fromWireType:function(o){return this.constructor.values[o]},toWireType:(o,s)=>s.value,argPackAdvance:J,readValueFromPointer:Vn(e,r,n),destructorFunction:null}),Qt(e,a)},ee=(t,e)=>{var r=it[t];return r===void 0&&C(e+" has unknown type "+Ve(t)),r},Yn=(t,e,r)=>{var n=ee(t,"enum");e=R(e);var a=n.constructor,o=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:Ct(`${n.name}_${e}`,function(){})}});a.values[r]=o,a[e]=o},re=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},zn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(Ce[r>>2])};case 8:return function(r){return this.fromWireType(Te[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},Nn=(t,e,r)=>{e=R(e),Z(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:J,readValueFromPointer:zn(e,r),destructorFunction:null})},Gn=(t,e,r,n,a,o,s)=>{var u=Jt(e,r);t=R(t),t=Le(t),a=q(n,a),Qt(t,function(){Rt(`Cannot call ${t} due to unbound types`,u)},e-1),st([],u,function(l){var f=[l[0],null].concat(l.slice(1));return He(t,Kt(t,f,null,a,o),e-1),[]})},Xn=(t,e,r)=>{switch(e){case 1:return r?n=>Y[n>>0]:n=>k[n>>0];case 2:return r?n=>lt[n>>1]:n=>vt[n>>1];case 4:return r?n=>H[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},qn=(t,e,r,n,a)=>{e=R(e);var o=h=>h;if(n===0){var s=32-8*r;o=h=>h<>>s}var u=e.includes("unsigned"),l=(h,v)=>{},f;u?f=function(h,v){return l(v,this.name),v>>>0}:f=function(h,v){return l(v,this.name),v},Z(t,{name:e,fromWireType:o,toWireType:f,argPackAdvance:J,readValueFromPointer:Xn(e,r,n!==0),destructorFunction:null})},Qn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function o(s){var u=_[s>>2],l=_[s+4>>2];return new a(Y.buffer,l,u)}r=R(r),Z(t,{name:r,fromWireType:o,argPackAdvance:J,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},ze=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,o=r+n-1,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(r>=o)break;e[r++]=u}else if(u<=2047){if(r+1>=o)break;e[r++]=192|u>>6,e[r++]=128|u&63}else if(u<=65535){if(r+2>=o)break;e[r++]=224|u>>12,e[r++]=128|u>>6&63,e[r++]=128|u&63}else{if(r+3>=o)break;e[r++]=240|u>>18,e[r++]=128|u>>12&63,e[r++]=128|u>>6&63,e[r++]=128|u&63}}return e[r]=0,r-a},Zn=(t,e,r)=>ze(t,k,e,r),Ne=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},Ge=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Jn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&Ge)return Ge.decode(t.subarray(e,a));for(var o="";e>10,56320|f&1023)}}return o},ne=(t,e)=>t?Jn(k,t,e):"",Kn=(t,e)=>{e=R(e);var r=e==="std::string";Z(t,{name:e,fromWireType(n){var a=_[n>>2],o=n+4,s;if(r)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||k[f]==0){var h=f-u,v=ne(u,h);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var y=new Array(a),l=0;l>2]=o,r&&s)Zn(a,l,o+1);else if(s)for(var f=0;f255&&(rt(l),C("String has UTF-16 code units that do not fit in 8 bits")),k[l+f]=h}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&vt[n];)++n;if(r=n<<1,r-t>32&&Xe)return Xe.decode(k.subarray(t,r));for(var o="",s=0;!(s>=e/2);++s){var u=lt[t+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},ea=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,o=r>1]=u,e+=2}return lt[e>>1]=0,e-a},ra=t=>t.length*2,na=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=H[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},aa=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,o=a+r-4,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(H[e>>2]=u,e+=4,e+4>o)break}return H[e>>2]=0,e-a},oa=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},ia=(t,e,r)=>{r=R(r);var n,a,o,s,u;e===2?(n=ta,a=ea,s=ra,o=()=>vt,u=1):e===4&&(n=na,a=aa,s=oa,o=()=>_,u=2),Z(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],h=o(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||h[E>>u]==0){var F=E-y,T=n(y,F);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return rt(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var h=s(f),v=ie(4+h+e);return _[v>>2]=h>>u,a(f,v+4,h+e),l!==null&&l.push(rt,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction(l){rt(l)}})},sa=(t,e,r,n,a,o)=>{Ot[t]={name:R(e),rawConstructor:q(r,n),rawDestructor:q(a,o),fields:[]}},ua=(t,e,r,n,a,o,s,u,l,f)=>{Ot[t].fields.push({fieldName:R(e),getterReturnType:r,getter:q(n,a),getterContext:o,setterArgumentType:s,setter:q(u,l),setterContext:f})},ca=(t,e)=>{e=R(e),Z(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},ae=[],la=(t,e,r,n)=>(t=ae[t],e=et.toValue(e),t(null,e,r,n)),da={},fa=t=>{var e=da[t];return e===void 0?R(t):e},qe=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},ha=t=>t===0?et.toHandle(qe()):(t=fa(t),et.toHandle(qe()[t])),pa=t=>{var e=ae.length;return ae.push(t),e},ma=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},va=Reflect.construct,ya=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=et.toHandle(n)),a},ga=(t,e,r)=>{var n=ma(t,e),a=n.shift();t--;var o=new Array(t),s=(l,f,h,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return pa(Ct(u,s))},wa=t=>{t>4&&(X.get(t).refcount+=1)},$a=t=>{var e=et.toValue(t);zt(e),te(t)},ba=(t,e)=>{t=ee(t,"_emval_take_value");var r=t.readValueFromPointer(e);return et.toHandle(r)},Ca=()=>{Et("")},Ta=(t,e,r)=>k.copyWithin(t,e,e+r),_a=()=>2147483648,Pa=t=>{var e=at.buffer,r=(t-e.byteLength+65535)/65536;try{return at.grow(r),_e(),1}catch{}},Ea=t=>{var e=k.length;t>>>=0;var r=_a();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,t+100663296);var s=Math.min(r,n(Math.max(t,o),65536)),u=Pa(s);if(u)return!0}return!1},oe={},Aa=()=>U||"./this.program",Tt=()=>{if(!Tt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Aa()};for(var r in oe)oe[r]===void 0?delete e[r]:e[r]=oe[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);Tt.strings=n}return Tt.strings},Da=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);Y[e>>0]=0},Oa=(t,e)=>{var r=0;return Tt().forEach((n,a)=>{var o=e+r;_[t+a*4>>2]=o,Da(n,o),r+=n.length+1}),0},Fa=(t,e)=>{var r=Tt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},xa=t=>t,Wt=t=>t%4===0&&(t%100!==0||t%400===0),Sa=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Qe=[31,29,31,30,31,30,31,31,30,31,30,31],Ze=[31,28,31,30,31,30,31,31,30,31,30,31],Ma=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=Wt(r.getFullYear()),a=r.getMonth(),o=(n?Qe:Ze)[a];if(e>o-r.getDate())e-=o-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function ja(t,e,r){var n=r>0?r:Ne(t)+1,a=new Array(n),o=ze(t,a,0,a.length);return e&&(a.length=o),a}var Ia=(t,e)=>{Y.set(t,e)},Ra=(t,e,r,n)=>{var a=_[n+40>>2],o={tm_sec:H[n>>2],tm_min:H[n+4>>2],tm_hour:H[n+8>>2],tm_mday:H[n+12>>2],tm_mon:H[n+16>>2],tm_year:H[n+20>>2],tm_wday:H[n+24>>2],tm_yday:H[n+28>>2],tm_isdst:H[n+32>>2],tm_gmtoff:H[n+36>>2],tm_zone:a?ne(a):""},s=ne(r),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in u)s=s.replace(new RegExp(l,"g"),u[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,x){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=x(d.getFullYear()-m.getFullYear()))===0&&(j=x(d.getMonth()-m.getMonth()))===0&&(j=x(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function F(d){var m=Ma(new Date(d.tm_year+1900,0,1),d.tm_yday),x=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),pt=E(x),Ht=E(j);return w(pt,m)<=0?w(Ht,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>h[d.tm_mon].substring(0,3),"%B":d=>h[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>F(d).toString().substring(2),"%G":d=>F(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+Sa(Wt(d.tm_year+1900)?Qe:Ze,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var x=(d.tm_wday+371-d.tm_yday)%7;x!=4&&(x!=3||!Wt(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&Wt(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,x=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(x?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var l in T)s.includes(l)&&(s=s.replace(new RegExp(l,"g"),T[l](o)));s=s.replace(/\0\0/g,"%");var W=ja(s,!1);return W.length>e?0:(Ia(W,t),W.length-1)},Wa=(t,e,r,n,a)=>Ra(t,e,r,n);xe=c.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},cn(),ht=c.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},bn(),yn(),On(),Ue=c.UnboundTypeError=Mn(Error,"UnboundTypeError"),kn(),Bn();var ka={s:Zr,u:Jr,b:tn,g:en,q:rn,J:nn,f:an,V:on,d:Kr,da:sn,Q:un,_:dn,ca:jn,ba:Rn,w:Wn,Y:Un,x:Ln,h:Yn,L:Nn,M:Gn,t:qn,o:Qn,K:Kn,C:ia,A:sa,ea:ua,$:ca,R:la,ha:te,fa:ha,Z:ga,N:wa,O:$a,aa:ba,B:Ca,X:Ta,W:Ea,T:Oa,U:Fa,E:to,D:La,F:Ka,n:eo,a:Ha,e:za,m:Va,k:Ga,H:Za,v:qa,G:Ja,z:no,P:oo,l:Na,j:Ya,c:Ua,p:Ba,I:Qa,r:ro,i:Xa,y:ao,ga:xa,S:Wa},M=Qr(),rt=c._free=t=>(rt=c._free=M.ka)(t),ie=c._malloc=t=>(ie=c._malloc=M.la)(t),Je=t=>(Je=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),_t=t=>(_t=M.pa)(t),D=()=>(D=M.qa)(),O=t=>(O=M.ra)(t),Ke=t=>(Ke=M.sa)(t),tr=t=>(tr=M.ta)(t),er=(t,e,r)=>(er=M.ua)(t,e,r),rr=t=>(rr=M.va)(t);c.dynCall_viijii=(t,e,r,n,a,o,s)=>(c.dynCall_viijii=M.wa)(t,e,r,n,a,o,s);var nr=c.dynCall_jiiii=(t,e,r,n,a)=>(nr=c.dynCall_jiiii=M.xa)(t,e,r,n,a);c.dynCall_iiiiij=(t,e,r,n,a,o,s)=>(c.dynCall_iiiiij=M.ya)(t,e,r,n,a,o,s),c.dynCall_iiiiijj=(t,e,r,n,a,o,s,u,l)=>(c.dynCall_iiiiijj=M.za)(t,e,r,n,a,o,s,u,l),c.dynCall_iiiiiijj=(t,e,r,n,a,o,s,u,l,f)=>(c.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,o,s,u,l,f);function Ha(t,e){var r=D();try{return A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Ba(t,e,r,n){var a=D();try{A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Ua(t,e,r){var n=D();try{A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Va(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function La(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Ya(t,e){var r=D();try{A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function za(t,e,r){var n=D();try{return A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Na(t){var e=D();try{A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function Ga(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Xa(t,e,r,n,a,o,s,u,l,f,h){var v=D();try{A(t)(e,r,n,a,o,s,u,l,f,h)}catch(y){if(O(v),y!==y+0)throw y;P(1,0)}}function qa(t,e,r,n,a,o,s){var u=D();try{return A(t)(e,r,n,a,o,s)}catch(l){if(O(u),l!==l+0)throw l;P(1,0)}}function Qa(t,e,r,n,a){var o=D();try{A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Za(t,e,r,n,a,o){var s=D();try{return A(t)(e,r,n,a,o)}catch(u){if(O(s),u!==u+0)throw u;P(1,0)}}function Ja(t,e,r,n,a,o,s,u){var l=D();try{return A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function Ka(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function to(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function eo(t){var e=D();try{return A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function ro(t,e,r,n,a,o,s,u){var l=D();try{A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function no(t,e,r,n,a,o,s,u,l,f,h,v){var y=D();try{return A(t)(e,r,n,a,o,s,u,l,f,h,v)}catch(w){if(O(y),w!==w+0)throw w;P(1,0)}}function ao(t,e,r,n,a,o,s,u,l,f,h,v,y,w,E,F){var T=D();try{A(t)(e,r,n,a,o,s,u,l,f,h,v,y,w,E,F)}catch(W){if(O(T),W!==W+0)throw W;P(1,0)}}function oo(t,e,r,n,a){var o=D();try{return nr(t,e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}var kt;yt=function t(){kt||ar(),kt||(yt=t)};function ar(){if(ot>0||(Hr(),ot>0))return;function t(){kt||(kt=!0,c.calledRun=!0,!mt&&(Br(),$(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Ur()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),t()},1)):t()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return ar(),p.ready}})();function jr(i){return Ut(Pt,i)}function Ir(i){return xr(Pt,i)}async function Rr(i,p){return Sr(Pt,i,p)}async function Wr(i,p){return Mr(Pt,i,p)}class kr extends EventTarget{constructor(c={}){var $;super();ur(this,ct,void 0);try{const g=($=c==null?void 0:c.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!nt.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),cr(this,ct,g!=null?g:[]),jr().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw ye(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return z.filter(c=>c!=="unknown")}async detect(c){try{const $=await vr(c);if($===null)return[];let g;try{me($)?g=await Rr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))}):g=await Wr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:U,y:N},topRight:{x:V,y:S},bottomLeft:{x:G,y:Q},bottomRight:{x:L,y:K}}=b.position,at=Math.min(U,V,G,L),mt=Math.min(N,S,Q,K),Y=Math.max(U,V,G,L),k=Math.max(N,S,Q,K);return{boundingBox:new DOMRectReadOnly(at,mt,Y-at,k-mt),rawValue:b.text,format:lr(b.format),cornerPoints:[{x:U,y:N},{x:V,y:S},{x:L,y:K},{x:G,y:Q}]}})}catch($){throw ye($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}return ct=new WeakMap,I.BarcodeDetector=kr,I.setZXingModuleOverrides=Ir,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),I}({}); diff --git a/node_modules/barcode-detector/dist/iife/side-effects.js b/node_modules/barcode-detector/dist/iife/side-effects.js new file mode 100644 index 0000000..7950a67 --- /dev/null +++ b/node_modules/barcode-detector/dist/iife/side-effects.js @@ -0,0 +1,3 @@ +var BarcodeDetectionAPI=function(W){"use strict";var ur=(W,B,z)=>{if(!B.has(W))throw TypeError("Cannot "+z)};var se=(W,B,z)=>(ur(W,B,"read from private field"),z?z.call(W):B.get(W)),cr=(W,B,z)=>{if(B.has(W))throw TypeError("Cannot add the same private member more than once");B instanceof WeakSet?B.add(W):B.set(W,z)},lr=(W,B,z,nt)=>(ur(W,B,"write to private field"),nt?nt.call(W,z):B.set(W,z),z);var ct,Ce;const B=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],z=[...B,["unknown"]].map(i=>i[0]),nt=new Map(B);function dr(i){for(const[p,c]of nt)if(i===c)return p;return"unknown"}function fr(i){if(ue(i))return{width:i.naturalWidth,height:i.naturalHeight};if(ce(i))return{width:i.width.baseVal.value,height:i.height.baseVal.value};if(le(i))return{width:i.videoWidth,height:i.videoHeight};if(fe(i))return{width:i.width,height:i.height};if(pe(i))return{width:i.displayWidth,height:i.displayHeight};if(de(i))return{width:i.width,height:i.height};if(he(i))return{width:i.width,height:i.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function ue(i){try{return i instanceof HTMLImageElement}catch{return!1}}function ce(i){try{return i instanceof SVGImageElement}catch{return!1}}function le(i){try{return i instanceof HTMLVideoElement}catch{return!1}}function de(i){try{return i instanceof HTMLCanvasElement}catch{return!1}}function fe(i){try{return i instanceof ImageBitmap}catch{return!1}}function he(i){try{return i instanceof OffscreenCanvas}catch{return!1}}function pe(i){try{return i instanceof VideoFrame}catch{return!1}}function me(i){try{return i instanceof Blob}catch{return!1}}function hr(i){try{return i instanceof ImageData}catch{return!1}}function pr(i,p){try{const c=new OffscreenCanvas(i,p);if(c.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return c;throw void 0}catch{const c=document.createElement("canvas");return c.width=i,c.height=p,c}}async function ve(i){if(ue(i)&&!await gr(i))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(ce(i)&&!await wr(i))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(pe(i)&&$r(i))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(le(i)&&(i.readyState===0||i.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(fe(i)&&Cr(i))throw new DOMException("The image source is detached.","InvalidStateError");const{width:p,height:c}=fr(i);if(p===0||c===0)return null;const g=pr(p,c).getContext("2d");g.drawImage(i,0,0);try{return g.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function mr(i){let p;try{if(globalThis.createImageBitmap)p=await createImageBitmap(i);else if(globalThis.Image){p=new Image;let $="";try{$=URL.createObjectURL(i),p.src=$,await p.decode()}finally{URL.revokeObjectURL($)}}else return i}catch{throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await ve(p)}function vr(i){const{width:p,height:c}=i;if(p===0||c===0)return null;const $=i.getContext("2d");try{return $.getImageData(0,0,p,c)}catch{throw new DOMException("Source would taint origin.","SecurityError")}}async function yr(i){if(me(i))return await mr(i);if(hr(i)){if(br(i))throw new DOMException("The image data has been detached.","InvalidStateError");return i}return de(i)||he(i)?vr(i):await ve(i)}async function gr(i){try{return await i.decode(),!0}catch{return!1}}async function wr(i){var p;try{return await((p=i.decode)==null?void 0:p.call(i)),!0}catch{return!1}}function $r(i){return i.format===null}function br(i){return i.data.buffer.byteLength===0}function Cr(i){return i.width===0&&i.height===0}function ye(i,p){return i instanceof DOMException?new DOMException(`${p}: ${i.message}`,i.name):i instanceof Error?new i.constructor(`${p}: ${i.message}`):new Error(`${p}: ${i}`)}const ge=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Tr(i){return i.join("|")}function _r(i){const p=we(i);let c=0,$=ge.length-1;for(;c<=$;){const g=Math.floor((c+$)/2),b=ge[g],U=we(b);if(U===p)return b;U{const c=i.match(/_(.+?)\.wasm$/);return c?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${c[1]}/${i}`:p+i}};let Bt=new WeakMap;function Ut(i,p){var c;const $=Bt.get(i);if($!=null&&$.modulePromise&&(p===void 0||Object.is(p,$.moduleOverrides)))return $.modulePromise;const g=(c=p!=null?p:$==null?void 0:$.moduleOverrides)!=null?c:xr,b=i({...g});return Bt.set(i,{moduleOverrides:g,modulePromise:b}),b}function Sr(i,p){Bt.set(i,{moduleOverrides:p})}async function Mr(i,p,c=ut){const $={...ut,...c},g=await Ut(i),{size:b}=p,U=new Uint8Array(await p.arrayBuffer()),N=g._malloc(b);g.HEAPU8.set(U,N);const V=g.readBarcodesFromImage(N,b,$e(g,$));g._free(N);const S=[];for(let G=0;G{var i=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var c=p,$,g;c.ready=new Promise((t,e)=>{$=t,g=e});var b=Object.assign({},c),U="./this.program",N=typeof window=="object",V=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var S="";function G(t){return c.locateFile?c.locateFile(t,S):S+t}var Q;(N||V)&&(V?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),i&&(S=i),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",V&&(Q=t=>{var e=new XMLHttpRequest;return e.open("GET",t,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),c.print||console.log.bind(console);var L=c.printErr||console.error.bind(console);Object.assign(c,b),b=null,c.arguments&&c.arguments,c.thisProgram&&(U=c.thisProgram),c.quit&&c.quit;var K;c.wasmBinary&&(K=c.wasmBinary),typeof WebAssembly!="object"&&Et("no native wasm support detected");var at,mt=!1,Y,k,lt,vt,H,_,Te,_e;function Pe(){var t=at.buffer;c.HEAP8=Y=new Int8Array(t),c.HEAP16=lt=new Int16Array(t),c.HEAPU8=k=new Uint8Array(t),c.HEAPU16=vt=new Uint16Array(t),c.HEAP32=H=new Int32Array(t),c.HEAPU32=_=new Uint32Array(t),c.HEAPF32=Te=new Float32Array(t),c.HEAPF64=_e=new Float64Array(t)}var Ee=[],Ae=[],De=[];function Br(){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Lr(c.preRun.shift());Vt(Ee)}function Ur(){Vt(Ae)}function Vr(){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)zr(c.postRun.shift());Vt(De)}function Lr(t){Ee.unshift(t)}function Yr(t){Ae.unshift(t)}function zr(t){De.unshift(t)}var ot=0,yt=null;function Nr(t){var e;ot++,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot)}function Gr(t){var e;if(ot--,(e=c.monitorRunDependencies)===null||e===void 0||e.call(c,ot),ot==0&&yt){var r=yt;yt=null,r()}}function Et(t){var e;(e=c.onAbort)===null||e===void 0||e.call(c,t),t="Aborted("+t+")",L(t),mt=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw g(r),r}var Xr="data:application/octet-stream;base64,",Oe=t=>t.startsWith(Xr),dt;dt="zxing_reader.wasm",Oe(dt)||(dt=G(dt));function Fe(t){if(t==dt&&K)return new Uint8Array(K);if(Q)return Q(t);throw"both async and sync fetching of the wasm failed"}function qr(t){return!K&&(N||V)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+t+"'";return e.arrayBuffer()}).catch(()=>Fe(t)):Promise.resolve().then(()=>Fe(t))}function xe(t,e,r){return qr(t).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(r,n=>{L(`failed to asynchronously prepare wasm: ${n}`),Et(n)})}function Qr(t,e,r,n){return!t&&typeof WebAssembly.instantiateStreaming=="function"&&!Oe(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var o=WebAssembly.instantiateStreaming(a,r);return o.then(n,function(s){return L(`wasm streaming compile failed: ${s}`),L("falling back to ArrayBuffer instantiation"),xe(e,r,n)})}):xe(e,r,n)}function Zr(){var t={a:Ha};function e(n,a){return M=n.exports,at=M.ia,Pe(),Ue=M.ma,Yr(M.ja),Gr(),M}Nr();function r(n){e(n.instance)}if(c.instantiateWasm)try{return c.instantiateWasm(t,e)}catch(n){L(`Module.instantiateWasm callback failed with error: ${n}`),g(n)}return Qr(K,dt,t,r).catch(g),{}}var Vt=t=>{for(;t.length>0;)t.shift()(c)};c.noExitRuntime;var At=[],Dt=0,Jr=t=>{var e=new Lt(t);return e.get_caught()||(e.set_caught(!0),Dt--),e.set_rethrown(!1),At.push(e),er(e.excPtr),e.get_exception_ptr()},tt=0,Kr=()=>{P(0,0);var t=At.pop();tr(t.excPtr),tt=0};function Lt(t){this.excPtr=t,this.ptr=t-24,this.set_type=function(e){_[this.ptr+4>>2]=e},this.get_type=function(){return _[this.ptr+4>>2]},this.set_destructor=function(e){_[this.ptr+8>>2]=e},this.get_destructor=function(){return _[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,Y[this.ptr+12>>0]=e},this.get_caught=function(){return Y[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,Y[this.ptr+13>>0]=e},this.get_rethrown=function(){return Y[this.ptr+13>>0]!=0},this.init=function(e,r){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(r)},this.set_adjusted_ptr=function(e){_[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return _[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=nr(this.get_type());if(e)return _[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}var tn=t=>{throw tt||(tt=t),tt},Yt=t=>{var e=tt;if(!e)return _t(0),0;var r=new Lt(e);r.set_adjusted_ptr(e);var n=r.get_type();if(!n)return _t(0),e;for(var a in t){var o=t[a];if(o===0||o===n)break;var s=r.ptr+16;if(rr(o,n,s))return _t(o),e}return _t(n),e},en=()=>Yt([]),rn=t=>Yt([t]),nn=(t,e)=>Yt([t,e]),an=()=>{var t=At.pop();t||Et("no exception to throw");var e=t.excPtr;throw t.get_rethrown()||(At.push(t),t.set_rethrown(!0),t.set_caught(!1),Dt++),tt=e,tt},on=(t,e,r)=>{var n=new Lt(t);throw n.init(e,r),tt=t,Dt++,tt},sn=()=>Dt,Ot={},zt=t=>{for(;t.length;){var e=t.pop(),r=t.pop();r(e)}};function Nt(t){return this.fromWireType(H[t>>2])}var ft={},it={},Ft={},Se,xt=t=>{throw new Se(t)},st=(t,e,r)=>{t.forEach(function(u){Ft[u]=e});function n(u){var l=r(u);l.length!==t.length&&xt("Mismatched type converter count");for(var f=0;f{it.hasOwnProperty(u)?a[l]=it[u]:(o.push(u),ft.hasOwnProperty(u)||(ft[u]=[]),ft[u].push(()=>{a[l]=it[u],++s,s===o.length&&n(a)}))}),o.length===0&&n(a)},un=t=>{var e=Ot[t];delete Ot[t];var r=e.rawConstructor,n=e.rawDestructor,a=e.fields,o=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));st([t],o,s=>{var u={};return a.forEach((l,f)=>{var h=l.fieldName,v=s[f],y=l.getter,w=l.getterContext,E=s[f+a.length],F=l.setter,T=l.setterContext;u[h]={read:R=>v.fromWireType(y(w,R)),write:(R,d)=>{var m=[];F(T,R,E.toWireType(m,d)),zt(m)}}}),[{name:e.name,fromWireType:l=>{var f={};for(var h in u)f[h]=u[h].read(l);return n(l),f},toWireType:(l,f)=>{for(var h in u)if(!(h in f))throw new TypeError(`Missing field: "${h}"`);var v=r();for(h in u)u[h].write(v,f[h]);return l!==null&&l.push(n,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:n}]})},cn=(t,e,r,n,a)=>{},ln=()=>{for(var t=new Array(256),e=0;e<256;++e)t[e]=String.fromCharCode(e);Me=t},Me,I=t=>{for(var e="",r=t;k[r];)e+=Me[k[r++]];return e},ht,C=t=>{throw new ht(t)};function dn(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(t||C(`type "${n}" must have a positive integer typeid pointer`),it.hasOwnProperty(t)){if(r.ignoreDuplicateRegistrations)return;C(`Cannot register type '${n}' twice`)}if(it[t]=e,delete Ft[t],ft.hasOwnProperty(t)){var a=ft[t];delete ft[t],a.forEach(o=>o())}}function Z(t,e){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return dn(t,e,r)}var J=8,fn=(t,e,r,n)=>{e=I(e),Z(t,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,o){return o?r:n},argPackAdvance:J,readValueFromPointer:function(a){return this.fromWireType(k[a])},destructorFunction:null})},hn=t=>({count:t.count,deleteScheduled:t.deleteScheduled,preservePointerOnDelete:t.preservePointerOnDelete,ptr:t.ptr,ptrType:t.ptrType,smartPtr:t.smartPtr,smartPtrType:t.smartPtrType}),Gt=t=>{function e(r){return r.$$.ptrType.registeredClass.name}C(e(t)+" instance already deleted")},Xt=!1,je=t=>{},pn=t=>{t.smartPtr?t.smartPtrType.rawDestructor(t.smartPtr):t.ptrType.registeredClass.rawDestructor(t.ptr)},Ie=t=>{t.count.value-=1;var e=t.count.value===0;e&&pn(t)},Re=(t,e,r)=>{if(e===r)return t;if(r.baseClass===void 0)return null;var n=Re(t,e,r.baseClass);return n===null?null:r.downcast(n)},We={},mn=()=>Object.keys($t).length,vn=()=>{var t=[];for(var e in $t)$t.hasOwnProperty(e)&&t.push($t[e]);return t},gt=[],qt=()=>{for(;gt.length;){var t=gt.pop();t.$$.deleteScheduled=!1,t.delete()}},wt,yn=t=>{wt=t,gt.length&&wt&&wt(qt)},gn=()=>{c.getInheritedInstanceCount=mn,c.getLiveInheritedInstances=vn,c.flushPendingDeletes=qt,c.setDelayFunction=yn},$t={},wn=(t,e)=>{for(e===void 0&&C("ptr should not be undefined");t.baseClass;)e=t.upcast(e),t=t.baseClass;return e},$n=(t,e)=>(e=wn(t,e),$t[e]),St=(t,e)=>{(!e.ptrType||!e.ptr)&&xt("makeClassHandle requires ptr and ptrType");var r=!!e.smartPtrType,n=!!e.smartPtr;return r!==n&&xt("Both smartPtrType and smartPtr must be specified"),e.count={value:1},bt(Object.create(t,{$$:{value:e,writable:!0}}))};function bn(t){var e=this.getPointee(t);if(!e)return this.destructor(t),null;var r=$n(this.registeredClass,e);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=e,r.$$.smartPtr=t,r.clone();var n=r.clone();return this.destructor(t),n}function a(){return this.isSmartPointer?St(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:t}):St(this.registeredClass.instancePrototype,{ptrType:this,ptr:t})}var o=this.registeredClass.getActualType(e),s=We[o];if(!s)return a.call(this);var u;this.isConst?u=s.constPointerType:u=s.pointerType;var l=Re(e,this.registeredClass,u.registeredClass);return l===null?a.call(this):this.isSmartPointer?St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l,smartPtrType:this,smartPtr:t}):St(u.registeredClass.instancePrototype,{ptrType:u,ptr:l})}var bt=t=>typeof FinalizationRegistry>"u"?(bt=e=>e,t):(Xt=new FinalizationRegistry(e=>{Ie(e.$$)}),bt=e=>{var r=e.$$,n=!!r.smartPtr;if(n){var a={$$:r};Xt.register(e,a,e)}return e},je=e=>Xt.unregister(e),bt(t)),Cn=()=>{Object.assign(Mt.prototype,{isAliasOf(t){if(!(this instanceof Mt)||!(t instanceof Mt))return!1;var e=this.$$.ptrType.registeredClass,r=this.$$.ptr;t.$$=t.$$;for(var n=t.$$.ptrType.registeredClass,a=t.$$.ptr;e.baseClass;)r=e.upcast(r),e=e.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return e===n&&r===a},clone(){if(this.$$.ptr||Gt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var t=bt(Object.create(Object.getPrototypeOf(this),{$$:{value:hn(this.$$)}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t},delete(){this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),je(this),Ie(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Gt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&C("Object already scheduled for deletion"),gt.push(this),gt.length===1&&wt&&wt(qt),this.$$.deleteScheduled=!0,this}})};function Mt(){}var Ct=(t,e)=>Object.defineProperty(e,"name",{value:t}),ke=(t,e,r)=>{if(t[e].overloadTable===void 0){var n=t[e];t[e]=function(){return t[e].overloadTable.hasOwnProperty(arguments.length)||C(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${t[e].overloadTable})!`),t[e].overloadTable[arguments.length].apply(this,arguments)},t[e].overloadTable=[],t[e].overloadTable[n.argCount]=n}},Qt=(t,e,r)=>{c.hasOwnProperty(t)?((r===void 0||c[t].overloadTable!==void 0&&c[t].overloadTable[r]!==void 0)&&C(`Cannot register public name '${t}' twice`),ke(c,t,t),c.hasOwnProperty(r)&&C(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),c[t].overloadTable[r]=e):(c[t]=e,r!==void 0&&(c[t].numArguments=r))},Tn=48,_n=57,Pn=t=>{if(t===void 0)return"_unknown";t=t.replace(/[^a-zA-Z0-9_]/g,"$");var e=t.charCodeAt(0);return e>=Tn&&e<=_n?`_${t}`:t};function En(t,e,r,n,a,o,s,u){this.name=t,this.constructor=e,this.instancePrototype=r,this.rawDestructor=n,this.baseClass=a,this.getActualType=o,this.upcast=s,this.downcast=u,this.pureVirtualFunctions=[]}var Zt=(t,e,r)=>{for(;e!==r;)e.upcast||C(`Expected null or instance of ${r.name}, got an instance of ${e.name}`),t=e.upcast(t),e=e.baseClass;return t};function An(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function Dn(t,e){var r;if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),t!==null&&t.push(this.rawDestructor,r),r):0;(!e||!e.$$)&&C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);var n=e.$$.ptrType.registeredClass;if(r=Zt(e.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&C("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?r=e.$$.smartPtr:C(`Cannot convert argument of type ${e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)r=e.$$.smartPtr;else{var a=e.clone();r=this.rawShare(r,et.toHandle(()=>a.delete())),t!==null&&t.push(this.rawDestructor,r)}break;default:C("Unsupporting sharing policy")}return r}function On(t,e){if(e===null)return this.isReference&&C(`null is not a valid ${this.name}`),0;e.$$||C(`Cannot pass "${re(e)}" as a ${this.name}`),e.$$.ptr||C(`Cannot pass deleted object as a pointer of type ${this.name}`),e.$$.ptrType.isConst&&C(`Cannot convert argument of type ${e.$$.ptrType.name} to parameter type ${this.name}`);var r=e.$$.ptrType.registeredClass,n=Zt(e.$$.ptr,r,this.registeredClass);return n}function He(t){return this.fromWireType(_[t>>2])}var Fn=()=>{Object.assign(jt.prototype,{getPointee(t){return this.rawGetPointee&&(t=this.rawGetPointee(t)),t},destructor(t){var e;(e=this.rawDestructor)===null||e===void 0||e.call(this,t)},argPackAdvance:J,readValueFromPointer:He,deleteObject(t){t!==null&&t.delete()},fromWireType:bn})};function jt(t,e,r,n,a,o,s,u,l,f,h){this.name=t,this.registeredClass=e,this.isReference=r,this.isConst=n,this.isSmartPointer=a,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=u,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=h,!a&&e.baseClass===void 0?n?(this.toWireType=An,this.destructorFunction=null):(this.toWireType=On,this.destructorFunction=null):this.toWireType=Dn}var Be=(t,e,r)=>{c.hasOwnProperty(t)||xt("Replacing nonexistant public symbol"),c[t].overloadTable!==void 0&&r!==void 0?c[t].overloadTable[r]=e:(c[t]=e,c[t].argCount=r)},xn=(t,e,r)=>{var n=c["dynCall_"+t];return r&&r.length?n.apply(null,[e].concat(r)):n.call(null,e)},It=[],Ue,A=t=>{var e=It[t];return e||(t>=It.length&&(It.length=t+1),It[t]=e=Ue.get(t)),e},Sn=(t,e,r)=>{if(t.includes("j"))return xn(t,e,r);var n=A(e).apply(null,r);return n},Mn=(t,e)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Sn(t,e,r)}},q=(t,e)=>{t=I(t);function r(){return t.includes("j")?Mn(t,e):A(e)}var n=r();return typeof n!="function"&&C(`unknown function pointer with signature ${t}: ${e}`),n},jn=(t,e)=>{var r=Ct(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r},Ve,Le=t=>{var e=Ke(t),r=I(e);return rt(e),r},Rt=(t,e)=>{var r=[],n={};function a(o){if(!n[o]&&!it[o]){if(Ft[o]){Ft[o].forEach(a);return}r.push(o),n[o]=!0}}throw e.forEach(a),new Ve(`${t}: `+r.map(Le).join([", "]))},In=(t,e,r,n,a,o,s,u,l,f,h,v,y)=>{h=I(h),o=q(a,o),u&&(u=q(s,u)),f&&(f=q(l,f)),y=q(v,y);var w=Pn(h);Qt(w,function(){Rt(`Cannot construct ${h} due to unbound types`,[n])}),st([t,e,r],n?[n]:[],function(E){E=E[0];var F,T;n?(F=E.registeredClass,T=F.instancePrototype):T=Mt.prototype;var R=Ct(h,function(){if(Object.getPrototypeOf(this)!==d)throw new ht("Use 'new' to construct "+h);if(m.constructor_body===void 0)throw new ht(h+" has no accessible constructor");var sr=m.constructor_body[arguments.length];if(sr===void 0)throw new ht(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(m.constructor_body).toString()}) parameters instead!`);return sr.apply(this,arguments)}),d=Object.create(T,{constructor:{value:R}});R.prototype=d;var m=new En(h,R,d,y,F,o,u,f);if(m.baseClass){var x,j;(j=(x=m.baseClass).__derivedClasses)!==null&&j!==void 0||(x.__derivedClasses=[]),m.baseClass.__derivedClasses.push(m)}var pt=new jt(h,m,!0,!1,!1),Ht=new jt(h+"*",m,!1,!1,!1),ir=new jt(h+" const*",m,!1,!0,!1);return We[t]={pointerType:Ht,constPointerType:ir},Be(w,R),[pt,Ht,ir]})},Jt=(t,e)=>{for(var r=[],n=0;n>2]);return r};function Rn(t){for(var e=1;e{var s=Jt(e,r);a=q(n,a),st([],[t],function(u){u=u[0];var l=`constructor ${u.name}`;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[e-1]!==void 0)throw new ht(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.registeredClass.constructor_body[e-1]=()=>{Rt(`Cannot construct ${u.name} due to unbound types`,s)},st([],s,f=>(f.splice(1,0,null),u.registeredClass.constructor_body[e-1]=Kt(l,f,null,a,o),[])),[]})},Ye=t=>{t=t.trim();const e=t.indexOf("(");return e!==-1?t.substr(0,e):t},kn=(t,e,r,n,a,o,s,u,l)=>{var f=Jt(r,n);e=I(e),e=Ye(e),o=q(a,o),st([],[t],function(h){h=h[0];var v=`${h.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),u&&h.registeredClass.pureVirtualFunctions.push(e);function y(){Rt(`Cannot call ${v} due to unbound types`,f)}var w=h.registeredClass.instancePrototype,E=w[e];return E===void 0||E.overloadTable===void 0&&E.className!==h.name&&E.argCount===r-2?(y.argCount=r-2,y.className=h.name,w[e]=y):(ke(w,e,v),w[e].overloadTable[r-2]=y),st([],f,function(F){var T=Kt(v,F,h,o,s);return w[e].overloadTable===void 0?(T.argCount=r-2,w[e]=T):w[e].overloadTable[r-2]=T,[]}),[]})};function Hn(){Object.assign(ze.prototype,{get(t){return this.allocated[t]},has(t){return this.allocated[t]!==void 0},allocate(t){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=t,e},free(t){this.allocated[t]=void 0,this.freelist.push(t)}})}function ze(){this.allocated=[void 0],this.freelist=[]}var X=new ze,te=t=>{t>=X.reserved&&--X.get(t).refcount===0&&X.free(t)},Bn=()=>{for(var t=0,e=X.reserved;e{X.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),X.reserved=X.allocated.length,c.count_emval_handles=Bn},et={toValue:t=>(t||C("Cannot use deleted val. handle = "+t),X.get(t).value),toHandle:t=>{switch(t){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return X.allocate({refcount:1,value:t})}}},Vn=(t,e)=>{e=I(e),Z(t,{name:e,fromWireType:r=>{var n=et.toValue(r);return te(r),n},toWireType:(r,n)=>et.toHandle(n),argPackAdvance:J,readValueFromPointer:Nt,destructorFunction:null})},Ln=(t,e,r)=>{switch(e){case 1:return r?function(n){return this.fromWireType(Y[n>>0])}:function(n){return this.fromWireType(k[n>>0])};case 2:return r?function(n){return this.fromWireType(lt[n>>1])}:function(n){return this.fromWireType(vt[n>>1])};case 4:return r?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(_[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Yn=(t,e,r,n)=>{e=I(e);function a(){}a.values={},Z(t,{name:e,constructor:a,fromWireType:function(o){return this.constructor.values[o]},toWireType:(o,s)=>s.value,argPackAdvance:J,readValueFromPointer:Ln(e,r,n),destructorFunction:null}),Qt(e,a)},ee=(t,e)=>{var r=it[t];return r===void 0&&C(e+" has unknown type "+Le(t)),r},zn=(t,e,r)=>{var n=ee(t,"enum");e=I(e);var a=n.constructor,o=Object.create(n.constructor.prototype,{value:{value:r},constructor:{value:Ct(`${n.name}_${e}`,function(){})}});a.values[r]=o,a[e]=o},re=t=>{if(t===null)return"null";var e=typeof t;return e==="object"||e==="array"||e==="function"?t.toString():""+t},Nn=(t,e)=>{switch(e){case 4:return function(r){return this.fromWireType(Te[r>>2])};case 8:return function(r){return this.fromWireType(_e[r>>3])};default:throw new TypeError(`invalid float width (${e}): ${t}`)}},Gn=(t,e,r)=>{e=I(e),Z(t,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:J,readValueFromPointer:Nn(e,r),destructorFunction:null})},Xn=(t,e,r,n,a,o,s)=>{var u=Jt(e,r);t=I(t),t=Ye(t),a=q(n,a),Qt(t,function(){Rt(`Cannot call ${t} due to unbound types`,u)},e-1),st([],u,function(l){var f=[l[0],null].concat(l.slice(1));return Be(t,Kt(t,f,null,a,o),e-1),[]})},qn=(t,e,r)=>{switch(e){case 1:return r?n=>Y[n>>0]:n=>k[n>>0];case 2:return r?n=>lt[n>>1]:n=>vt[n>>1];case 4:return r?n=>H[n>>2]:n=>_[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${t}`)}},Qn=(t,e,r,n,a)=>{e=I(e);var o=h=>h;if(n===0){var s=32-8*r;o=h=>h<>>s}var u=e.includes("unsigned"),l=(h,v)=>{},f;u?f=function(h,v){return l(v,this.name),v>>>0}:f=function(h,v){return l(v,this.name),v},Z(t,{name:e,fromWireType:o,toWireType:f,argPackAdvance:J,readValueFromPointer:qn(e,r,n!==0),destructorFunction:null})},Zn=(t,e,r)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function o(s){var u=_[s>>2],l=_[s+4>>2];return new a(Y.buffer,l,u)}r=I(r),Z(t,{name:r,fromWireType:o,argPackAdvance:J,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},Ne=(t,e,r,n)=>{if(!(n>0))return 0;for(var a=r,o=r+n-1,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(u<=127){if(r>=o)break;e[r++]=u}else if(u<=2047){if(r+1>=o)break;e[r++]=192|u>>6,e[r++]=128|u&63}else if(u<=65535){if(r+2>=o)break;e[r++]=224|u>>12,e[r++]=128|u>>6&63,e[r++]=128|u&63}else{if(r+3>=o)break;e[r++]=240|u>>18,e[r++]=128|u>>12&63,e[r++]=128|u>>6&63,e[r++]=128|u&63}}return e[r]=0,r-a},Jn=(t,e,r)=>Ne(t,k,e,r),Ge=t=>{for(var e=0,r=0;r=55296&&n<=57343?(e+=4,++r):e+=3}return e},Xe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Kn=(t,e,r)=>{for(var n=e+r,a=e;t[a]&&!(a>=n);)++a;if(a-e>16&&t.buffer&&Xe)return Xe.decode(t.subarray(e,a));for(var o="";e>10,56320|f&1023)}}return o},ne=(t,e)=>t?Kn(k,t,e):"",ta=(t,e)=>{e=I(e);var r=e==="std::string";Z(t,{name:e,fromWireType(n){var a=_[n>>2],o=n+4,s;if(r)for(var u=o,l=0;l<=a;++l){var f=o+l;if(l==a||k[f]==0){var h=f-u,v=ne(u,h);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var y=new Array(a),l=0;l>2]=o,r&&s)Jn(a,l,o+1);else if(s)for(var f=0;f255&&(rt(l),C("String has UTF-16 code units that do not fit in 8 bits")),k[l+f]=h}else for(var f=0;f{for(var r=t,n=r>>1,a=n+e/2;!(n>=a)&&vt[n];)++n;if(r=n<<1,r-t>32&&qe)return qe.decode(k.subarray(t,r));for(var o="",s=0;!(s>=e/2);++s){var u=lt[t+s*2>>1];if(u==0)break;o+=String.fromCharCode(u)}return o},ra=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<2)return 0;r-=2;for(var a=e,o=r>1]=u,e+=2}return lt[e>>1]=0,e-a},na=t=>t.length*2,aa=(t,e)=>{for(var r=0,n="";!(r>=e/4);){var a=H[t+r*4>>2];if(a==0)break;if(++r,a>=65536){var o=a-65536;n+=String.fromCharCode(55296|o>>10,56320|o&1023)}else n+=String.fromCharCode(a)}return n},oa=(t,e,r)=>{var n;if((n=r)!==null&&n!==void 0||(r=2147483647),r<4)return 0;for(var a=e,o=a+r-4,s=0;s=55296&&u<=57343){var l=t.charCodeAt(++s);u=65536+((u&1023)<<10)|l&1023}if(H[e>>2]=u,e+=4,e+4>o)break}return H[e>>2]=0,e-a},ia=t=>{for(var e=0,r=0;r=55296&&n<=57343&&++r,e+=4}return e},sa=(t,e,r)=>{r=I(r);var n,a,o,s,u;e===2?(n=ea,a=ra,s=na,o=()=>vt,u=1):e===4&&(n=aa,a=oa,s=ia,o=()=>_,u=2),Z(t,{name:r,fromWireType:l=>{for(var f=_[l>>2],h=o(),v,y=l+4,w=0;w<=f;++w){var E=l+4+w*e;if(w==f||h[E>>u]==0){var F=E-y,T=n(y,F);v===void 0?v=T:(v+="\0",v+=T),y=E+e}}return rt(l),v},toWireType:(l,f)=>{typeof f!="string"&&C(`Cannot pass non-string to C++ string type ${r}`);var h=s(f),v=ie(4+h+e);return _[v>>2]=h>>u,a(f,v+4,h+e),l!==null&&l.push(rt,v),v},argPackAdvance:J,readValueFromPointer:Nt,destructorFunction(l){rt(l)}})},ua=(t,e,r,n,a,o)=>{Ot[t]={name:I(e),rawConstructor:q(r,n),rawDestructor:q(a,o),fields:[]}},ca=(t,e,r,n,a,o,s,u,l,f)=>{Ot[t].fields.push({fieldName:I(e),getterReturnType:r,getter:q(n,a),getterContext:o,setterArgumentType:s,setter:q(u,l),setterContext:f})},la=(t,e)=>{e=I(e),Z(t,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(r,n)=>{}})},ae=[],da=(t,e,r,n)=>(t=ae[t],e=et.toValue(e),t(null,e,r,n)),fa={},ha=t=>{var e=fa[t];return e===void 0?I(t):e},Qe=()=>{if(typeof globalThis=="object")return globalThis;function t(e){e.$$$embind_global$$$=e;var r=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return r||delete e.$$$embind_global$$$,r}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&t(global)?$$$embind_global$$$=global:typeof self=="object"&&t(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},pa=t=>t===0?et.toHandle(Qe()):(t=ha(t),et.toHandle(Qe()[t])),ma=t=>{var e=ae.length;return ae.push(t),e},va=(t,e)=>{for(var r=new Array(t),n=0;n>2],"parameter "+n);return r},ya=Reflect.construct,ga=(t,e,r)=>{var n=[],a=t.toWireType(n,r);return n.length&&(_[e>>2]=et.toHandle(n)),a},wa=(t,e,r)=>{var n=va(t,e),a=n.shift();t--;var o=new Array(t),s=(l,f,h,v)=>{for(var y=0,w=0;wl.name).join(", ")}) => ${a.name}>`;return ma(Ct(u,s))},$a=t=>{t>4&&(X.get(t).refcount+=1)},ba=t=>{var e=et.toValue(t);zt(e),te(t)},Ca=(t,e)=>{t=ee(t,"_emval_take_value");var r=t.readValueFromPointer(e);return et.toHandle(r)},Ta=()=>{Et("")},_a=(t,e,r)=>k.copyWithin(t,e,e+r),Pa=()=>2147483648,Ea=t=>{var e=at.buffer,r=(t-e.byteLength+65535)/65536;try{return at.grow(r),Pe(),1}catch{}},Aa=t=>{var e=k.length;t>>>=0;var r=Pa();if(t>r)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var o=e*(1+.2/a);o=Math.min(o,t+100663296);var s=Math.min(r,n(Math.max(t,o),65536)),u=Ea(s);if(u)return!0}return!1},oe={},Da=()=>U||"./this.program",Tt=()=>{if(!Tt.strings){var t=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:t,_:Da()};for(var r in oe)oe[r]===void 0?delete e[r]:e[r]=oe[r];var n=[];for(var r in e)n.push(`${r}=${e[r]}`);Tt.strings=n}return Tt.strings},Oa=(t,e)=>{for(var r=0;r>0]=t.charCodeAt(r);Y[e>>0]=0},Fa=(t,e)=>{var r=0;return Tt().forEach((n,a)=>{var o=e+r;_[t+a*4>>2]=o,Oa(n,o),r+=n.length+1}),0},xa=(t,e)=>{var r=Tt();_[t>>2]=r.length;var n=0;return r.forEach(a=>n+=a.length+1),_[e>>2]=n,0},Sa=t=>t,Wt=t=>t%4===0&&(t%100!==0||t%400===0),Ma=(t,e)=>{for(var r=0,n=0;n<=e;r+=t[n++]);return r},Ze=[31,29,31,30,31,30,31,31,30,31,30,31],Je=[31,28,31,30,31,30,31,31,30,31,30,31],ja=(t,e)=>{for(var r=new Date(t.getTime());e>0;){var n=Wt(r.getFullYear()),a=r.getMonth(),o=(n?Ze:Je)[a];if(e>o-r.getDate())e-=o-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+e),r}return r};function Ia(t,e,r){var n=r>0?r:Ge(t)+1,a=new Array(n),o=Ne(t,a,0,a.length);return e&&(a.length=o),a}var Ra=(t,e)=>{Y.set(t,e)},Wa=(t,e,r,n)=>{var a=_[n+40>>2],o={tm_sec:H[n>>2],tm_min:H[n+4>>2],tm_hour:H[n+8>>2],tm_mday:H[n+12>>2],tm_mon:H[n+16>>2],tm_year:H[n+20>>2],tm_wday:H[n+24>>2],tm_yday:H[n+28>>2],tm_isdst:H[n+32>>2],tm_gmtoff:H[n+36>>2],tm_zone:a?ne(a):""},s=ne(r),u={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in u)s=s.replace(new RegExp(l,"g"),u[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function v(d,m,x){for(var j=typeof d=="number"?d.toString():d||"";j.length0?1:0}var j;return(j=x(d.getFullYear()-m.getFullYear()))===0&&(j=x(d.getMonth()-m.getMonth()))===0&&(j=x(d.getDate()-m.getDate())),j}function E(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function F(d){var m=ja(new Date(d.tm_year+1900,0,1),d.tm_yday),x=new Date(m.getFullYear(),0,4),j=new Date(m.getFullYear()+1,0,4),pt=E(x),Ht=E(j);return w(pt,m)<=0?w(Ht,m)<=0?m.getFullYear()+1:m.getFullYear():m.getFullYear()-1}var T={"%a":d=>f[d.tm_wday].substring(0,3),"%A":d=>f[d.tm_wday],"%b":d=>h[d.tm_mon].substring(0,3),"%B":d=>h[d.tm_mon],"%C":d=>{var m=d.tm_year+1900;return y(m/100|0,2)},"%d":d=>y(d.tm_mday,2),"%e":d=>v(d.tm_mday,2," "),"%g":d=>F(d).toString().substring(2),"%G":d=>F(d),"%H":d=>y(d.tm_hour,2),"%I":d=>{var m=d.tm_hour;return m==0?m=12:m>12&&(m-=12),y(m,2)},"%j":d=>y(d.tm_mday+Ma(Wt(d.tm_year+1900)?Ze:Je,d.tm_mon-1),3),"%m":d=>y(d.tm_mon+1,2),"%M":d=>y(d.tm_min,2),"%n":()=>` +`,"%p":d=>d.tm_hour>=0&&d.tm_hour<12?"AM":"PM","%S":d=>y(d.tm_sec,2),"%t":()=>" ","%u":d=>d.tm_wday||7,"%U":d=>{var m=d.tm_yday+7-d.tm_wday;return y(Math.floor(m/7),2)},"%V":d=>{var m=Math.floor((d.tm_yday+7-(d.tm_wday+6)%7)/7);if((d.tm_wday+371-d.tm_yday-2)%7<=2&&m++,m){if(m==53){var x=(d.tm_wday+371-d.tm_yday)%7;x!=4&&(x!=3||!Wt(d.tm_year))&&(m=1)}}else{m=52;var j=(d.tm_wday+7-d.tm_yday-1)%7;(j==4||j==5&&Wt(d.tm_year%400-1))&&m++}return y(m,2)},"%w":d=>d.tm_wday,"%W":d=>{var m=d.tm_yday+7-(d.tm_wday+6)%7;return y(Math.floor(m/7),2)},"%y":d=>(d.tm_year+1900).toString().substring(2),"%Y":d=>d.tm_year+1900,"%z":d=>{var m=d.tm_gmtoff,x=m>=0;return m=Math.abs(m)/60,m=m/60*100+m%60,(x?"+":"-")+("0000"+m).slice(-4)},"%Z":d=>d.tm_zone,"%%":()=>"%"};s=s.replace(/%%/g,"\0\0");for(var l in T)s.includes(l)&&(s=s.replace(new RegExp(l,"g"),T[l](o)));s=s.replace(/\0\0/g,"%");var R=Ia(s,!1);return R.length>e?0:(Ra(R,t),R.length-1)},ka=(t,e,r,n,a)=>Wa(t,e,r,n);Se=c.InternalError=class extends Error{constructor(t){super(t),this.name="InternalError"}},ln(),ht=c.BindingError=class extends Error{constructor(t){super(t),this.name="BindingError"}},Cn(),gn(),Fn(),Ve=c.UnboundTypeError=jn(Error,"UnboundTypeError"),Hn(),Un();var Ha={s:Jr,u:Kr,b:en,g:rn,q:nn,J:an,f:on,V:sn,d:tn,da:un,Q:cn,_:fn,ca:In,ba:Wn,w:kn,Y:Vn,x:Yn,h:zn,L:Gn,M:Xn,t:Qn,o:Zn,K:ta,C:sa,A:ua,ea:ca,$:la,R:da,ha:te,fa:pa,Z:wa,N:$a,O:ba,aa:Ca,B:Ta,X:_a,W:Aa,T:Fa,U:xa,E:eo,D:Ya,F:to,n:ro,a:Ba,e:Na,m:La,k:Xa,H:Ja,v:Qa,G:Ka,z:ao,P:io,l:Ga,j:za,c:Va,p:Ua,I:Za,r:no,i:qa,y:oo,ga:Sa,S:ka},M=Zr(),rt=c._free=t=>(rt=c._free=M.ka)(t),ie=c._malloc=t=>(ie=c._malloc=M.la)(t),Ke=t=>(Ke=M.na)(t),P=(t,e)=>(P=M.oa)(t,e),_t=t=>(_t=M.pa)(t),D=()=>(D=M.qa)(),O=t=>(O=M.ra)(t),tr=t=>(tr=M.sa)(t),er=t=>(er=M.ta)(t),rr=(t,e,r)=>(rr=M.ua)(t,e,r),nr=t=>(nr=M.va)(t);c.dynCall_viijii=(t,e,r,n,a,o,s)=>(c.dynCall_viijii=M.wa)(t,e,r,n,a,o,s);var ar=c.dynCall_jiiii=(t,e,r,n,a)=>(ar=c.dynCall_jiiii=M.xa)(t,e,r,n,a);c.dynCall_iiiiij=(t,e,r,n,a,o,s)=>(c.dynCall_iiiiij=M.ya)(t,e,r,n,a,o,s),c.dynCall_iiiiijj=(t,e,r,n,a,o,s,u,l)=>(c.dynCall_iiiiijj=M.za)(t,e,r,n,a,o,s,u,l),c.dynCall_iiiiiijj=(t,e,r,n,a,o,s,u,l,f)=>(c.dynCall_iiiiiijj=M.Aa)(t,e,r,n,a,o,s,u,l,f);function Ba(t,e){var r=D();try{return A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Ua(t,e,r,n){var a=D();try{A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Va(t,e,r){var n=D();try{A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function La(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function Ya(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function za(t,e){var r=D();try{A(t)(e)}catch(n){if(O(r),n!==n+0)throw n;P(1,0)}}function Na(t,e,r){var n=D();try{return A(t)(e,r)}catch(a){if(O(n),a!==a+0)throw a;P(1,0)}}function Ga(t){var e=D();try{A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function Xa(t,e,r,n,a){var o=D();try{return A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function qa(t,e,r,n,a,o,s,u,l,f,h){var v=D();try{A(t)(e,r,n,a,o,s,u,l,f,h)}catch(y){if(O(v),y!==y+0)throw y;P(1,0)}}function Qa(t,e,r,n,a,o,s){var u=D();try{return A(t)(e,r,n,a,o,s)}catch(l){if(O(u),l!==l+0)throw l;P(1,0)}}function Za(t,e,r,n,a){var o=D();try{A(t)(e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}function Ja(t,e,r,n,a,o){var s=D();try{return A(t)(e,r,n,a,o)}catch(u){if(O(s),u!==u+0)throw u;P(1,0)}}function Ka(t,e,r,n,a,o,s,u){var l=D();try{return A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function to(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function eo(t,e,r,n){var a=D();try{return A(t)(e,r,n)}catch(o){if(O(a),o!==o+0)throw o;P(1,0)}}function ro(t){var e=D();try{return A(t)()}catch(r){if(O(e),r!==r+0)throw r;P(1,0)}}function no(t,e,r,n,a,o,s,u){var l=D();try{A(t)(e,r,n,a,o,s,u)}catch(f){if(O(l),f!==f+0)throw f;P(1,0)}}function ao(t,e,r,n,a,o,s,u,l,f,h,v){var y=D();try{return A(t)(e,r,n,a,o,s,u,l,f,h,v)}catch(w){if(O(y),w!==w+0)throw w;P(1,0)}}function oo(t,e,r,n,a,o,s,u,l,f,h,v,y,w,E,F){var T=D();try{A(t)(e,r,n,a,o,s,u,l,f,h,v,y,w,E,F)}catch(R){if(O(T),R!==R+0)throw R;P(1,0)}}function io(t,e,r,n,a){var o=D();try{return ar(t,e,r,n,a)}catch(s){if(O(o),s!==s+0)throw s;P(1,0)}}var kt;yt=function t(){kt||or(),kt||(yt=t)};function or(){if(ot>0||(Br(),ot>0))return;function t(){kt||(kt=!0,c.calledRun=!0,!mt&&(Ur(),$(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),Vr()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),t()},1)):t()}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return or(),p.ready}})();function Ir(i){return Ut(Pt,i)}function Rr(i){return Sr(Pt,i)}async function Wr(i,p){return Mr(Pt,i,p)}async function kr(i,p){return jr(Pt,i,p)}class Hr extends EventTarget{constructor(c={}){var $;super();cr(this,ct,void 0);try{const g=($=c==null?void 0:c.formats)==null?void 0:$.filter(b=>b!=="unknown");if((g==null?void 0:g.length)===0)throw new TypeError("Hint option provided, but is empty.");g==null||g.forEach(b=>{if(!nt.has(b))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${b}' is not a valid enum value of type BarcodeFormat.`)}),lr(this,ct,g!=null?g:[]),Ir().then(b=>{this.dispatchEvent(new CustomEvent("load",{detail:b}))}).catch(b=>{this.dispatchEvent(new CustomEvent("error",{detail:b}))})}catch(g){throw ye(g,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return z.filter(c=>c!=="unknown")}async detect(c){try{const $=await yr(c);if($===null)return[];let g;try{me($)?g=await Wr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))}):g=await kr($,{tryHarder:!0,formats:se(this,ct).map(b=>nt.get(b))})}catch(b){throw console.error(b),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return g.map(b=>{const{topLeft:{x:U,y:N},topRight:{x:V,y:S},bottomLeft:{x:G,y:Q},bottomRight:{x:L,y:K}}=b.position,at=Math.min(U,V,G,L),mt=Math.min(N,S,Q,K),Y=Math.max(U,V,G,L),k=Math.max(N,S,Q,K);return{boundingBox:new DOMRectReadOnly(at,mt,Y-at,k-mt),rawValue:b.text,format:dr(b.format),cornerPoints:[{x:U,y:N},{x:V,y:S},{x:L,y:K},{x:G,y:Q}]}})}catch($){throw ye($,"Failed to execute 'detect' on 'BarcodeDetector'")}}}return ct=new WeakMap,(Ce=globalThis.BarcodeDetector)!=null||(globalThis.BarcodeDetector=Hr),W.setZXingModuleOverrides=Rr,Object.defineProperty(W,Symbol.toStringTag,{value:"Module"}),W}({}); diff --git a/node_modules/barcode-detector/package.json b/node_modules/barcode-detector/package.json new file mode 100644 index 0000000..27f13f1 --- /dev/null +++ b/node_modules/barcode-detector/package.json @@ -0,0 +1,102 @@ +{ + "name": "barcode-detector", + "description": "A Barcode Detection API polyfill that uses ZXing webassembly under the hood", + "private": false, + "version": "2.2.2", + "type": "module", + "files": [ + "./dist" + ], + "main": "./dist/cjs/index.js", + "module": "./dist/es/index.js", + "exports": { + ".": { + "import": "./dist/es/index.js", + "require": "./dist/cjs/index.js", + "default": "./dist/es/index.js" + }, + "./pure": { + "import": "./dist/es/pure.js", + "require": "./dist/cjs/pure.js", + "default": "./dist/es/pure.js" + }, + "./side-effects": { + "import": "./dist/es/side-effects.js", + "require": "./dist/cjs/side-effects.js", + "default": "./dist/es/side-effects.js" + } + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Sec-ant/barcode-detector.git" + }, + "homepage": "https://github.com/Sec-ant/barcode-detector", + "bugs": { + "url": "https://github.com/Sec-ant/barcode-detector/issues", + "email": "zzwu@zju.edu.cn" + }, + "keywords": [ + "es6", + "qrcode", + "barcode", + "barcode-detector", + "wasm", + "polyfill", + "zxing", + "esmodule", + "webassembly" + ], + "author": { + "name": "Ze-Zheng Wu" + }, + "license": "MIT", + "config": { + "port": "18080" + }, + "scripts": { + "lint": "eslint . --ext .ts", + "type-check": "tsc --noEmit --emitDeclarationOnly false", + "format": "prettier . --write", + "prebuild": "npm run lint && npm run type-check && npm run format", + "build:es": "vite build", + "build:cjs": "tsx ./scripts/build-cjs.ts", + "build:iife": "tsx ./scripts/build-iife.ts", + "build": "conc \"npm:build:es\" \"npm:build:cjs\" \"npm:build:iife\"", + "postbuild:es": "tsc --declarationDir ./dist/es", + "postbuild:cjs": "tsc --declarationDir ./dist/cjs", + "start": "vite preview --outDir ./tests --port $npm_package_config_port -l silent", + "pretest": "tsx ./scripts/list-dir.ts", + "pretest:ui": "tsx ./scripts/list-dir.ts", + "precoverage": "tsx ./scripts/list-dir.ts", + "test": "start-server-and-test $npm_package_config_port 'vitest --coverage'", + "test:ui": "start-server-and-test $npm_package_config_port 'vitest --ui --coverage'", + "coverage": "start-server-and-test $npm_package_config_port 'vitest run --coverage'", + "prepublishOnly": "npm run build", + "ncu": "npx npm-check-updates --filterVersion \"/^[~^]/\" -u", + "postncu": "npm i", + "bump-zxing-wasm": "npm i zxing-wasm@latest --save-exact" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "@vitest/browser": "^1.1.0", + "@vitest/coverage-istanbul": "^1.1.0", + "@vitest/ui": "^1.1.0", + "concurrently": "^8.2.2", + "eslint": "^8.56.0", + "http-server": "^14.1.1", + "npm-check-updates": "^16.14.12", + "playwright": "^1.40.1", + "prettier": "^3.1.1", + "rimraf": "^5.0.5", + "start-server-and-test": "^2.0.3", + "tsx": "^4.7.0", + "typescript": "^5.3.3", + "vite": "^5.0.10", + "vitest": "^1.1.0" + }, + "dependencies": { + "@types/dom-webcodecs": "^0.1.11", + "zxing-wasm": "1.1.3" + } +} diff --git a/node_modules/sdp/.eslintrc b/node_modules/sdp/.eslintrc new file mode 100644 index 0000000..185b51f --- /dev/null +++ b/node_modules/sdp/.eslintrc @@ -0,0 +1,61 @@ +{ + "rules": { + "array-bracket-spacing": 2, + "block-spacing": [2, "never"], + "brace-style": [2, "1tbs", {"allowSingleLine": false}], + "camelcase": [2, {"properties": "always"}], + "curly": 2, + "default-case": 2, + "dot-notation": 2, + "eqeqeq": 2, + "indent": [ + 2, + 2, + {"SwitchCase": 1} + ], + "key-spacing": [2, {"beforeColon": false, "afterColon": true}], + "max-len": [2, 80, 2, {"ignoreUrls": true}], + "new-cap": [2, {"newIsCapExceptions": [ + "webkitRTCPeerConnection", + "mozRTCPeerConnection" + ]}], + "no-console": 0, + "no-else-return": 2, + "no-eval": 2, + "no-multi-spaces": 2, + "no-multiple-empty-lines": [2, {"max": 2}], + "no-shadow": 2, + "no-trailing-spaces": 2, + "no-unused-expressions": 2, + "no-unused-vars": [2, {"args": "none"}], + "object-curly-spacing": [2, "never"], + "padded-blocks": [2, "never"], + "quotes": [ + 2, + "single" + ], + "semi": [ + 2, + "always" + ], + "keyword-spacing": 2, + "space-before-blocks": 2, + "space-before-function-paren": [2, "never"], + "space-unary-ops": 2, + "space-infix-ops": 2, + "spaced-comment": 2, + "valid-typeof": 2 + }, + "env": { + "es6": true, + "browser": true, + "node": true + }, + "extends": ["eslint:recommended"], + "globals": { + "module": true, + "require": true, + "process": true, + "Promise": true, + } +} diff --git a/node_modules/sdp/.github/workflows/npm-test.yml b/node_modules/sdp/.github/workflows/npm-test.yml new file mode 100644 index 0000000..e92d6f9 --- /dev/null +++ b/node_modules/sdp/.github/workflows/npm-test.yml @@ -0,0 +1,16 @@ +name: npm-test + +on: [pull_request] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + - run: npm install + - run: npm test + - run: npm run coverage + - uses: codecov/codecov-action@v1 + with: + file: ./coverage.lcov diff --git a/node_modules/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json b/node_modules/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json new file mode 100644 index 0000000..e353f6d --- /dev/null +++ b/node_modules/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json @@ -0,0 +1 @@ +{"/media/fippo/houseparty/webrtc/sdp/sdp.js":{"path":"/media/fippo/houseparty/webrtc/sdp/sdp.js","statementMap":{"0":{"start":{"line":5,"column":17},"end":{"line":5,"column":19}},"1":{"start":{"line":9,"column":0},"end":{"line":11,"column":2}},"2":{"start":{"line":10,"column":2},"end":{"line":10,"column":53}},"3":{"start":{"line":14,"column":0},"end":{"line":14,"column":52}},"4":{"start":{"line":17,"column":0},"end":{"line":19,"column":2}},"5":{"start":{"line":18,"column":2},"end":{"line":18,"column":58}},"6":{"start":{"line":18,"column":45},"end":{"line":18,"column":56}},"7":{"start":{"line":21,"column":0},"end":{"line":25,"column":2}},"8":{"start":{"line":22,"column":16},"end":{"line":22,"column":34}},"9":{"start":{"line":23,"column":2},"end":{"line":24,"column":41}},"10":{"start":{"line":23,"column":36},"end":{"line":24,"column":39}},"11":{"start":{"line":28,"column":0},"end":{"line":31,"column":2}},"12":{"start":{"line":29,"column":19},"end":{"line":29,"column":47}},"13":{"start":{"line":30,"column":2},"end":{"line":30,"column":33}},"14":{"start":{"line":34,"column":0},"end":{"line":38,"column":2}},"15":{"start":{"line":35,"column":19},"end":{"line":35,"column":47}},"16":{"start":{"line":36,"column":2},"end":{"line":36,"column":19}},"17":{"start":{"line":37,"column":2},"end":{"line":37,"column":18}},"18":{"start":{"line":41,"column":0},"end":{"line":43,"column":2}},"19":{"start":{"line":42,"column":2},"end":{"line":42,"column":78}},"20":{"start":{"line":42,"column":50},"end":{"line":42,"column":76}},"21":{"start":{"line":49,"column":0},"end":{"line":93,"column":2}},"22":{"start":{"line":52,"column":2},"end":{"line":56,"column":3}},"23":{"start":{"line":53,"column":4},"end":{"line":53,"column":42}},"24":{"start":{"line":55,"column":4},"end":{"line":55,"column":42}},"25":{"start":{"line":58,"column":20},"end":{"line":68,"column":3}},"26":{"start":{"line":70,"column":2},"end":{"line":91,"column":3}},"27":{"start":{"line":70,"column":15},"end":{"line":70,"column":16}},"28":{"start":{"line":71,"column":4},"end":{"line":90,"column":5}},"29":{"start":{"line":73,"column":8},"end":{"line":73,"column":48}},"30":{"start":{"line":74,"column":8},"end":{"line":74,"column":14}},"31":{"start":{"line":76,"column":8},"end":{"line":76,"column":59}},"32":{"start":{"line":77,"column":8},"end":{"line":77,"column":14}},"33":{"start":{"line":79,"column":8},"end":{"line":79,"column":41}},"34":{"start":{"line":80,"column":8},"end":{"line":80,"column":14}},"35":{"start":{"line":82,"column":8},"end":{"line":82,"column":39}},"36":{"start":{"line":83,"column":8},"end":{"line":83,"column":50}},"37":{"start":{"line":84,"column":8},"end":{"line":84,"column":14}},"38":{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},"39":{"start":{"line":87,"column":10},"end":{"line":87,"column":45}},"40":{"start":{"line":89,"column":8},"end":{"line":89,"column":14}},"41":{"start":{"line":92,"column":2},"end":{"line":92,"column":19}},"42":{"start":{"line":97,"column":0},"end":{"line":133,"column":2}},"43":{"start":{"line":98,"column":14},"end":{"line":98,"column":16}},"44":{"start":{"line":99,"column":2},"end":{"line":99,"column":33}},"45":{"start":{"line":101,"column":20},"end":{"line":101,"column":39}},"46":{"start":{"line":102,"column":2},"end":{"line":108,"column":3}},"47":{"start":{"line":103,"column":4},"end":{"line":103,"column":16}},"48":{"start":{"line":104,"column":9},"end":{"line":108,"column":3}},"49":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}},"50":{"start":{"line":107,"column":4},"end":{"line":107,"column":24}},"51":{"start":{"line":109,"column":2},"end":{"line":109,"column":45}},"52":{"start":{"line":110,"column":2},"end":{"line":110,"column":31}},"53":{"start":{"line":111,"column":2},"end":{"line":111,"column":46}},"54":{"start":{"line":112,"column":2},"end":{"line":112,"column":27}},"55":{"start":{"line":114,"column":15},"end":{"line":114,"column":29}},"56":{"start":{"line":115,"column":2},"end":{"line":115,"column":18}},"57":{"start":{"line":116,"column":2},"end":{"line":116,"column":17}},"58":{"start":{"line":117,"column":2},"end":{"line":123,"column":3}},"59":{"start":{"line":119,"column":4},"end":{"line":119,"column":22}},"60":{"start":{"line":120,"column":4},"end":{"line":120,"column":39}},"61":{"start":{"line":121,"column":4},"end":{"line":121,"column":22}},"62":{"start":{"line":122,"column":4},"end":{"line":122,"column":36}},"63":{"start":{"line":124,"column":2},"end":{"line":127,"column":3}},"64":{"start":{"line":125,"column":4},"end":{"line":125,"column":24}},"65":{"start":{"line":126,"column":4},"end":{"line":126,"column":32}},"66":{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},"67":{"start":{"line":129,"column":4},"end":{"line":129,"column":22}},"68":{"start":{"line":130,"column":4},"end":{"line":130,"column":60}},"69":{"start":{"line":132,"column":2},"end":{"line":132,"column":38}},"70":{"start":{"line":138,"column":0},"end":{"line":140,"column":2}},"71":{"start":{"line":139,"column":2},"end":{"line":139,"column":39}},"72":{"start":{"line":144,"column":0},"end":{"line":158,"column":2}},"73":{"start":{"line":145,"column":14},"end":{"line":145,"column":42}},"74":{"start":{"line":146,"column":17},"end":{"line":148,"column":3}},"75":{"start":{"line":150,"column":2},"end":{"line":150,"column":30}},"76":{"start":{"line":152,"column":2},"end":{"line":152,"column":25}},"77":{"start":{"line":153,"column":2},"end":{"line":153,"column":44}},"78":{"start":{"line":154,"column":2},"end":{"line":154,"column":68}},"79":{"start":{"line":156,"column":2},"end":{"line":156,"column":39}},"80":{"start":{"line":157,"column":2},"end":{"line":157,"column":16}},"81":{"start":{"line":162,"column":0},"end":{"line":170,"column":2}},"82":{"start":{"line":163,"column":11},"end":{"line":163,"column":28}},"83":{"start":{"line":164,"column":2},"end":{"line":166,"column":3}},"84":{"start":{"line":165,"column":4},"end":{"line":165,"column":36}},"85":{"start":{"line":167,"column":19},"end":{"line":167,"column":59}},"86":{"start":{"line":168,"column":2},"end":{"line":169,"column":54}},"87":{"start":{"line":175,"column":0},"end":{"line":183,"column":2}},"88":{"start":{"line":176,"column":16},"end":{"line":176,"column":44}},"89":{"start":{"line":177,"column":2},"end":{"line":182,"column":4}},"90":{"start":{"line":187,"column":0},"end":{"line":195,"column":2}},"91":{"start":{"line":188,"column":2},"end":{"line":194,"column":13}},"92":{"start":{"line":200,"column":0},"end":{"line":209,"column":2}},"93":{"start":{"line":201,"column":17},"end":{"line":201,"column":19}},"94":{"start":{"line":203,"column":16},"end":{"line":203,"column":64}},"95":{"start":{"line":204,"column":2},"end":{"line":207,"column":3}},"96":{"start":{"line":204,"column":15},"end":{"line":204,"column":16}},"97":{"start":{"line":205,"column":4},"end":{"line":205,"column":36}},"98":{"start":{"line":206,"column":4},"end":{"line":206,"column":33}},"99":{"start":{"line":208,"column":2},"end":{"line":208,"column":16}},"100":{"start":{"line":212,"column":0},"end":{"line":230,"column":2}},"101":{"start":{"line":213,"column":13},"end":{"line":213,"column":15}},"102":{"start":{"line":214,"column":11},"end":{"line":214,"column":28}},"103":{"start":{"line":215,"column":2},"end":{"line":217,"column":3}},"104":{"start":{"line":216,"column":4},"end":{"line":216,"column":36}},"105":{"start":{"line":218,"column":2},"end":{"line":228,"column":3}},"106":{"start":{"line":219,"column":19},"end":{"line":219,"column":21}},"107":{"start":{"line":220,"column":4},"end":{"line":226,"column":7}},"108":{"start":{"line":221,"column":6},"end":{"line":225,"column":7}},"109":{"start":{"line":222,"column":8},"end":{"line":222,"column":59}},"110":{"start":{"line":224,"column":8},"end":{"line":224,"column":27}},"111":{"start":{"line":227,"column":4},"end":{"line":227,"column":61}},"112":{"start":{"line":229,"column":2},"end":{"line":229,"column":14}},"113":{"start":{"line":234,"column":0},"end":{"line":240,"column":2}},"114":{"start":{"line":235,"column":16},"end":{"line":235,"column":64}},"115":{"start":{"line":236,"column":2},"end":{"line":239,"column":4}},"116":{"start":{"line":243,"column":0},"end":{"line":258,"column":2}},"117":{"start":{"line":244,"column":14},"end":{"line":244,"column":16}},"118":{"start":{"line":245,"column":11},"end":{"line":245,"column":28}},"119":{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},"120":{"start":{"line":247,"column":4},"end":{"line":247,"column":36}},"121":{"start":{"line":249,"column":2},"end":{"line":256,"column":3}},"122":{"start":{"line":251,"column":4},"end":{"line":255,"column":7}},"123":{"start":{"line":252,"column":6},"end":{"line":254,"column":17}},"124":{"start":{"line":257,"column":2},"end":{"line":257,"column":15}},"125":{"start":{"line":262,"column":0},"end":{"line":275,"column":2}},"126":{"start":{"line":263,"column":13},"end":{"line":263,"column":30}},"127":{"start":{"line":264,"column":16},"end":{"line":266,"column":3}},"128":{"start":{"line":267,"column":16},"end":{"line":267,"column":37}},"129":{"start":{"line":268,"column":2},"end":{"line":273,"column":3}},"130":{"start":{"line":269,"column":4},"end":{"line":269,"column":52}},"131":{"start":{"line":270,"column":4},"end":{"line":270,"column":44}},"132":{"start":{"line":272,"column":4},"end":{"line":272,"column":45}},"133":{"start":{"line":274,"column":2},"end":{"line":274,"column":15}},"134":{"start":{"line":279,"column":0},"end":{"line":285,"column":2}},"135":{"start":{"line":280,"column":16},"end":{"line":280,"column":45}},"136":{"start":{"line":281,"column":2},"end":{"line":284,"column":4}},"137":{"start":{"line":283,"column":29},"end":{"line":283,"column":47}},"138":{"start":{"line":289,"column":0},"end":{"line":294,"column":2}},"139":{"start":{"line":290,"column":14},"end":{"line":290,"column":61}},"140":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"141":{"start":{"line":292,"column":4},"end":{"line":292,"column":28}},"142":{"start":{"line":297,"column":0},"end":{"line":303,"column":2}},"143":{"start":{"line":298,"column":16},"end":{"line":298,"column":45}},"144":{"start":{"line":299,"column":2},"end":{"line":302,"column":4}},"145":{"start":{"line":308,"column":0},"end":{"line":316,"column":2}},"146":{"start":{"line":309,"column":16},"end":{"line":310,"column":21}},"147":{"start":{"line":312,"column":2},"end":{"line":315,"column":4}},"148":{"start":{"line":319,"column":0},"end":{"line":325,"column":2}},"149":{"start":{"line":320,"column":12},"end":{"line":320,"column":43}},"150":{"start":{"line":321,"column":2},"end":{"line":323,"column":5}},"151":{"start":{"line":322,"column":4},"end":{"line":322,"column":69}},"152":{"start":{"line":324,"column":2},"end":{"line":324,"column":13}},"153":{"start":{"line":329,"column":0},"end":{"line":337,"column":2}},"154":{"start":{"line":330,"column":16},"end":{"line":330,"column":44}},"155":{"start":{"line":331,"column":2},"end":{"line":336,"column":4}},"156":{"start":{"line":339,"column":0},"end":{"line":347,"column":2}},"157":{"start":{"line":340,"column":2},"end":{"line":346,"column":11}},"158":{"start":{"line":351,"column":0},"end":{"line":363,"column":2}},"159":{"start":{"line":352,"column":2},"end":{"line":354,"column":3}},"160":{"start":{"line":353,"column":4},"end":{"line":353,"column":16}},"161":{"start":{"line":355,"column":16},"end":{"line":355,"column":49}},"162":{"start":{"line":356,"column":2},"end":{"line":362,"column":4}},"163":{"start":{"line":365,"column":0},"end":{"line":372,"column":2}},"164":{"start":{"line":366,"column":2},"end":{"line":371,"column":12}},"165":{"start":{"line":375,"column":0},"end":{"line":379,"column":2}},"166":{"start":{"line":376,"column":16},"end":{"line":377,"column":16}},"167":{"start":{"line":378,"column":2},"end":{"line":378,"column":45}},"168":{"start":{"line":384,"column":0},"end":{"line":396,"column":2}},"169":{"start":{"line":385,"column":16},"end":{"line":386,"column":22}},"170":{"start":{"line":387,"column":14},"end":{"line":388,"column":20}},"171":{"start":{"line":389,"column":2},"end":{"line":391,"column":3}},"172":{"start":{"line":390,"column":4},"end":{"line":390,"column":16}},"173":{"start":{"line":392,"column":2},"end":{"line":395,"column":4}},"174":{"start":{"line":399,"column":0},"end":{"line":406,"column":2}},"175":{"start":{"line":400,"column":12},"end":{"line":401,"column":45}},"176":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"177":{"start":{"line":403,"column":4},"end":{"line":403,"column":28}},"178":{"start":{"line":405,"column":2},"end":{"line":405,"column":13}},"179":{"start":{"line":409,"column":0},"end":{"line":461,"column":2}},"180":{"start":{"line":410,"column":22},"end":{"line":415,"column":3}},"181":{"start":{"line":416,"column":16},"end":{"line":416,"column":49}},"182":{"start":{"line":417,"column":16},"end":{"line":417,"column":35}},"183":{"start":{"line":418,"column":2},"end":{"line":442,"column":3}},"184":{"start":{"line":418,"column":15},"end":{"line":418,"column":16}},"185":{"start":{"line":419,"column":15},"end":{"line":419,"column":23}},"186":{"start":{"line":420,"column":23},"end":{"line":421,"column":46}},"187":{"start":{"line":422,"column":4},"end":{"line":441,"column":5}},"188":{"start":{"line":423,"column":20},"end":{"line":423,"column":52}},"189":{"start":{"line":424,"column":20},"end":{"line":425,"column":43}},"190":{"start":{"line":427,"column":6},"end":{"line":427,"column":74}},"191":{"start":{"line":428,"column":6},"end":{"line":430,"column":35}},"192":{"start":{"line":431,"column":6},"end":{"line":431,"column":37}},"193":{"start":{"line":433,"column":6},"end":{"line":440,"column":7}},"194":{"start":{"line":436,"column":10},"end":{"line":436,"column":67}},"195":{"start":{"line":437,"column":10},"end":{"line":437,"column":16}},"196":{"start":{"line":439,"column":10},"end":{"line":439,"column":16}},"197":{"start":{"line":443,"column":2},"end":{"line":445,"column":5}},"198":{"start":{"line":444,"column":4},"end":{"line":444,"column":66}},"199":{"start":{"line":446,"column":25},"end":{"line":447,"column":30}},"200":{"start":{"line":448,"column":2},"end":{"line":458,"column":5}},"201":{"start":{"line":449,"column":4},"end":{"line":457,"column":7}},"202":{"start":{"line":450,"column":24},"end":{"line":453,"column":8}},"203":{"start":{"line":451,"column":8},"end":{"line":452,"column":54}},"204":{"start":{"line":454,"column":6},"end":{"line":456,"column":7}},"205":{"start":{"line":455,"column":8},"end":{"line":455,"column":36}},"206":{"start":{"line":460,"column":2},"end":{"line":460,"column":21}},"207":{"start":{"line":465,"column":0},"end":{"line":505,"column":2}},"208":{"start":{"line":466,"column":12},"end":{"line":466,"column":14}},"209":{"start":{"line":469,"column":2},"end":{"line":469,"column":27}},"210":{"start":{"line":470,"column":2},"end":{"line":470,"column":44}},"211":{"start":{"line":471,"column":2},"end":{"line":471,"column":31}},"212":{"start":{"line":472,"column":2},"end":{"line":477,"column":24}},"213":{"start":{"line":473,"column":4},"end":{"line":475,"column":5}},"214":{"start":{"line":474,"column":6},"end":{"line":474,"column":40}},"215":{"start":{"line":476,"column":4},"end":{"line":476,"column":29}},"216":{"start":{"line":479,"column":2},"end":{"line":479,"column":32}},"217":{"start":{"line":480,"column":2},"end":{"line":480,"column":39}},"218":{"start":{"line":483,"column":2},"end":{"line":487,"column":5}},"219":{"start":{"line":484,"column":4},"end":{"line":484,"column":39}},"220":{"start":{"line":485,"column":4},"end":{"line":485,"column":37}},"221":{"start":{"line":486,"column":4},"end":{"line":486,"column":39}},"222":{"start":{"line":488,"column":17},"end":{"line":488,"column":18}},"223":{"start":{"line":489,"column":2},"end":{"line":493,"column":5}},"224":{"start":{"line":490,"column":4},"end":{"line":492,"column":5}},"225":{"start":{"line":491,"column":6},"end":{"line":491,"column":32}},"226":{"start":{"line":494,"column":2},"end":{"line":496,"column":3}},"227":{"start":{"line":495,"column":4},"end":{"line":495,"column":45}},"228":{"start":{"line":498,"column":2},"end":{"line":502,"column":3}},"229":{"start":{"line":499,"column":4},"end":{"line":501,"column":7}},"230":{"start":{"line":500,"column":6},"end":{"line":500,"column":45}},"231":{"start":{"line":504,"column":2},"end":{"line":504,"column":13}},"232":{"start":{"line":509,"column":0},"end":{"line":574,"column":2}},"233":{"start":{"line":510,"column":29},"end":{"line":510,"column":31}},"234":{"start":{"line":511,"column":22},"end":{"line":511,"column":63}},"235":{"start":{"line":512,"column":17},"end":{"line":512,"column":64}},"236":{"start":{"line":513,"column":20},"end":{"line":513,"column":70}},"237":{"start":{"line":516,"column":16},"end":{"line":518,"column":49}},"238":{"start":{"line":517,"column":17},"end":{"line":517,"column":46}},"239":{"start":{"line":518,"column":21},"end":{"line":518,"column":48}},"240":{"start":{"line":519,"column":22},"end":{"line":519,"column":55}},"241":{"start":{"line":522,"column":16},"end":{"line":526,"column":6}},"242":{"start":{"line":524,"column":20},"end":{"line":524,"column":49}},"243":{"start":{"line":525,"column":6},"end":{"line":525,"column":51}},"244":{"start":{"line":525,"column":31},"end":{"line":525,"column":49}},"245":{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},"246":{"start":{"line":528,"column":4},"end":{"line":528,"column":32}},"247":{"start":{"line":531,"column":2},"end":{"line":550,"column":5}},"248":{"start":{"line":532,"column":4},"end":{"line":549,"column":5}},"249":{"start":{"line":533,"column":21},"end":{"line":536,"column":7}},"250":{"start":{"line":537,"column":6},"end":{"line":539,"column":7}},"251":{"start":{"line":538,"column":8},"end":{"line":538,"column":45}},"252":{"start":{"line":540,"column":6},"end":{"line":540,"column":40}},"253":{"start":{"line":541,"column":6},"end":{"line":548,"column":7}},"254":{"start":{"line":542,"column":8},"end":{"line":542,"column":56}},"255":{"start":{"line":543,"column":8},"end":{"line":546,"column":10}},"256":{"start":{"line":547,"column":8},"end":{"line":547,"column":42}},"257":{"start":{"line":551,"column":2},"end":{"line":555,"column":3}},"258":{"start":{"line":552,"column":4},"end":{"line":554,"column":7}},"259":{"start":{"line":558,"column":18},"end":{"line":558,"column":58}},"260":{"start":{"line":559,"column":2},"end":{"line":572,"column":3}},"261":{"start":{"line":560,"column":4},"end":{"line":568,"column":5}},"262":{"start":{"line":561,"column":6},"end":{"line":561,"column":58}},"263":{"start":{"line":562,"column":11},"end":{"line":568,"column":5}},"264":{"start":{"line":564,"column":6},"end":{"line":565,"column":26}},"265":{"start":{"line":567,"column":6},"end":{"line":567,"column":28}},"266":{"start":{"line":569,"column":4},"end":{"line":571,"column":7}},"267":{"start":{"line":570,"column":6},"end":{"line":570,"column":36}},"268":{"start":{"line":573,"column":2},"end":{"line":573,"column":28}},"269":{"start":{"line":577,"column":0},"end":{"line":602,"column":2}},"270":{"start":{"line":578,"column":25},"end":{"line":578,"column":27}},"271":{"start":{"line":582,"column":21},"end":{"line":584,"column":48}},"272":{"start":{"line":583,"column":17},"end":{"line":583,"column":46}},"273":{"start":{"line":584,"column":19},"end":{"line":584,"column":44}},"274":{"start":{"line":585,"column":2},"end":{"line":588,"column":3}},"275":{"start":{"line":586,"column":4},"end":{"line":586,"column":44}},"276":{"start":{"line":587,"column":4},"end":{"line":587,"column":42}},"277":{"start":{"line":592,"column":16},"end":{"line":592,"column":66}},"278":{"start":{"line":593,"column":2},"end":{"line":593,"column":48}},"279":{"start":{"line":594,"column":2},"end":{"line":594,"column":47}},"280":{"start":{"line":598,"column":14},"end":{"line":598,"column":62}},"281":{"start":{"line":599,"column":2},"end":{"line":599,"column":38}},"282":{"start":{"line":601,"column":2},"end":{"line":601,"column":24}},"283":{"start":{"line":604,"column":0},"end":{"line":617,"column":2}},"284":{"start":{"line":605,"column":12},"end":{"line":605,"column":14}},"285":{"start":{"line":606,"column":2},"end":{"line":608,"column":3}},"286":{"start":{"line":607,"column":4},"end":{"line":607,"column":30}},"287":{"start":{"line":609,"column":2},"end":{"line":611,"column":3}},"288":{"start":{"line":610,"column":4},"end":{"line":610,"column":28}},"289":{"start":{"line":612,"column":2},"end":{"line":615,"column":3}},"290":{"start":{"line":613,"column":4},"end":{"line":614,"column":48}},"291":{"start":{"line":616,"column":2},"end":{"line":616,"column":13}},"292":{"start":{"line":622,"column":0},"end":{"line":636,"column":2}},"293":{"start":{"line":624,"column":15},"end":{"line":624,"column":60}},"294":{"start":{"line":625,"column":2},"end":{"line":628,"column":3}},"295":{"start":{"line":626,"column":4},"end":{"line":626,"column":44}},"296":{"start":{"line":627,"column":4},"end":{"line":627,"column":47}},"297":{"start":{"line":629,"column":16},"end":{"line":631,"column":56}},"298":{"start":{"line":630,"column":17},"end":{"line":630,"column":46}},"299":{"start":{"line":631,"column":25},"end":{"line":631,"column":55}},"300":{"start":{"line":632,"column":2},"end":{"line":635,"column":3}},"301":{"start":{"line":633,"column":4},"end":{"line":633,"column":38}},"302":{"start":{"line":634,"column":4},"end":{"line":634,"column":47}},"303":{"start":{"line":641,"column":0},"end":{"line":670,"column":2}},"304":{"start":{"line":642,"column":16},"end":{"line":642,"column":49}},"305":{"start":{"line":643,"column":22},"end":{"line":643,"column":79}},"306":{"start":{"line":645,"column":2},"end":{"line":647,"column":3}},"307":{"start":{"line":646,"column":4},"end":{"line":646,"column":64}},"308":{"start":{"line":648,"column":2},"end":{"line":650,"column":3}},"309":{"start":{"line":649,"column":4},"end":{"line":649,"column":27}},"310":{"start":{"line":651,"column":19},"end":{"line":651,"column":69}},"311":{"start":{"line":652,"column":2},"end":{"line":658,"column":3}},"312":{"start":{"line":653,"column":4},"end":{"line":657,"column":6}},"313":{"start":{"line":659,"column":23},"end":{"line":659,"column":71}},"314":{"start":{"line":660,"column":2},"end":{"line":669,"column":3}},"315":{"start":{"line":661,"column":18},"end":{"line":663,"column":17}},"316":{"start":{"line":664,"column":4},"end":{"line":668,"column":6}},"317":{"start":{"line":677,"column":0},"end":{"line":696,"column":2}},"318":{"start":{"line":678,"column":15},"end":{"line":678,"column":17}},"319":{"start":{"line":679,"column":2},"end":{"line":691,"column":3}},"320":{"start":{"line":680,"column":4},"end":{"line":684,"column":6}},"321":{"start":{"line":686,"column":4},"end":{"line":690,"column":6}},"322":{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},"323":{"start":{"line":693,"column":4},"end":{"line":693,"column":70}},"324":{"start":{"line":695,"column":2},"end":{"line":695,"column":25}},"325":{"start":{"line":702,"column":0},"end":{"line":704,"column":2}},"326":{"start":{"line":703,"column":2},"end":{"line":703,"column":48}},"327":{"start":{"line":711,"column":0},"end":{"line":726,"column":2}},"328":{"start":{"line":713,"column":18},"end":{"line":713,"column":53}},"329":{"start":{"line":714,"column":2},"end":{"line":718,"column":3}},"330":{"start":{"line":715,"column":4},"end":{"line":715,"column":23}},"331":{"start":{"line":717,"column":4},"end":{"line":717,"column":45}},"332":{"start":{"line":719,"column":15},"end":{"line":719,"column":46}},"333":{"start":{"line":721,"column":2},"end":{"line":725,"column":18}},"334":{"start":{"line":729,"column":0},"end":{"line":747,"column":2}},"335":{"start":{"line":731,"column":16},"end":{"line":731,"column":49}},"336":{"start":{"line":732,"column":2},"end":{"line":742,"column":3}},"337":{"start":{"line":732,"column":15},"end":{"line":732,"column":16}},"338":{"start":{"line":733,"column":4},"end":{"line":741,"column":5}},"339":{"start":{"line":738,"column":8},"end":{"line":738,"column":37}},"340":{"start":{"line":743,"column":2},"end":{"line":745,"column":3}},"341":{"start":{"line":744,"column":4},"end":{"line":744,"column":46}},"342":{"start":{"line":746,"column":2},"end":{"line":746,"column":20}},"343":{"start":{"line":749,"column":0},"end":{"line":753,"column":2}},"344":{"start":{"line":750,"column":16},"end":{"line":750,"column":49}},"345":{"start":{"line":751,"column":16},"end":{"line":751,"column":35}},"346":{"start":{"line":752,"column":2},"end":{"line":752,"column":31}},"347":{"start":{"line":755,"column":0},"end":{"line":757,"column":2}},"348":{"start":{"line":756,"column":2},"end":{"line":756,"column":47}},"349":{"start":{"line":759,"column":0},"end":{"line":768,"column":2}},"350":{"start":{"line":760,"column":16},"end":{"line":760,"column":49}},"351":{"start":{"line":761,"column":16},"end":{"line":761,"column":48}},"352":{"start":{"line":762,"column":2},"end":{"line":767,"column":4}},"353":{"start":{"line":770,"column":0},"end":{"line":781,"column":2}},"354":{"start":{"line":771,"column":15},"end":{"line":771,"column":58}},"355":{"start":{"line":772,"column":16},"end":{"line":772,"column":44}},"356":{"start":{"line":773,"column":2},"end":{"line":780,"column":4}},"357":{"start":{"line":784,"column":0},"end":{"line":796,"column":2}},"358":{"start":{"line":785,"column":2},"end":{"line":787,"column":3}},"359":{"start":{"line":786,"column":4},"end":{"line":786,"column":17}},"360":{"start":{"line":788,"column":16},"end":{"line":788,"column":41}},"361":{"start":{"line":789,"column":2},"end":{"line":794,"column":3}},"362":{"start":{"line":789,"column":15},"end":{"line":789,"column":16}},"363":{"start":{"line":790,"column":4},"end":{"line":792,"column":5}},"364":{"start":{"line":791,"column":6},"end":{"line":791,"column":19}},"365":{"start":{"line":795,"column":2},"end":{"line":795,"column":14}},"366":{"start":{"line":799,"column":0},"end":{"line":801,"column":1}},"367":{"start":{"line":800,"column":2},"end":{"line":800,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":30},"end":{"line":9,"column":31}},"loc":{"start":{"line":9,"column":41},"end":{"line":11,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":22},"end":{"line":17,"column":23}},"loc":{"start":{"line":17,"column":37},"end":{"line":19,"column":1}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":37},"end":{"line":18,"column":38}},"loc":{"start":{"line":18,"column":45},"end":{"line":18,"column":56}},"line":18},"3":{"name":"(anonymous_3)","decl":{"start":{"line":21,"column":25},"end":{"line":21,"column":26}},"loc":{"start":{"line":21,"column":40},"end":{"line":25,"column":1}},"line":21},"4":{"name":"(anonymous_4)","decl":{"start":{"line":23,"column":19},"end":{"line":23,"column":20}},"loc":{"start":{"line":23,"column":36},"end":{"line":24,"column":39}},"line":23},"5":{"name":"(anonymous_5)","decl":{"start":{"line":28,"column":26},"end":{"line":28,"column":27}},"loc":{"start":{"line":28,"column":41},"end":{"line":31,"column":1}},"line":28},"6":{"name":"(anonymous_6)","decl":{"start":{"line":34,"column":28},"end":{"line":34,"column":29}},"loc":{"start":{"line":34,"column":43},"end":{"line":38,"column":1}},"line":34},"7":{"name":"(anonymous_7)","decl":{"start":{"line":41,"column":23},"end":{"line":41,"column":24}},"loc":{"start":{"line":41,"column":46},"end":{"line":43,"column":1}},"line":41},"8":{"name":"(anonymous_8)","decl":{"start":{"line":42,"column":42},"end":{"line":42,"column":43}},"loc":{"start":{"line":42,"column":50},"end":{"line":42,"column":76}},"line":42},"9":{"name":"(anonymous_9)","decl":{"start":{"line":49,"column":26},"end":{"line":49,"column":27}},"loc":{"start":{"line":49,"column":41},"end":{"line":93,"column":1}},"line":49},"10":{"name":"(anonymous_10)","decl":{"start":{"line":97,"column":26},"end":{"line":97,"column":27}},"loc":{"start":{"line":97,"column":46},"end":{"line":133,"column":1}},"line":97},"11":{"name":"(anonymous_11)","decl":{"start":{"line":138,"column":27},"end":{"line":138,"column":28}},"loc":{"start":{"line":138,"column":42},"end":{"line":140,"column":1}},"line":138},"12":{"name":"(anonymous_12)","decl":{"start":{"line":144,"column":23},"end":{"line":144,"column":24}},"loc":{"start":{"line":144,"column":38},"end":{"line":158,"column":1}},"line":144},"13":{"name":"(anonymous_13)","decl":{"start":{"line":162,"column":23},"end":{"line":162,"column":24}},"loc":{"start":{"line":162,"column":39},"end":{"line":170,"column":1}},"line":162},"14":{"name":"(anonymous_14)","decl":{"start":{"line":175,"column":23},"end":{"line":175,"column":24}},"loc":{"start":{"line":175,"column":38},"end":{"line":183,"column":1}},"line":175},"15":{"name":"(anonymous_15)","decl":{"start":{"line":187,"column":23},"end":{"line":187,"column":24}},"loc":{"start":{"line":187,"column":49},"end":{"line":195,"column":1}},"line":187},"16":{"name":"(anonymous_16)","decl":{"start":{"line":200,"column":21},"end":{"line":200,"column":22}},"loc":{"start":{"line":200,"column":36},"end":{"line":209,"column":1}},"line":200},"17":{"name":"(anonymous_17)","decl":{"start":{"line":212,"column":21},"end":{"line":212,"column":22}},"loc":{"start":{"line":212,"column":37},"end":{"line":230,"column":1}},"line":212},"18":{"name":"(anonymous_18)","decl":{"start":{"line":220,"column":42},"end":{"line":220,"column":43}},"loc":{"start":{"line":220,"column":51},"end":{"line":226,"column":5}},"line":220},"19":{"name":"(anonymous_19)","decl":{"start":{"line":234,"column":23},"end":{"line":234,"column":24}},"loc":{"start":{"line":234,"column":38},"end":{"line":240,"column":1}},"line":234},"20":{"name":"(anonymous_20)","decl":{"start":{"line":243,"column":23},"end":{"line":243,"column":24}},"loc":{"start":{"line":243,"column":39},"end":{"line":258,"column":1}},"line":243},"21":{"name":"(anonymous_21)","decl":{"start":{"line":251,"column":31},"end":{"line":251,"column":32}},"loc":{"start":{"line":251,"column":37},"end":{"line":255,"column":5}},"line":251},"22":{"name":"(anonymous_22)","decl":{"start":{"line":262,"column":26},"end":{"line":262,"column":27}},"loc":{"start":{"line":262,"column":41},"end":{"line":275,"column":1}},"line":262},"23":{"name":"(anonymous_23)","decl":{"start":{"line":279,"column":26},"end":{"line":279,"column":27}},"loc":{"start":{"line":279,"column":41},"end":{"line":285,"column":1}},"line":279},"24":{"name":"(anonymous_24)","decl":{"start":{"line":283,"column":21},"end":{"line":283,"column":22}},"loc":{"start":{"line":283,"column":29},"end":{"line":283,"column":47}},"line":283},"25":{"name":"(anonymous_25)","decl":{"start":{"line":289,"column":18},"end":{"line":289,"column":19}},"loc":{"start":{"line":289,"column":41},"end":{"line":294,"column":1}},"line":289},"26":{"name":"(anonymous_26)","decl":{"start":{"line":297,"column":28},"end":{"line":297,"column":29}},"loc":{"start":{"line":297,"column":43},"end":{"line":303,"column":1}},"line":297},"27":{"name":"(anonymous_27)","decl":{"start":{"line":308,"column":29},"end":{"line":308,"column":30}},"loc":{"start":{"line":308,"column":65},"end":{"line":316,"column":1}},"line":308},"28":{"name":"(anonymous_28)","decl":{"start":{"line":319,"column":31},"end":{"line":319,"column":32}},"loc":{"start":{"line":319,"column":59},"end":{"line":325,"column":1}},"line":319},"29":{"name":"(anonymous_29)","decl":{"start":{"line":321,"column":30},"end":{"line":321,"column":31}},"loc":{"start":{"line":321,"column":36},"end":{"line":323,"column":3}},"line":321},"30":{"name":"(anonymous_30)","decl":{"start":{"line":329,"column":27},"end":{"line":329,"column":28}},"loc":{"start":{"line":329,"column":42},"end":{"line":337,"column":1}},"line":329},"31":{"name":"(anonymous_31)","decl":{"start":{"line":339,"column":27},"end":{"line":339,"column":28}},"loc":{"start":{"line":339,"column":48},"end":{"line":347,"column":1}},"line":339},"32":{"name":"(anonymous_32)","decl":{"start":{"line":351,"column":32},"end":{"line":351,"column":33}},"loc":{"start":{"line":351,"column":52},"end":{"line":363,"column":1}},"line":351},"33":{"name":"(anonymous_33)","decl":{"start":{"line":365,"column":32},"end":{"line":365,"column":33}},"loc":{"start":{"line":365,"column":52},"end":{"line":372,"column":1}},"line":365},"34":{"name":"(anonymous_34)","decl":{"start":{"line":375,"column":31},"end":{"line":375,"column":32}},"loc":{"start":{"line":375,"column":67},"end":{"line":379,"column":1}},"line":375},"35":{"name":"(anonymous_35)","decl":{"start":{"line":384,"column":28},"end":{"line":384,"column":29}},"loc":{"start":{"line":384,"column":64},"end":{"line":396,"column":1}},"line":384},"36":{"name":"(anonymous_36)","decl":{"start":{"line":399,"column":30},"end":{"line":399,"column":31}},"loc":{"start":{"line":399,"column":47},"end":{"line":406,"column":1}},"line":399},"37":{"name":"(anonymous_37)","decl":{"start":{"line":409,"column":30},"end":{"line":409,"column":31}},"loc":{"start":{"line":409,"column":53},"end":{"line":461,"column":1}},"line":409},"38":{"name":"(anonymous_38)","decl":{"start":{"line":443,"column":58},"end":{"line":443,"column":59}},"loc":{"start":{"line":443,"column":66},"end":{"line":445,"column":3}},"line":443},"39":{"name":"(anonymous_39)","decl":{"start":{"line":448,"column":29},"end":{"line":448,"column":30}},"loc":{"start":{"line":448,"column":38},"end":{"line":458,"column":3}},"line":448},"40":{"name":"(anonymous_40)","decl":{"start":{"line":449,"column":27},"end":{"line":449,"column":28}},"loc":{"start":{"line":449,"column":32},"end":{"line":457,"column":5}},"line":449},"41":{"name":"(anonymous_41)","decl":{"start":{"line":450,"column":48},"end":{"line":450,"column":49}},"loc":{"start":{"line":450,"column":68},"end":{"line":453,"column":7}},"line":450},"42":{"name":"(anonymous_42)","decl":{"start":{"line":465,"column":31},"end":{"line":465,"column":32}},"loc":{"start":{"line":465,"column":52},"end":{"line":505,"column":1}},"line":465},"43":{"name":"(anonymous_43)","decl":{"start":{"line":472,"column":25},"end":{"line":472,"column":26}},"loc":{"start":{"line":472,"column":34},"end":{"line":477,"column":3}},"line":472},"44":{"name":"(anonymous_44)","decl":{"start":{"line":483,"column":22},"end":{"line":483,"column":23}},"loc":{"start":{"line":483,"column":31},"end":{"line":487,"column":3}},"line":483},"45":{"name":"(anonymous_45)","decl":{"start":{"line":489,"column":22},"end":{"line":489,"column":23}},"loc":{"start":{"line":489,"column":31},"end":{"line":493,"column":3}},"line":489},"46":{"name":"(anonymous_46)","decl":{"start":{"line":499,"column":34},"end":{"line":499,"column":35}},"loc":{"start":{"line":499,"column":47},"end":{"line":501,"column":5}},"line":499},"47":{"name":"(anonymous_47)","decl":{"start":{"line":509,"column":38},"end":{"line":509,"column":39}},"loc":{"start":{"line":509,"column":61},"end":{"line":574,"column":1}},"line":509},"48":{"name":"(anonymous_48)","decl":{"start":{"line":517,"column":9},"end":{"line":517,"column":10}},"loc":{"start":{"line":517,"column":17},"end":{"line":517,"column":46}},"line":517},"49":{"name":"(anonymous_49)","decl":{"start":{"line":518,"column":12},"end":{"line":518,"column":13}},"loc":{"start":{"line":518,"column":21},"end":{"line":518,"column":48}},"line":518},"50":{"name":"(anonymous_50)","decl":{"start":{"line":523,"column":9},"end":{"line":523,"column":10}},"loc":{"start":{"line":523,"column":17},"end":{"line":526,"column":5}},"line":523},"51":{"name":"(anonymous_51)","decl":{"start":{"line":525,"column":23},"end":{"line":525,"column":24}},"loc":{"start":{"line":525,"column":31},"end":{"line":525,"column":49}},"line":525},"52":{"name":"(anonymous_52)","decl":{"start":{"line":531,"column":29},"end":{"line":531,"column":30}},"loc":{"start":{"line":531,"column":38},"end":{"line":550,"column":3}},"line":531},"53":{"name":"(anonymous_53)","decl":{"start":{"line":569,"column":31},"end":{"line":569,"column":32}},"loc":{"start":{"line":569,"column":41},"end":{"line":571,"column":5}},"line":569},"54":{"name":"(anonymous_54)","decl":{"start":{"line":577,"column":31},"end":{"line":577,"column":32}},"loc":{"start":{"line":577,"column":54},"end":{"line":602,"column":1}},"line":577},"55":{"name":"(anonymous_55)","decl":{"start":{"line":583,"column":9},"end":{"line":583,"column":10}},"loc":{"start":{"line":583,"column":17},"end":{"line":583,"column":46}},"line":583},"56":{"name":"(anonymous_56)","decl":{"start":{"line":584,"column":12},"end":{"line":584,"column":13}},"loc":{"start":{"line":584,"column":19},"end":{"line":584,"column":44}},"line":584},"57":{"name":"(anonymous_57)","decl":{"start":{"line":604,"column":31},"end":{"line":604,"column":32}},"loc":{"start":{"line":604,"column":56},"end":{"line":617,"column":1}},"line":604},"58":{"name":"(anonymous_58)","decl":{"start":{"line":622,"column":21},"end":{"line":622,"column":22}},"loc":{"start":{"line":622,"column":44},"end":{"line":636,"column":1}},"line":622},"59":{"name":"(anonymous_59)","decl":{"start":{"line":630,"column":9},"end":{"line":630,"column":10}},"loc":{"start":{"line":630,"column":17},"end":{"line":630,"column":46}},"line":630},"60":{"name":"(anonymous_60)","decl":{"start":{"line":631,"column":12},"end":{"line":631,"column":13}},"loc":{"start":{"line":631,"column":25},"end":{"line":631,"column":55}},"line":631},"61":{"name":"(anonymous_61)","decl":{"start":{"line":641,"column":32},"end":{"line":641,"column":33}},"loc":{"start":{"line":641,"column":55},"end":{"line":670,"column":1}},"line":641},"62":{"name":"(anonymous_62)","decl":{"start":{"line":677,"column":32},"end":{"line":677,"column":33}},"loc":{"start":{"line":677,"column":54},"end":{"line":696,"column":1}},"line":677},"63":{"name":"(anonymous_63)","decl":{"start":{"line":702,"column":29},"end":{"line":702,"column":30}},"loc":{"start":{"line":702,"column":40},"end":{"line":704,"column":1}},"line":702},"64":{"name":"(anonymous_64)","decl":{"start":{"line":711,"column":35},"end":{"line":711,"column":36}},"loc":{"start":{"line":711,"column":71},"end":{"line":726,"column":1}},"line":711},"65":{"name":"(anonymous_65)","decl":{"start":{"line":729,"column":24},"end":{"line":729,"column":25}},"loc":{"start":{"line":729,"column":60},"end":{"line":747,"column":1}},"line":729},"66":{"name":"(anonymous_66)","decl":{"start":{"line":749,"column":19},"end":{"line":749,"column":20}},"loc":{"start":{"line":749,"column":42},"end":{"line":753,"column":1}},"line":749},"67":{"name":"(anonymous_67)","decl":{"start":{"line":755,"column":22},"end":{"line":755,"column":23}},"loc":{"start":{"line":755,"column":45},"end":{"line":757,"column":1}},"line":755},"68":{"name":"(anonymous_68)","decl":{"start":{"line":759,"column":22},"end":{"line":759,"column":23}},"loc":{"start":{"line":759,"column":45},"end":{"line":768,"column":1}},"line":759},"69":{"name":"(anonymous_69)","decl":{"start":{"line":770,"column":22},"end":{"line":770,"column":23}},"loc":{"start":{"line":770,"column":45},"end":{"line":781,"column":1}},"line":770},"70":{"name":"(anonymous_70)","decl":{"start":{"line":784,"column":22},"end":{"line":784,"column":23}},"loc":{"start":{"line":784,"column":37},"end":{"line":796,"column":1}},"line":784}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":37},"end":{"line":24,"column":22}},"type":"cond-expr","locations":[{"start":{"line":24,"column":4},"end":{"line":24,"column":15}},{"start":{"line":24,"column":18},"end":{"line":24,"column":22}}],"line":23},"1":{"loc":{"start":{"line":30,"column":9},"end":{"line":30,"column":32}},"type":"binary-expr","locations":[{"start":{"line":30,"column":9},"end":{"line":30,"column":17}},{"start":{"line":30,"column":21},"end":{"line":30,"column":32}}],"line":30},"2":{"loc":{"start":{"line":52,"column":2},"end":{"line":56,"column":3}},"type":"if","locations":[{"start":{"line":52,"column":2},"end":{"line":56,"column":3}},{"start":{"line":52,"column":2},"end":{"line":56,"column":3}}],"line":52},"3":{"loc":{"start":{"line":60,"column":15},"end":{"line":60,"column":58}},"type":"binary-expr","locations":[{"start":{"line":60,"column":15},"end":{"line":60,"column":46}},{"start":{"line":60,"column":50},"end":{"line":60,"column":58}}],"line":60},"4":{"loc":{"start":{"line":71,"column":4},"end":{"line":90,"column":5}},"type":"switch","locations":[{"start":{"line":72,"column":6},"end":{"line":74,"column":14}},{"start":{"line":75,"column":6},"end":{"line":77,"column":14}},{"start":{"line":78,"column":6},"end":{"line":80,"column":14}},{"start":{"line":81,"column":6},"end":{"line":84,"column":14}},{"start":{"line":85,"column":6},"end":{"line":89,"column":14}}],"line":71},"5":{"loc":{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},"type":"if","locations":[{"start":{"line":86,"column":8},"end":{"line":88,"column":9}},{"start":{"line":86,"column":8},"end":{"line":88,"column":9}}],"line":86},"6":{"loc":{"start":{"line":102,"column":2},"end":{"line":108,"column":3}},"type":"if","locations":[{"start":{"line":102,"column":2},"end":{"line":108,"column":3}},{"start":{"line":102,"column":2},"end":{"line":108,"column":3}}],"line":102},"7":{"loc":{"start":{"line":104,"column":9},"end":{"line":108,"column":3}},"type":"if","locations":[{"start":{"line":104,"column":9},"end":{"line":108,"column":3}},{"start":{"line":104,"column":9},"end":{"line":108,"column":3}}],"line":104},"8":{"loc":{"start":{"line":111,"column":11},"end":{"line":111,"column":44}},"type":"binary-expr","locations":[{"start":{"line":111,"column":11},"end":{"line":111,"column":28}},{"start":{"line":111,"column":32},"end":{"line":111,"column":44}}],"line":111},"9":{"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":3}},"type":"if","locations":[{"start":{"line":117,"column":2},"end":{"line":123,"column":3}},{"start":{"line":117,"column":2},"end":{"line":123,"column":3}}],"line":117},"10":{"loc":{"start":{"line":117,"column":6},"end":{"line":118,"column":27}},"type":"binary-expr","locations":[{"start":{"line":117,"column":6},"end":{"line":117,"column":21}},{"start":{"line":117,"column":25},"end":{"line":117,"column":49}},{"start":{"line":118,"column":6},"end":{"line":118,"column":27}}],"line":117},"11":{"loc":{"start":{"line":124,"column":2},"end":{"line":127,"column":3}},"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":127,"column":3}},{"start":{"line":124,"column":2},"end":{"line":127,"column":3}}],"line":124},"12":{"loc":{"start":{"line":124,"column":6},"end":{"line":124,"column":69}},"type":"binary-expr","locations":[{"start":{"line":124,"column":6},"end":{"line":124,"column":23}},{"start":{"line":124,"column":27},"end":{"line":124,"column":69}}],"line":124},"13":{"loc":{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},"type":"if","locations":[{"start":{"line":128,"column":2},"end":{"line":131,"column":3}},{"start":{"line":128,"column":2},"end":{"line":131,"column":3}}],"line":128},"14":{"loc":{"start":{"line":128,"column":6},"end":{"line":128,"column":51}},"type":"binary-expr","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":32}},{"start":{"line":128,"column":36},"end":{"line":128,"column":51}}],"line":128},"15":{"loc":{"start":{"line":130,"column":13},"end":{"line":130,"column":58}},"type":"binary-expr","locations":[{"start":{"line":130,"column":13},"end":{"line":130,"column":39}},{"start":{"line":130,"column":43},"end":{"line":130,"column":58}}],"line":130},"16":{"loc":{"start":{"line":154,"column":20},"end":{"line":154,"column":67}},"type":"cond-expr","locations":[{"start":{"line":154,"column":41},"end":{"line":154,"column":63}},{"start":{"line":154,"column":66},"end":{"line":154,"column":67}}],"line":154},"17":{"loc":{"start":{"line":164,"column":2},"end":{"line":166,"column":3}},"type":"if","locations":[{"start":{"line":164,"column":2},"end":{"line":166,"column":3}},{"start":{"line":164,"column":2},"end":{"line":166,"column":3}}],"line":164},"18":{"loc":{"start":{"line":167,"column":19},"end":{"line":167,"column":59}},"type":"binary-expr","locations":[{"start":{"line":167,"column":19},"end":{"line":167,"column":33}},{"start":{"line":167,"column":37},"end":{"line":167,"column":54}},{"start":{"line":167,"column":58},"end":{"line":167,"column":59}}],"line":167},"19":{"loc":{"start":{"line":169,"column":7},"end":{"line":169,"column":43}},"type":"cond-expr","locations":[{"start":{"line":169,"column":24},"end":{"line":169,"column":38}},{"start":{"line":169,"column":41},"end":{"line":169,"column":43}}],"line":169},"20":{"loc":{"start":{"line":179,"column":15},"end":{"line":179,"column":78}},"type":"cond-expr","locations":[{"start":{"line":179,"column":43},"end":{"line":179,"column":65}},{"start":{"line":179,"column":68},"end":{"line":179,"column":78}}],"line":179},"21":{"loc":{"start":{"line":188,"column":24},"end":{"line":188,"column":73}},"type":"binary-expr","locations":[{"start":{"line":188,"column":24},"end":{"line":188,"column":42}},{"start":{"line":188,"column":46},"end":{"line":188,"column":73}}],"line":188},"22":{"loc":{"start":{"line":189,"column":7},"end":{"line":191,"column":12}},"type":"cond-expr","locations":[{"start":{"line":190,"column":10},"end":{"line":190,"column":41}},{"start":{"line":191,"column":10},"end":{"line":191,"column":12}}],"line":189},"23":{"loc":{"start":{"line":189,"column":7},"end":{"line":189,"column":76}},"type":"binary-expr","locations":[{"start":{"line":189,"column":7},"end":{"line":189,"column":32}},{"start":{"line":189,"column":36},"end":{"line":189,"column":76}}],"line":189},"24":{"loc":{"start":{"line":193,"column":7},"end":{"line":193,"column":73}},"type":"cond-expr","locations":[{"start":{"line":193,"column":36},"end":{"line":193,"column":68}},{"start":{"line":193,"column":71},"end":{"line":193,"column":73}}],"line":193},"25":{"loc":{"start":{"line":215,"column":2},"end":{"line":217,"column":3}},"type":"if","locations":[{"start":{"line":215,"column":2},"end":{"line":217,"column":3}},{"start":{"line":215,"column":2},"end":{"line":217,"column":3}}],"line":215},"26":{"loc":{"start":{"line":218,"column":2},"end":{"line":228,"column":3}},"type":"if","locations":[{"start":{"line":218,"column":2},"end":{"line":228,"column":3}},{"start":{"line":218,"column":2},"end":{"line":228,"column":3}}],"line":218},"27":{"loc":{"start":{"line":218,"column":6},"end":{"line":218,"column":62}},"type":"binary-expr","locations":[{"start":{"line":218,"column":6},"end":{"line":218,"column":22}},{"start":{"line":218,"column":26},"end":{"line":218,"column":62}}],"line":218},"28":{"loc":{"start":{"line":221,"column":6},"end":{"line":225,"column":7}},"type":"if","locations":[{"start":{"line":221,"column":6},"end":{"line":225,"column":7}},{"start":{"line":221,"column":6},"end":{"line":225,"column":7}}],"line":221},"29":{"loc":{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},"type":"if","locations":[{"start":{"line":246,"column":2},"end":{"line":248,"column":3}},{"start":{"line":246,"column":2},"end":{"line":248,"column":3}}],"line":246},"30":{"loc":{"start":{"line":249,"column":2},"end":{"line":256,"column":3}},"type":"if","locations":[{"start":{"line":249,"column":2},"end":{"line":256,"column":3}},{"start":{"line":249,"column":2},"end":{"line":256,"column":3}}],"line":249},"31":{"loc":{"start":{"line":249,"column":6},"end":{"line":249,"column":53}},"type":"binary-expr","locations":[{"start":{"line":249,"column":6},"end":{"line":249,"column":24}},{"start":{"line":249,"column":28},"end":{"line":249,"column":53}}],"line":249},"32":{"loc":{"start":{"line":253,"column":7},"end":{"line":253,"column":68}},"type":"cond-expr","locations":[{"start":{"line":253,"column":45},"end":{"line":253,"column":63}},{"start":{"line":253,"column":66},"end":{"line":253,"column":68}}],"line":253},"33":{"loc":{"start":{"line":253,"column":7},"end":{"line":253,"column":42}},"type":"binary-expr","locations":[{"start":{"line":253,"column":7},"end":{"line":253,"column":19}},{"start":{"line":253,"column":23},"end":{"line":253,"column":42}}],"line":253},"34":{"loc":{"start":{"line":268,"column":2},"end":{"line":273,"column":3}},"type":"if","locations":[{"start":{"line":268,"column":2},"end":{"line":273,"column":3}},{"start":{"line":268,"column":2},"end":{"line":273,"column":3}}],"line":268},"35":{"loc":{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},"type":"if","locations":[{"start":{"line":291,"column":2},"end":{"line":293,"column":3}},{"start":{"line":291,"column":2},"end":{"line":293,"column":3}}],"line":291},"36":{"loc":{"start":{"line":342,"column":5},"end":{"line":344,"column":28}},"type":"cond-expr","locations":[{"start":{"line":343,"column":8},"end":{"line":343,"column":59}},{"start":{"line":344,"column":8},"end":{"line":344,"column":28}}],"line":342},"37":{"loc":{"start":{"line":345,"column":5},"end":{"line":345,"column":77}},"type":"cond-expr","locations":[{"start":{"line":345,"column":32},"end":{"line":345,"column":72}},{"start":{"line":345,"column":75},"end":{"line":345,"column":77}}],"line":345},"38":{"loc":{"start":{"line":352,"column":2},"end":{"line":354,"column":3}},"type":"if","locations":[{"start":{"line":352,"column":2},"end":{"line":354,"column":3}},{"start":{"line":352,"column":2},"end":{"line":354,"column":3}}],"line":352},"39":{"loc":{"start":{"line":360,"column":14},"end":{"line":360,"column":59}},"type":"cond-expr","locations":[{"start":{"line":360,"column":25},"end":{"line":360,"column":47}},{"start":{"line":360,"column":50},"end":{"line":360,"column":59}}],"line":360},"40":{"loc":{"start":{"line":361,"column":15},"end":{"line":361,"column":60}},"type":"cond-expr","locations":[{"start":{"line":361,"column":26},"end":{"line":361,"column":48}},{"start":{"line":361,"column":51},"end":{"line":361,"column":60}}],"line":361},"41":{"loc":{"start":{"line":368,"column":5},"end":{"line":368,"column":55}},"type":"cond-expr","locations":[{"start":{"line":368,"column":26},"end":{"line":368,"column":50}},{"start":{"line":368,"column":53},"end":{"line":368,"column":55}}],"line":368},"42":{"loc":{"start":{"line":369,"column":5},"end":{"line":371,"column":10}},"type":"cond-expr","locations":[{"start":{"line":370,"column":8},"end":{"line":370,"column":60}},{"start":{"line":371,"column":8},"end":{"line":371,"column":10}}],"line":369},"43":{"loc":{"start":{"line":369,"column":5},"end":{"line":369,"column":46}},"type":"binary-expr","locations":[{"start":{"line":369,"column":5},"end":{"line":369,"column":23}},{"start":{"line":369,"column":27},"end":{"line":369,"column":46}}],"line":369},"44":{"loc":{"start":{"line":389,"column":2},"end":{"line":391,"column":3}},"type":"if","locations":[{"start":{"line":389,"column":2},"end":{"line":391,"column":3}},{"start":{"line":389,"column":2},"end":{"line":391,"column":3}}],"line":389},"45":{"loc":{"start":{"line":389,"column":8},"end":{"line":389,"column":20}},"type":"binary-expr","locations":[{"start":{"line":389,"column":8},"end":{"line":389,"column":13}},{"start":{"line":389,"column":17},"end":{"line":389,"column":20}}],"line":389},"46":{"loc":{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},"type":"if","locations":[{"start":{"line":402,"column":2},"end":{"line":404,"column":3}},{"start":{"line":402,"column":2},"end":{"line":404,"column":3}}],"line":402},"47":{"loc":{"start":{"line":422,"column":4},"end":{"line":441,"column":5}},"type":"if","locations":[{"start":{"line":422,"column":4},"end":{"line":441,"column":5}},{"start":{"line":422,"column":4},"end":{"line":441,"column":5}}],"line":422},"48":{"loc":{"start":{"line":427,"column":25},"end":{"line":427,"column":73}},"type":"cond-expr","locations":[{"start":{"line":427,"column":40},"end":{"line":427,"column":68}},{"start":{"line":427,"column":71},"end":{"line":427,"column":73}}],"line":427},"49":{"loc":{"start":{"line":433,"column":6},"end":{"line":440,"column":7}},"type":"switch","locations":[{"start":{"line":434,"column":8},"end":{"line":434,"column":19}},{"start":{"line":435,"column":8},"end":{"line":437,"column":16}},{"start":{"line":438,"column":8},"end":{"line":439,"column":16}}],"line":433},"50":{"loc":{"start":{"line":451,"column":15},"end":{"line":452,"column":53}},"type":"binary-expr","locations":[{"start":{"line":451,"column":15},"end":{"line":451,"column":48}},{"start":{"line":452,"column":10},"end":{"line":452,"column":53}}],"line":451},"51":{"loc":{"start":{"line":454,"column":6},"end":{"line":456,"column":7}},"type":"if","locations":[{"start":{"line":454,"column":6},"end":{"line":456,"column":7}},{"start":{"line":454,"column":6},"end":{"line":456,"column":7}}],"line":454},"52":{"loc":{"start":{"line":470,"column":9},"end":{"line":470,"column":43}},"type":"cond-expr","locations":[{"start":{"line":470,"column":34},"end":{"line":470,"column":37}},{"start":{"line":470,"column":40},"end":{"line":470,"column":43}}],"line":470},"53":{"loc":{"start":{"line":473,"column":4},"end":{"line":475,"column":5}},"type":"if","locations":[{"start":{"line":473,"column":4},"end":{"line":475,"column":5}},{"start":{"line":473,"column":4},"end":{"line":475,"column":5}}],"line":473},"54":{"loc":{"start":{"line":490,"column":4},"end":{"line":492,"column":5}},"type":"if","locations":[{"start":{"line":490,"column":4},"end":{"line":492,"column":5}},{"start":{"line":490,"column":4},"end":{"line":492,"column":5}}],"line":490},"55":{"loc":{"start":{"line":494,"column":2},"end":{"line":496,"column":3}},"type":"if","locations":[{"start":{"line":494,"column":2},"end":{"line":496,"column":3}},{"start":{"line":494,"column":2},"end":{"line":496,"column":3}}],"line":494},"56":{"loc":{"start":{"line":498,"column":2},"end":{"line":502,"column":3}},"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":502,"column":3}},{"start":{"line":498,"column":2},"end":{"line":502,"column":3}}],"line":498},"57":{"loc":{"start":{"line":519,"column":22},"end":{"line":519,"column":55}},"type":"binary-expr","locations":[{"start":{"line":519,"column":22},"end":{"line":519,"column":38}},{"start":{"line":519,"column":42},"end":{"line":519,"column":55}}],"line":519},"58":{"loc":{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},"type":"if","locations":[{"start":{"line":527,"column":2},"end":{"line":529,"column":3}},{"start":{"line":527,"column":2},"end":{"line":529,"column":3}}],"line":527},"59":{"loc":{"start":{"line":527,"column":6},"end":{"line":527,"column":76}},"type":"binary-expr","locations":[{"start":{"line":527,"column":6},"end":{"line":527,"column":22}},{"start":{"line":527,"column":26},"end":{"line":527,"column":45}},{"start":{"line":527,"column":49},"end":{"line":527,"column":76}}],"line":527},"60":{"loc":{"start":{"line":532,"column":4},"end":{"line":549,"column":5}},"type":"if","locations":[{"start":{"line":532,"column":4},"end":{"line":549,"column":5}},{"start":{"line":532,"column":4},"end":{"line":549,"column":5}}],"line":532},"61":{"loc":{"start":{"line":532,"column":8},"end":{"line":532,"column":66}},"type":"binary-expr","locations":[{"start":{"line":532,"column":8},"end":{"line":532,"column":42}},{"start":{"line":532,"column":46},"end":{"line":532,"column":66}}],"line":532},"62":{"loc":{"start":{"line":537,"column":6},"end":{"line":539,"column":7}},"type":"if","locations":[{"start":{"line":537,"column":6},"end":{"line":539,"column":7}},{"start":{"line":537,"column":6},"end":{"line":539,"column":7}}],"line":537},"63":{"loc":{"start":{"line":537,"column":10},"end":{"line":537,"column":38}},"type":"binary-expr","locations":[{"start":{"line":537,"column":10},"end":{"line":537,"column":21}},{"start":{"line":537,"column":25},"end":{"line":537,"column":38}}],"line":537},"64":{"loc":{"start":{"line":541,"column":6},"end":{"line":548,"column":7}},"type":"if","locations":[{"start":{"line":541,"column":6},"end":{"line":548,"column":7}},{"start":{"line":541,"column":6},"end":{"line":548,"column":7}}],"line":541},"65":{"loc":{"start":{"line":545,"column":21},"end":{"line":545,"column":53}},"type":"cond-expr","locations":[{"start":{"line":545,"column":33},"end":{"line":545,"column":45}},{"start":{"line":545,"column":48},"end":{"line":545,"column":53}}],"line":545},"66":{"loc":{"start":{"line":551,"column":2},"end":{"line":555,"column":3}},"type":"if","locations":[{"start":{"line":551,"column":2},"end":{"line":555,"column":3}},{"start":{"line":551,"column":2},"end":{"line":555,"column":3}}],"line":551},"67":{"loc":{"start":{"line":551,"column":6},"end":{"line":551,"column":52}},"type":"binary-expr","locations":[{"start":{"line":551,"column":6},"end":{"line":551,"column":37}},{"start":{"line":551,"column":41},"end":{"line":551,"column":52}}],"line":551},"68":{"loc":{"start":{"line":559,"column":2},"end":{"line":572,"column":3}},"type":"if","locations":[{"start":{"line":559,"column":2},"end":{"line":572,"column":3}},{"start":{"line":559,"column":2},"end":{"line":572,"column":3}}],"line":559},"69":{"loc":{"start":{"line":560,"column":4},"end":{"line":568,"column":5}},"type":"if","locations":[{"start":{"line":560,"column":4},"end":{"line":568,"column":5}},{"start":{"line":560,"column":4},"end":{"line":568,"column":5}}],"line":560},"70":{"loc":{"start":{"line":562,"column":11},"end":{"line":568,"column":5}},"type":"if","locations":[{"start":{"line":562,"column":11},"end":{"line":568,"column":5}},{"start":{"line":562,"column":11},"end":{"line":568,"column":5}}],"line":562},"71":{"loc":{"start":{"line":585,"column":2},"end":{"line":588,"column":3}},"type":"if","locations":[{"start":{"line":585,"column":2},"end":{"line":588,"column":3}},{"start":{"line":585,"column":2},"end":{"line":588,"column":3}}],"line":585},"72":{"loc":{"start":{"line":606,"column":2},"end":{"line":608,"column":3}},"type":"if","locations":[{"start":{"line":606,"column":2},"end":{"line":608,"column":3}},{"start":{"line":606,"column":2},"end":{"line":608,"column":3}}],"line":606},"73":{"loc":{"start":{"line":609,"column":2},"end":{"line":611,"column":3}},"type":"if","locations":[{"start":{"line":609,"column":2},"end":{"line":611,"column":3}},{"start":{"line":609,"column":2},"end":{"line":611,"column":3}}],"line":609},"74":{"loc":{"start":{"line":612,"column":2},"end":{"line":615,"column":3}},"type":"if","locations":[{"start":{"line":612,"column":2},"end":{"line":615,"column":3}},{"start":{"line":612,"column":2},"end":{"line":615,"column":3}}],"line":612},"75":{"loc":{"start":{"line":612,"column":6},"end":{"line":612,"column":63}},"type":"binary-expr","locations":[{"start":{"line":612,"column":6},"end":{"line":612,"column":39}},{"start":{"line":612,"column":43},"end":{"line":612,"column":63}}],"line":612},"76":{"loc":{"start":{"line":625,"column":2},"end":{"line":628,"column":3}},"type":"if","locations":[{"start":{"line":625,"column":2},"end":{"line":628,"column":3}},{"start":{"line":625,"column":2},"end":{"line":628,"column":3}}],"line":625},"77":{"loc":{"start":{"line":632,"column":2},"end":{"line":635,"column":3}},"type":"if","locations":[{"start":{"line":632,"column":2},"end":{"line":635,"column":3}},{"start":{"line":632,"column":2},"end":{"line":635,"column":3}}],"line":632},"78":{"loc":{"start":{"line":645,"column":2},"end":{"line":647,"column":3}},"type":"if","locations":[{"start":{"line":645,"column":2},"end":{"line":647,"column":3}},{"start":{"line":645,"column":2},"end":{"line":647,"column":3}}],"line":645},"79":{"loc":{"start":{"line":648,"column":2},"end":{"line":650,"column":3}},"type":"if","locations":[{"start":{"line":648,"column":2},"end":{"line":650,"column":3}},{"start":{"line":648,"column":2},"end":{"line":650,"column":3}}],"line":648},"80":{"loc":{"start":{"line":652,"column":2},"end":{"line":658,"column":3}},"type":"if","locations":[{"start":{"line":652,"column":2},"end":{"line":658,"column":3}},{"start":{"line":652,"column":2},"end":{"line":658,"column":3}}],"line":652},"81":{"loc":{"start":{"line":660,"column":2},"end":{"line":669,"column":3}},"type":"if","locations":[{"start":{"line":660,"column":2},"end":{"line":669,"column":3}},{"start":{"line":660,"column":2},"end":{"line":669,"column":3}}],"line":660},"82":{"loc":{"start":{"line":679,"column":2},"end":{"line":691,"column":3}},"type":"if","locations":[{"start":{"line":679,"column":2},"end":{"line":691,"column":3}},{"start":{"line":679,"column":2},"end":{"line":691,"column":3}}],"line":679},"83":{"loc":{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},"type":"if","locations":[{"start":{"line":692,"column":2},"end":{"line":694,"column":3}},{"start":{"line":692,"column":2},"end":{"line":694,"column":3}}],"line":692},"84":{"loc":{"start":{"line":713,"column":18},"end":{"line":713,"column":53}},"type":"cond-expr","locations":[{"start":{"line":713,"column":42},"end":{"line":713,"column":49}},{"start":{"line":713,"column":52},"end":{"line":713,"column":53}}],"line":713},"85":{"loc":{"start":{"line":714,"column":2},"end":{"line":718,"column":3}},"type":"if","locations":[{"start":{"line":714,"column":2},"end":{"line":718,"column":3}},{"start":{"line":714,"column":2},"end":{"line":718,"column":3}}],"line":714},"86":{"loc":{"start":{"line":719,"column":15},"end":{"line":719,"column":46}},"type":"binary-expr","locations":[{"start":{"line":719,"column":15},"end":{"line":719,"column":23}},{"start":{"line":719,"column":27},"end":{"line":719,"column":46}}],"line":719},"87":{"loc":{"start":{"line":733,"column":4},"end":{"line":741,"column":5}},"type":"switch","locations":[{"start":{"line":734,"column":6},"end":{"line":734,"column":24}},{"start":{"line":735,"column":6},"end":{"line":735,"column":24}},{"start":{"line":736,"column":6},"end":{"line":736,"column":24}},{"start":{"line":737,"column":6},"end":{"line":738,"column":37}},{"start":{"line":739,"column":6},"end":{"line":739,"column":14}}],"line":733},"88":{"loc":{"start":{"line":743,"column":2},"end":{"line":745,"column":3}},"type":"if","locations":[{"start":{"line":743,"column":2},"end":{"line":745,"column":3}},{"start":{"line":743,"column":2},"end":{"line":745,"column":3}}],"line":743},"89":{"loc":{"start":{"line":785,"column":2},"end":{"line":787,"column":3}},"type":"if","locations":[{"start":{"line":785,"column":2},"end":{"line":787,"column":3}},{"start":{"line":785,"column":2},"end":{"line":787,"column":3}}],"line":785},"90":{"loc":{"start":{"line":785,"column":6},"end":{"line":785,"column":51}},"type":"binary-expr","locations":[{"start":{"line":785,"column":6},"end":{"line":785,"column":30}},{"start":{"line":785,"column":34},"end":{"line":785,"column":51}}],"line":785},"91":{"loc":{"start":{"line":790,"column":4},"end":{"line":792,"column":5}},"type":"if","locations":[{"start":{"line":790,"column":4},"end":{"line":792,"column":5}},{"start":{"line":790,"column":4},"end":{"line":792,"column":5}}],"line":790},"92":{"loc":{"start":{"line":790,"column":8},"end":{"line":790,"column":57}},"type":"binary-expr","locations":[{"start":{"line":790,"column":8},"end":{"line":790,"column":27}},{"start":{"line":790,"column":31},"end":{"line":790,"column":57}}],"line":790},"93":{"loc":{"start":{"line":799,"column":0},"end":{"line":801,"column":1}},"type":"if","locations":[{"start":{"line":799,"column":0},"end":{"line":801,"column":1}},{"start":{"line":799,"column":0},"end":{"line":801,"column":1}}],"line":799}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":368,"6":16459,"7":1,"8":19,"9":19,"10":38,"11":1,"12":2,"13":2,"14":1,"15":2,"16":2,"17":2,"18":1,"19":342,"20":15792,"21":1,"22":4,"23":1,"24":3,"25":4,"26":4,"27":4,"28":21,"29":4,"30":4,"31":4,"32":4,"33":4,"34":4,"35":4,"36":4,"37":4,"38":5,"39":4,"40":5,"41":4,"42":1,"43":7,"44":7,"45":7,"46":7,"47":1,"48":6,"49":1,"50":5,"51":7,"52":7,"53":7,"54":7,"55":7,"56":7,"57":7,"58":7,"59":1,"60":1,"61":1,"62":1,"63":7,"64":1,"65":1,"66":7,"67":2,"68":2,"69":7,"70":1,"71":1,"72":1,"73":95,"74":95,"75":95,"76":95,"77":95,"78":95,"79":95,"80":95,"81":1,"82":13,"83":13,"84":2,"85":13,"86":13,"87":1,"88":33,"89":33,"90":1,"91":13,"92":1,"93":44,"94":44,"95":44,"96":44,"97":49,"98":49,"99":44,"100":1,"101":14,"102":14,"103":14,"104":3,"105":14,"106":12,"107":12,"108":13,"109":12,"110":1,"111":12,"112":14,"113":1,"114":146,"115":146,"116":1,"117":12,"118":12,"119":12,"120":2,"121":12,"122":3,"123":4,"124":12,"125":1,"126":42,"127":42,"128":42,"129":42,"130":42,"131":42,"132":0,"133":42,"134":1,"135":1,"136":1,"137":2,"138":1,"139":2,"140":2,"141":1,"142":1,"143":3,"144":3,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":2,"152":1,"153":1,"154":4,"155":4,"156":1,"157":3,"158":1,"159":2,"160":1,"161":1,"162":1,"163":1,"164":5,"165":1,"166":1,"167":1,"168":1,"169":4,"170":4,"171":4,"172":3,"173":1,"174":1,"175":2,"176":2,"177":1,"178":2,"179":1,"180":11,"181":11,"182":11,"183":11,"184":11,"185":93,"186":93,"187":93,"188":93,"189":93,"190":93,"191":93,"192":93,"193":93,"194":20,"195":20,"196":73,"197":11,"198":30,"199":11,"200":11,"201":93,"202":9,"203":1,"204":9,"205":8,"206":11,"207":1,"208":10,"209":10,"210":10,"211":10,"212":10,"213":9,"214":1,"215":8,"216":10,"217":10,"218":10,"219":9,"220":9,"221":9,"222":10,"223":10,"224":9,"225":0,"226":10,"227":0,"228":10,"229":9,"230":8,"231":10,"232":1,"233":5,"234":5,"235":5,"236":5,"237":5,"238":33,"239":33,"240":5,"241":5,"242":4,"243":4,"244":8,"245":5,"246":4,"247":5,"248":39,"249":16,"250":16,"251":16,"252":16,"253":16,"254":16,"255":16,"256":16,"257":5,"258":1,"259":5,"260":5,"261":3,"262":1,"263":2,"264":1,"265":1,"266":3,"267":24,"268":5,"269":1,"270":1,"271":1,"272":8,"273":8,"274":1,"275":1,"276":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"284":3,"285":3,"286":1,"287":3,"288":1,"289":3,"290":1,"291":3,"292":1,"293":3,"294":3,"295":1,"296":1,"297":2,"298":1,"299":1,"300":2,"301":1,"302":1,"303":1,"304":2,"305":2,"306":2,"307":1,"308":2,"309":1,"310":2,"311":2,"312":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":6,"319":6,"320":3,"321":3,"322":6,"323":6,"324":6,"325":1,"326":7,"327":1,"328":9,"329":9,"330":2,"331":7,"332":9,"333":9,"334":1,"335":7,"336":7,"337":7,"338":15,"339":5,"340":2,"341":1,"342":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":2,"349":1,"350":3,"351":3,"352":3,"353":1,"354":1,"355":1,"356":1,"357":1,"358":5,"359":2,"360":3,"361":3,"362":3,"363":60,"364":2,"365":1,"366":1,"367":1},"f":{"0":1,"1":368,"2":16459,"3":19,"4":38,"5":2,"6":2,"7":342,"8":15792,"9":4,"10":7,"11":1,"12":95,"13":13,"14":33,"15":13,"16":44,"17":14,"18":13,"19":146,"20":12,"21":4,"22":42,"23":1,"24":2,"25":2,"26":3,"27":1,"28":1,"29":2,"30":4,"31":3,"32":2,"33":5,"34":1,"35":4,"36":2,"37":11,"38":30,"39":93,"40":9,"41":1,"42":10,"43":9,"44":9,"45":9,"46":8,"47":5,"48":33,"49":33,"50":4,"51":8,"52":39,"53":24,"54":1,"55":8,"56":8,"57":3,"58":3,"59":1,"60":1,"61":2,"62":6,"63":7,"64":9,"65":7,"66":1,"67":2,"68":3,"69":1,"70":5},"b":{"0":[19,19],"1":[2,2],"2":[1,3],"3":[4,1],"4":[4,4,4,4,5],"5":[4,1],"6":[1,6],"7":[1,5],"8":[7,7],"9":[1,6],"10":[7,1,1],"11":[1,6],"12":[7,2],"13":[2,5],"14":[7,6],"15":[2,1],"16":[1,94],"17":[2,11],"18":[13,12,1],"19":[11,2],"20":[1,32],"21":[13,1],"22":[1,12],"23":[13,2],"24":[1,12],"25":[3,11],"26":[12,2],"27":[14,13],"28":[12,1],"29":[2,10],"30":[3,9],"31":[12,4],"32":[1,3],"33":[4,1],"34":[42,0],"35":[1,1],"36":[1,2],"37":[1,2],"38":[1,1],"39":[1,0],"40":[1,0],"41":[2,3],"42":[2,3],"43":[5,2],"44":[3,1],"45":[4,2],"46":[1,1],"47":[93,0],"48":[43,50],"49":[10,20,73],"50":[1,1],"51":[8,1],"52":[9,1],"53":[1,8],"54":[0,9],"55":[0,10],"56":[9,1],"57":[5,5],"58":[4,1],"59":[5,4,4],"60":[16,23],"61":[39,16],"62":[16,0],"63":[16,16],"64":[16,0],"65":[16,0],"66":[1,4],"67":[5,1],"68":[3,2],"69":[1,2],"70":[1,1],"71":[1,0],"72":[1,2],"73":[1,2],"74":[1,2],"75":[3,1],"76":[1,2],"77":[1,1],"78":[1,1],"79":[1,1],"80":[1,1],"81":[1,0],"82":[3,3],"83":[6,0],"84":[2,7],"85":[2,7],"86":[9,9],"87":[1,3,4,5,10],"88":[1,1],"89":[2,3],"90":[5,4],"91":[2,58],"92":[60,59],"93":[1,0]},"_coverageSchema":"43e27e138ebf9cfc5966b082cf9a028302ed4184","hash":"c65cae4c3f070071d62280e5ed07badcdf5e7f40","contentHash":"675fe6275fc51d84b78fba694121e489e4bde83a442ae5c521ba52f75f902544"}} \ No newline at end of file diff --git a/node_modules/sdp/.nyc_output/processinfo/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json b/node_modules/sdp/.nyc_output/processinfo/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json new file mode 100644 index 0000000..5862e86 --- /dev/null +++ b/node_modules/sdp/.nyc_output/processinfo/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json @@ -0,0 +1 @@ +{"uuid":"a9b935d8-5f14-4c64-b895-6b0ece2e9d7c","parent":null,"pid":5750,"argv":["/usr/bin/node","/media/fippo/houseparty/webrtc/sdp/node_modules/.bin/mocha","test/sdp.js"],"execArgv":[],"cwd":"/media/fippo/houseparty/webrtc/sdp","time":1673267457493,"ppid":5743,"root":"9110d26c-7a83-40c7-a41d-9670d698bc02","coverageFilename":"/media/fippo/houseparty/webrtc/sdp/.nyc_output/a9b935d8-5f14-4c64-b895-6b0ece2e9d7c.json","files":["/media/fippo/houseparty/webrtc/sdp/sdp.js"]} \ No newline at end of file diff --git a/node_modules/sdp/.nyc_output/processinfo/index.json b/node_modules/sdp/.nyc_output/processinfo/index.json new file mode 100644 index 0000000..726907f --- /dev/null +++ b/node_modules/sdp/.nyc_output/processinfo/index.json @@ -0,0 +1 @@ +{"processes":{"a9b935d8-5f14-4c64-b895-6b0ece2e9d7c":{"parent":null,"children":[]}},"files":{"/media/fippo/houseparty/webrtc/sdp/sdp.js":["a9b935d8-5f14-4c64-b895-6b0ece2e9d7c"]},"externalIds":{}} \ No newline at end of file diff --git a/node_modules/sdp/LICENSE b/node_modules/sdp/LICENSE new file mode 100644 index 0000000..09502ec --- /dev/null +++ b/node_modules/sdp/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017 Philipp Hancke + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/sdp/README.md b/node_modules/sdp/README.md new file mode 100644 index 0000000..85befd5 --- /dev/null +++ b/node_modules/sdp/README.md @@ -0,0 +1,4 @@ +# SDP parsing and utlities +originally for generating SDP from ORTC and vice versa -- see https://github.com/fippo/adapter/tree/shim-ortc + +But it turned out to be useful for manipulating SDP outside the context of Microsofts Edge browser. diff --git a/node_modules/sdp/coverage.lcov b/node_modules/sdp/coverage.lcov new file mode 100644 index 0000000..2bf4b8a --- /dev/null +++ b/node_modules/sdp/coverage.lcov @@ -0,0 +1,1083 @@ +TN: +SF:sdp.js +FN:9,SDPUtils.generateIdentifier +FN:17,SDPUtils.splitLines +FN:21,SDPUtils.splitSections +FN:28,SDPUtils.getDescription +FN:34,SDPUtils.getMediaSections +FN:41,SDPUtils.matchPrefix +FN:49,SDPUtils.parseCandidate +FN:97,SDPUtils.writeCandidate +FN:138,SDPUtils.parseIceOptions +FN:144,SDPUtils.parseRtpMap +FN:162,SDPUtils.writeRtpMap +FN:175,SDPUtils.parseExtmap +FN:187,SDPUtils.writeExtmap +FN:200,SDPUtils.parseFmtp +FN:212,SDPUtils.writeFmtp +FN:234,SDPUtils.parseRtcpFb +FN:243,SDPUtils.writeRtcpFb +FN:262,SDPUtils.parseSsrcMedia +FN:279,SDPUtils.parseSsrcGroup +FN:289,SDPUtils.getMid +FN:297,SDPUtils.parseFingerprint +FN:308,SDPUtils.getDtlsParameters +FN:319,SDPUtils.writeDtlsParameters +FN:329,SDPUtils.parseCryptoLine +FN:339,SDPUtils.writeCryptoLine +FN:351,SDPUtils.parseCryptoKeyParams +FN:365,SDPUtils.writeCryptoKeyParams +FN:375,SDPUtils.getCryptoParameters +FN:384,SDPUtils.getIceParameters +FN:399,SDPUtils.writeIceParameters +FN:409,SDPUtils.parseRtpParameters +FN:452,SDPUtils.writeRtpDescription +FN:496,SDPUtils.parseRtpEncodingParameters +FN:564,SDPUtils.parseRtcpParameters +FN:591,SDPUtils.writeRtcpParameters +FN:609,SDPUtils.parseMsid +FN:628,SDPUtils.parseSctpDescription +FN:664,SDPUtils.writeSctpDescription +FN:689,SDPUtils.generateSessionId +FN:698,SDPUtils.writeSessionBoilerplate +FN:716,SDPUtils.getDirection +FN:736,SDPUtils.getKind +FN:742,SDPUtils.isRejected +FN:746,SDPUtils.parseMLine +FN:757,SDPUtils.parseOLine +FN:771,SDPUtils.isValidSDP +FNF:46 +FNH:46 +FNDA:1,SDPUtils.generateIdentifier +FNDA:211,SDPUtils.splitLines +FNDA:14,SDPUtils.splitSections +FNDA:2,SDPUtils.getDescription +FNDA:2,SDPUtils.getMediaSections +FNDA:191,SDPUtils.matchPrefix +FNDA:4,SDPUtils.parseCandidate +FNDA:7,SDPUtils.writeCandidate +FNDA:1,SDPUtils.parseIceOptions +FNDA:50,SDPUtils.parseRtpMap +FNDA:13,SDPUtils.writeRtpMap +FNDA:18,SDPUtils.parseExtmap +FNDA:13,SDPUtils.writeExtmap +FNDA:24,SDPUtils.parseFmtp +FNDA:14,SDPUtils.writeFmtp +FNDA:84,SDPUtils.parseRtcpFb +FNDA:12,SDPUtils.writeRtcpFb +FNDA:42,SDPUtils.parseSsrcMedia +FNDA:1,SDPUtils.parseSsrcGroup +FNDA:2,SDPUtils.getMid +FNDA:3,SDPUtils.parseFingerprint +FNDA:1,SDPUtils.getDtlsParameters +FNDA:1,SDPUtils.writeDtlsParameters +FNDA:4,SDPUtils.parseCryptoLine +FNDA:3,SDPUtils.writeCryptoLine +FNDA:2,SDPUtils.parseCryptoKeyParams +FNDA:5,SDPUtils.writeCryptoKeyParams +FNDA:1,SDPUtils.getCryptoParameters +FNDA:4,SDPUtils.getIceParameters +FNDA:2,SDPUtils.writeIceParameters +FNDA:6,SDPUtils.parseRtpParameters +FNDA:10,SDPUtils.writeRtpDescription +FNDA:5,SDPUtils.parseRtpEncodingParameters +FNDA:1,SDPUtils.parseRtcpParameters +FNDA:3,SDPUtils.writeRtcpParameters +FNDA:3,SDPUtils.parseMsid +FNDA:2,SDPUtils.parseSctpDescription +FNDA:6,SDPUtils.writeSctpDescription +FNDA:7,SDPUtils.generateSessionId +FNDA:9,SDPUtils.writeSessionBoilerplate +FNDA:7,SDPUtils.getDirection +FNDA:1,SDPUtils.getKind +FNDA:2,SDPUtils.isRejected +FNDA:3,SDPUtils.parseMLine +FNDA:1,SDPUtils.parseOLine +FNDA:5,SDPUtils.isValidSDP +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,211 +DA:19,1 +DA:20,1 +DA:21,1 +DA:22,14 +DA:23,14 +DA:24,14 +DA:25,1 +DA:26,1 +DA:27,1 +DA:28,1 +DA:29,2 +DA:30,2 +DA:31,1 +DA:32,1 +DA:33,1 +DA:34,1 +DA:35,2 +DA:36,2 +DA:37,2 +DA:38,1 +DA:39,1 +DA:40,1 +DA:41,1 +DA:42,191 +DA:43,1 +DA:44,1 +DA:45,1 +DA:46,1 +DA:47,1 +DA:48,1 +DA:49,1 +DA:50,4 +DA:51,4 +DA:52,4 +DA:53,1 +DA:54,4 +DA:55,3 +DA:56,3 +DA:57,4 +DA:58,4 +DA:59,4 +DA:60,4 +DA:61,4 +DA:62,4 +DA:63,4 +DA:64,4 +DA:65,4 +DA:66,4 +DA:67,4 +DA:68,4 +DA:69,4 +DA:70,4 +DA:71,21 +DA:72,21 +DA:73,4 +DA:74,4 +DA:75,21 +DA:76,4 +DA:77,4 +DA:78,21 +DA:79,4 +DA:80,4 +DA:81,21 +DA:82,4 +DA:83,4 +DA:84,4 +DA:85,21 +DA:86,5 +DA:87,4 +DA:88,4 +DA:89,5 +DA:90,21 +DA:91,21 +DA:92,4 +DA:93,1 +DA:94,1 +DA:95,1 +DA:96,1 +DA:97,1 +DA:98,7 +DA:99,7 +DA:100,7 +DA:101,7 +DA:102,7 +DA:103,1 +DA:104,7 +DA:105,1 +DA:106,6 +DA:107,5 +DA:108,5 +DA:109,7 +DA:110,7 +DA:111,7 +DA:112,7 +DA:113,7 +DA:114,7 +DA:115,7 +DA:116,7 +DA:117,7 +DA:118,7 +DA:119,1 +DA:120,1 +DA:121,1 +DA:122,1 +DA:123,1 +DA:124,7 +DA:125,1 +DA:126,1 +DA:127,1 +DA:128,7 +DA:129,2 +DA:130,2 +DA:131,2 +DA:132,7 +DA:133,1 +DA:134,1 +DA:135,1 +DA:136,1 +DA:137,1 +DA:138,1 +DA:139,1 +DA:140,1 +DA:141,1 +DA:142,1 +DA:143,1 +DA:144,1 +DA:145,50 +DA:146,50 +DA:147,50 +DA:148,50 +DA:149,50 +DA:150,50 +DA:151,50 +DA:152,50 +DA:153,50 +DA:154,50 +DA:155,50 +DA:156,50 +DA:157,50 +DA:158,1 +DA:159,1 +DA:160,1 +DA:161,1 +DA:162,1 +DA:163,13 +DA:164,13 +DA:165,2 +DA:166,2 +DA:167,13 +DA:168,13 +DA:169,13 +DA:170,1 +DA:171,1 +DA:172,1 +DA:173,1 +DA:174,1 +DA:175,1 +DA:176,18 +DA:177,18 +DA:178,18 +DA:179,18 +DA:180,18 +DA:181,18 +DA:182,18 +DA:183,1 +DA:184,1 +DA:185,1 +DA:186,1 +DA:187,1 +DA:188,13 +DA:189,13 +DA:190,13 +DA:191,13 +DA:192,13 +DA:193,13 +DA:194,13 +DA:195,1 +DA:196,1 +DA:197,1 +DA:198,1 +DA:199,1 +DA:200,1 +DA:201,24 +DA:202,24 +DA:203,24 +DA:204,24 +DA:205,29 +DA:206,29 +DA:207,29 +DA:208,24 +DA:209,1 +DA:210,1 +DA:211,1 +DA:212,1 +DA:213,14 +DA:214,14 +DA:215,14 +DA:216,3 +DA:217,3 +DA:218,14 +DA:219,12 +DA:220,12 +DA:221,13 +DA:222,12 +DA:223,13 +DA:224,1 +DA:225,1 +DA:226,12 +DA:227,12 +DA:228,12 +DA:229,14 +DA:230,1 +DA:231,1 +DA:232,1 +DA:233,1 +DA:234,1 +DA:235,84 +DA:236,84 +DA:237,84 +DA:238,84 +DA:239,84 +DA:240,1 +DA:241,1 +DA:242,1 +DA:243,1 +DA:244,12 +DA:245,12 +DA:246,12 +DA:247,2 +DA:248,2 +DA:249,12 +DA:250,3 +DA:251,3 +DA:252,4 +DA:253,4 +DA:254,4 +DA:255,3 +DA:256,3 +DA:257,12 +DA:258,1 +DA:259,1 +DA:260,1 +DA:261,1 +DA:262,1 +DA:263,42 +DA:264,42 +DA:265,42 +DA:266,42 +DA:267,42 +DA:268,42 +DA:269,42 +DA:270,42 +DA:271,42 +DA:272,0 +DA:273,0 +DA:274,42 +DA:275,1 +DA:276,1 +DA:277,1 +DA:278,1 +DA:279,1 +DA:280,1 +DA:281,1 +DA:282,1 +DA:283,1 +DA:284,1 +DA:285,1 +DA:286,1 +DA:287,1 +DA:288,1 +DA:289,1 +DA:290,2 +DA:291,2 +DA:292,1 +DA:293,1 +DA:294,1 +DA:295,1 +DA:296,1 +DA:297,1 +DA:298,3 +DA:299,3 +DA:300,3 +DA:301,3 +DA:302,3 +DA:303,1 +DA:304,1 +DA:305,1 +DA:306,1 +DA:307,1 +DA:308,1 +DA:309,1 +DA:310,1 +DA:311,1 +DA:312,1 +DA:313,1 +DA:314,1 +DA:315,1 +DA:316,1 +DA:317,1 +DA:318,1 +DA:319,1 +DA:320,1 +DA:321,1 +DA:322,2 +DA:323,1 +DA:324,1 +DA:325,1 +DA:326,1 +DA:327,1 +DA:328,1 +DA:329,1 +DA:330,4 +DA:331,4 +DA:332,4 +DA:333,4 +DA:334,4 +DA:335,4 +DA:336,4 +DA:337,1 +DA:338,1 +DA:339,1 +DA:340,3 +DA:341,3 +DA:342,3 +DA:343,3 +DA:344,3 +DA:345,3 +DA:346,3 +DA:347,1 +DA:348,1 +DA:349,1 +DA:350,1 +DA:351,1 +DA:352,2 +DA:353,1 +DA:354,1 +DA:355,1 +DA:356,1 +DA:357,1 +DA:358,1 +DA:359,1 +DA:360,2 +DA:361,2 +DA:362,2 +DA:363,1 +DA:364,1 +DA:365,1 +DA:366,5 +DA:367,5 +DA:368,5 +DA:369,5 +DA:370,5 +DA:371,5 +DA:372,1 +DA:373,1 +DA:374,1 +DA:375,1 +DA:376,1 +DA:377,1 +DA:378,1 +DA:379,1 +DA:380,1 +DA:381,1 +DA:382,1 +DA:383,1 +DA:384,1 +DA:385,4 +DA:386,4 +DA:387,4 +DA:388,4 +DA:389,4 +DA:390,3 +DA:391,3 +DA:392,1 +DA:393,1 +DA:394,1 +DA:395,1 +DA:396,1 +DA:397,1 +DA:398,1 +DA:399,1 +DA:400,2 +DA:401,2 +DA:402,2 +DA:403,1 +DA:404,1 +DA:405,2 +DA:406,1 +DA:407,1 +DA:408,1 +DA:409,1 +DA:410,6 +DA:411,6 +DA:412,6 +DA:413,6 +DA:414,6 +DA:415,6 +DA:416,6 +DA:417,6 +DA:418,6 +DA:419,48 +DA:420,48 +DA:421,48 +DA:422,48 +DA:423,48 +DA:424,48 +DA:425,48 +DA:426,48 +DA:427,48 +DA:428,48 +DA:429,48 +DA:430,48 +DA:431,48 +DA:432,48 +DA:433,48 +DA:434,48 +DA:435,48 +DA:436,10 +DA:437,10 +DA:438,48 +DA:439,38 +DA:440,48 +DA:441,48 +DA:442,48 +DA:443,6 +DA:444,15 +DA:445,6 +DA:446,6 +DA:447,6 +DA:448,1 +DA:449,1 +DA:450,1 +DA:451,1 +DA:452,1 +DA:453,10 +DA:454,10 +DA:455,10 +DA:456,10 +DA:457,10 +DA:458,10 +DA:459,10 +DA:460,9 +DA:461,1 +DA:462,1 +DA:463,8 +DA:464,10 +DA:465,10 +DA:466,10 +DA:467,10 +DA:468,10 +DA:469,10 +DA:470,10 +DA:471,9 +DA:472,9 +DA:473,9 +DA:474,10 +DA:475,10 +DA:476,10 +DA:477,9 +DA:478,0 +DA:479,0 +DA:480,10 +DA:481,10 +DA:482,0 +DA:483,0 +DA:484,10 +DA:485,10 +DA:486,9 +DA:487,8 +DA:488,9 +DA:489,9 +DA:490,10 +DA:491,10 +DA:492,1 +DA:493,1 +DA:494,1 +DA:495,1 +DA:496,1 +DA:497,5 +DA:498,5 +DA:499,5 +DA:500,5 +DA:501,5 +DA:502,5 +DA:503,5 +DA:504,5 +DA:505,5 +DA:506,5 +DA:507,5 +DA:508,5 +DA:509,5 +DA:510,5 +DA:511,4 +DA:512,4 +DA:513,5 +DA:514,5 +DA:515,4 +DA:516,4 +DA:517,5 +DA:518,5 +DA:519,39 +DA:520,16 +DA:521,16 +DA:522,16 +DA:523,16 +DA:524,16 +DA:525,16 +DA:526,16 +DA:527,16 +DA:528,16 +DA:529,16 +DA:530,16 +DA:531,16 +DA:532,16 +DA:533,16 +DA:534,16 +DA:535,16 +DA:536,16 +DA:537,5 +DA:538,5 +DA:539,1 +DA:540,1 +DA:541,1 +DA:542,1 +DA:543,5 +DA:544,5 +DA:545,5 +DA:546,5 +DA:547,3 +DA:548,1 +DA:549,3 +DA:550,1 +DA:551,1 +DA:552,1 +DA:553,1 +DA:554,1 +DA:555,1 +DA:556,3 +DA:557,24 +DA:558,3 +DA:559,3 +DA:560,5 +DA:561,1 +DA:562,1 +DA:563,1 +DA:564,1 +DA:565,1 +DA:566,1 +DA:567,1 +DA:568,1 +DA:569,1 +DA:570,1 +DA:571,1 +DA:572,1 +DA:573,1 +DA:574,1 +DA:575,1 +DA:576,1 +DA:577,1 +DA:578,1 +DA:579,1 +DA:580,1 +DA:581,1 +DA:582,1 +DA:583,1 +DA:584,1 +DA:585,1 +DA:586,1 +DA:587,1 +DA:588,1 +DA:589,1 +DA:590,1 +DA:591,1 +DA:592,3 +DA:593,3 +DA:594,1 +DA:595,1 +DA:596,3 +DA:597,1 +DA:598,1 +DA:599,3 +DA:600,1 +DA:601,1 +DA:602,1 +DA:603,3 +DA:604,1 +DA:605,1 +DA:606,1 +DA:607,1 +DA:608,1 +DA:609,1 +DA:610,3 +DA:611,3 +DA:612,3 +DA:613,1 +DA:614,1 +DA:615,1 +DA:616,2 +DA:617,2 +DA:618,2 +DA:619,3 +DA:620,1 +DA:621,1 +DA:622,1 +DA:623,1 +DA:624,1 +DA:625,1 +DA:626,1 +DA:627,1 +DA:628,1 +DA:629,2 +DA:630,2 +DA:631,2 +DA:632,2 +DA:633,1 +DA:634,1 +DA:635,2 +DA:636,1 +DA:637,1 +DA:638,2 +DA:639,2 +DA:640,1 +DA:641,1 +DA:642,1 +DA:643,1 +DA:644,1 +DA:645,1 +DA:646,1 +DA:647,1 +DA:648,1 +DA:649,1 +DA:650,1 +DA:651,1 +DA:652,1 +DA:653,1 +DA:654,1 +DA:655,1 +DA:656,1 +DA:657,1 +DA:658,1 +DA:659,1 +DA:660,1 +DA:661,1 +DA:662,1 +DA:663,1 +DA:664,1 +DA:665,6 +DA:666,6 +DA:667,3 +DA:668,3 +DA:669,3 +DA:670,3 +DA:671,3 +DA:672,3 +DA:673,3 +DA:674,3 +DA:675,3 +DA:676,3 +DA:677,3 +DA:678,3 +DA:679,6 +DA:680,6 +DA:681,6 +DA:682,6 +DA:683,1 +DA:684,1 +DA:685,1 +DA:686,1 +DA:687,1 +DA:688,1 +DA:689,1 +DA:690,7 +DA:691,1 +DA:692,1 +DA:693,1 +DA:694,1 +DA:695,1 +DA:696,1 +DA:697,1 +DA:698,1 +DA:699,9 +DA:700,9 +DA:701,9 +DA:702,2 +DA:703,9 +DA:704,7 +DA:705,7 +DA:706,9 +DA:707,9 +DA:708,9 +DA:709,9 +DA:710,9 +DA:711,9 +DA:712,9 +DA:713,1 +DA:714,1 +DA:715,1 +DA:716,1 +DA:717,7 +DA:718,7 +DA:719,7 +DA:720,15 +DA:721,15 +DA:722,15 +DA:723,15 +DA:724,15 +DA:725,5 +DA:726,15 +DA:727,15 +DA:728,15 +DA:729,15 +DA:730,7 +DA:731,1 +DA:732,1 +DA:733,1 +DA:734,1 +DA:735,1 +DA:736,1 +DA:737,1 +DA:738,1 +DA:739,1 +DA:740,1 +DA:741,1 +DA:742,1 +DA:743,2 +DA:744,1 +DA:745,1 +DA:746,1 +DA:747,3 +DA:748,3 +DA:749,3 +DA:750,3 +DA:751,3 +DA:752,3 +DA:753,3 +DA:754,3 +DA:755,1 +DA:756,1 +DA:757,1 +DA:758,1 +DA:759,1 +DA:760,1 +DA:761,1 +DA:762,1 +DA:763,1 +DA:764,1 +DA:765,1 +DA:766,1 +DA:767,1 +DA:768,1 +DA:769,1 +DA:770,1 +DA:771,1 +DA:772,5 +DA:773,2 +DA:774,2 +DA:775,3 +DA:776,5 +DA:777,60 +DA:778,2 +DA:779,2 +DA:780,60 +DA:781,60 +DA:782,1 +DA:783,1 +DA:784,1 +DA:785,1 +DA:786,1 +DA:787,1 +DA:788,1 +LF:788 +LH:782 +BRDA:1,0,0,1 +BRDA:9,1,0,1 +BRDA:17,2,0,211 +BRDA:18,3,0,8859 +BRDA:21,4,0,14 +BRDA:23,5,0,28 +BRDA:23,6,0,14 +BRDA:24,7,0,14 +BRDA:28,8,0,2 +BRDA:34,9,0,2 +BRDA:41,10,0,191 +BRDA:42,11,0,8491 +BRDA:49,12,0,4 +BRDA:52,13,0,1 +BRDA:54,14,0,3 +BRDA:60,15,0,1 +BRDA:70,16,0,21 +BRDA:72,17,0,4 +BRDA:75,18,0,4 +BRDA:78,19,0,4 +BRDA:81,20,0,4 +BRDA:85,21,0,5 +BRDA:86,22,0,4 +BRDA:97,23,0,7 +BRDA:102,24,0,1 +BRDA:104,25,0,6 +BRDA:104,26,0,1 +BRDA:106,27,0,5 +BRDA:117,28,0,1 +BRDA:117,29,0,1 +BRDA:118,30,0,1 +BRDA:124,31,0,2 +BRDA:124,32,0,1 +BRDA:128,33,0,6 +BRDA:128,34,0,2 +BRDA:130,35,0,1 +BRDA:138,36,0,1 +BRDA:144,37,0,50 +BRDA:154,38,0,1 +BRDA:154,39,0,49 +BRDA:162,40,0,13 +BRDA:164,41,0,2 +BRDA:167,42,0,12 +BRDA:167,43,0,1 +BRDA:169,44,0,11 +BRDA:169,45,0,2 +BRDA:175,46,0,18 +BRDA:179,47,0,1 +BRDA:179,48,0,17 +BRDA:187,49,0,13 +BRDA:188,50,0,1 +BRDA:189,51,0,2 +BRDA:190,52,0,1 +BRDA:191,53,0,12 +BRDA:193,54,0,1 +BRDA:193,55,0,12 +BRDA:200,56,0,24 +BRDA:204,57,0,29 +BRDA:212,58,0,14 +BRDA:215,59,0,3 +BRDA:218,60,0,13 +BRDA:218,61,0,12 +BRDA:220,62,0,13 +BRDA:221,63,0,12 +BRDA:223,64,0,1 +BRDA:234,65,0,84 +BRDA:243,66,0,12 +BRDA:246,67,0,2 +BRDA:249,68,0,4 +BRDA:249,69,0,3 +BRDA:251,70,0,4 +BRDA:253,71,0,1 +BRDA:253,72,0,1 +BRDA:253,73,0,3 +BRDA:262,74,0,42 +BRDA:271,75,0,0 +BRDA:279,76,0,1 +BRDA:283,77,0,2 +BRDA:289,78,0,2 +BRDA:291,79,0,1 +BRDA:297,80,0,3 +BRDA:308,81,0,1 +BRDA:319,82,0,1 +BRDA:321,83,0,2 +BRDA:329,84,0,4 +BRDA:339,85,0,3 +BRDA:343,86,0,1 +BRDA:344,87,0,2 +BRDA:345,88,0,1 +BRDA:345,89,0,2 +BRDA:351,90,0,2 +BRDA:352,91,0,1 +BRDA:360,92,0,0 +BRDA:361,93,0,1 +BRDA:361,94,0,0 +BRDA:365,95,0,5 +BRDA:368,96,0,2 +BRDA:368,97,0,3 +BRDA:369,98,0,2 +BRDA:370,99,0,2 +BRDA:371,100,0,3 +BRDA:375,101,0,1 +BRDA:384,102,0,4 +BRDA:389,103,0,2 +BRDA:389,104,0,3 +BRDA:392,105,0,1 +BRDA:399,106,0,2 +BRDA:402,107,0,1 +BRDA:409,108,0,6 +BRDA:418,109,0,48 +BRDA:427,110,0,23 +BRDA:427,111,0,25 +BRDA:434,112,0,5 +BRDA:435,113,0,10 +BRDA:438,114,0,38 +BRDA:443,115,0,15 +BRDA:452,116,0,10 +BRDA:457,117,0,9 +BRDA:457,118,0,1 +BRDA:481,119,0,0 +BRDA:485,120,0,9 +BRDA:459,121,0,9 +BRDA:460,122,0,1 +BRDA:463,123,0,8 +BRDA:470,124,0,9 +BRDA:476,125,0,9 +BRDA:477,126,0,0 +BRDA:486,127,0,8 +BRDA:496,128,0,5 +BRDA:514,129,0,4 +BRDA:514,130,0,4 +BRDA:514,131,0,4 +BRDA:538,132,0,1 +BRDA:538,133,0,1 +BRDA:546,134,0,3 +BRDA:547,135,0,1 +BRDA:549,136,0,2 +BRDA:549,137,0,1 +BRDA:504,138,0,33 +BRDA:505,139,0,33 +BRDA:510,140,0,4 +BRDA:512,141,0,8 +BRDA:518,142,0,39 +BRDA:519,143,0,16 +BRDA:519,144,0,16 +BRDA:532,145,0,0 +BRDA:556,146,0,24 +BRDA:564,147,0,1 +BRDA:570,148,0,8 +BRDA:571,149,0,8 +BRDA:591,150,0,3 +BRDA:593,151,0,1 +BRDA:596,152,0,1 +BRDA:599,153,0,1 +BRDA:599,154,0,1 +BRDA:609,155,0,3 +BRDA:612,156,0,1 +BRDA:616,157,0,2 +BRDA:619,158,0,1 +BRDA:617,159,0,1 +BRDA:618,160,0,1 +BRDA:628,161,0,2 +BRDA:632,162,0,1 +BRDA:635,163,0,1 +BRDA:639,164,0,1 +BRDA:664,165,0,6 +BRDA:666,166,0,3 +BRDA:689,167,0,7 +BRDA:698,168,0,9 +BRDA:700,169,0,2 +BRDA:700,170,0,7 +BRDA:701,171,0,2 +BRDA:703,172,0,7 +BRDA:716,173,0,7 +BRDA:719,174,0,15 +BRDA:721,175,0,1 +BRDA:722,176,0,3 +BRDA:723,177,0,4 +BRDA:724,178,0,5 +BRDA:726,179,0,10 +BRDA:730,180,0,2 +BRDA:730,181,0,1 +BRDA:736,182,0,1 +BRDA:742,183,0,2 +BRDA:746,184,0,3 +BRDA:757,185,0,1 +BRDA:771,186,0,5 +BRDA:772,187,0,4 +BRDA:772,188,0,2 +BRDA:775,189,0,3 +BRDA:776,190,0,60 +BRDA:777,191,0,59 +BRDA:777,192,0,2 +BRDA:782,193,0,1 +BRF:194 +BRH:188 +end_of_record diff --git a/node_modules/sdp/dist/sdp.js b/node_modules/sdp/dist/sdp.js new file mode 100644 index 0000000..0d3994f --- /dev/null +++ b/node_modules/sdp/dist/sdp.js @@ -0,0 +1,773 @@ +/* eslint-env node */ +'use strict'; + +// SDP helpers. + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function () { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function (blob) { + return blob.trim().split('\n').map(function (line) { + return line.trim(); + }); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function (blob) { + var parts = blob.split('\nm='); + return parts.map(function (part, index) { + return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; + }); +}; + +// Returns the session description. +SDPUtils.getDescription = function (blob) { + var sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function (blob) { + var sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function (blob, prefix) { + return SDPUtils.splitLines(blob).filter(function (line) { + return line.indexOf(prefix) === 0; + }); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function (line) { + var parts = void 0; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + var candidate = { + foundation: parts[0], + component: { 1: 'rtp', 2: 'rtcp' }[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7] + }; + + for (var i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: + // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function (candidate) { + var sdp = []; + sdp.push(candidate.foundation); + + var component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + var type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function (line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function (line) { + var parts = line.substring(9).split(' '); + var parsed = { + payloadType: parseInt(parts.shift(), 10) // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function (codec) { + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + var channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function (line) { + var parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' ') + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function (headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + (headerExtension.direction && headerExtension.direction !== 'sendrecv' ? '/' + headerExtension.direction : '') + ' ' + headerExtension.uri + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function (line) { + var parsed = {}; + var kv = void 0; + var parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (var j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function (codec) { + var line = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + var params = []; + Object.keys(codec.parameters).forEach(function (param) { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function (line) { + var parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' ') + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function (codec) { + var lines = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(function (fb) { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function (line) { + var sp = line.indexOf(' '); + var parts = { + ssrc: parseInt(line.substring(7, sp), 10) + }; + var colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function (line) { + var parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(function (ssrc) { + return parseInt(ssrc, 10); + }) + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function (mediaSection) { + var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function (line) { + var parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase() // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint) + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function (params, setupType) { + var sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(function (fp) { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function (line) { + var parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3) + }; +}; + +SDPUtils.writeCryptoLine = function (parameters) { + return 'a=crypto:' + parameters.tag + ' ' + parameters.cryptoSuite + ' ' + (_typeof(parameters.keyParams) === 'object' ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) : parameters.keyParams) + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function (keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + var parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined + }; +}; + +SDPUtils.writeCryptoKeyParams = function (keyParams) { + return keyParams.keyMethod + ':' + keyParams.keySalt + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + (keyParams.mkiValue && keyParams.mkiLength ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function (mediaSection, sessionpart) { + var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-ufrag:')[0]; + var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10) + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function (params) { + var sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function (mediaSection) { + var description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [] + }; + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + description.profile = mline[2]; + for (var i = 3; i < mline.length; i++) { + // find all codecs from mline[3..] + var pt = mline[i]; + var rtpmapline = SDPUtils.matchPrefix(mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + var codec = SDPUtils.parseRtpMap(rtpmapline); + var fmtps = SDPUtils.matchPrefix(mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:' + pt + ' ').map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: + // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function (line) { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + var wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ').map(SDPUtils.parseRtcpFb); + description.codecs.forEach(function (codec) { + wildcardRtcpFb.forEach(function (fb) { + var duplicate = codec.rtcpFeedback.find(function (existingFeedback) { + return existingFeedback.type === fb.type && existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function (kind, caps) { + var sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(function (codec) { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(function (codec) { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + var maxptime = 0; + caps.codecs.forEach(function (codec) { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(function (extension) { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function (mediaSection) { + var encodingParameters = []; + var description = SDPUtils.parseRtpParameters(mediaSection); + var hasRed = description.fecMechanisms.indexOf('RED') !== -1; + var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (parts) { + return parts.attribute === 'cname'; + }); + var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + var secondarySsrc = void 0; + + var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID').map(function (line) { + var parts = line.substring(17).split(' '); + return parts.map(function (part) { + return parseInt(part, 10); + }); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(function (codec) { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + var encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10) + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = { ssrc: secondarySsrc }; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red' + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 - 50 * 40 * 8; + } else { + bandwidth = undefined; + } + encodingParameters.forEach(function (params) { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function (mediaSection) { + var rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (obj) { + return obj.attribute === 'cname'; + })[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function (rtcpParameters) { + var sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function (mediaSection) { + var parts = void 0; + var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return { stream: parts[0], track: parts[1] }; + } + var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (msidParts) { + return msidParts.attribute === 'msid'; + }); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return { stream: parts[0], track: parts[1] }; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function (mediaSection) { + var mline = SDPUtils.parseMLine(mediaSection); + var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + var maxMessageSize = void 0; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize: maxMessageSize + }; + } + var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + var parts = sctpMapLines[0].substring(10).split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize: maxMessageSize + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function (media, sctp) { + var output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctp-port:' + sctp.port + '\r\n']; + } else { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n']; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function () { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function (sessId, sessVer, sessUser) { + var sessionId = void 0; + var version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + var user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + 'o=' + user + ' ' + sessionId + ' ' + version + ' IN IP4 127.0.0.1\r\n' + 's=-\r\n' + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function (mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + var lines = SDPUtils.splitLines(mediaSection); + for (var i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function (mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' ') + }; +}; + +SDPUtils.parseOLine = function (mediaSection) { + var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + var parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5] + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function (blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + var lines = SDPUtils.splitLines(blob); + for (var i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object') { + module.exports = SDPUtils; +} \ No newline at end of file diff --git a/node_modules/sdp/package.json b/node_modules/sdp/package.json new file mode 100644 index 0000000..8a26b37 --- /dev/null +++ b/node_modules/sdp/package.json @@ -0,0 +1,36 @@ +{ + "name": "sdp", + "version": "3.2.0", + "description": "SDP parsing and serialization utilities", + "main": "dist/sdp.js", + "module": "sdp.js", + "typings": "sdp.d.ts", + "repository": { + "type": "git", + "url": "git+https://github.com/fippo/sdp.git" + }, + "scripts": { + "build": "babel sdp.js --presets babel-preset-env --out-dir dist", + "coverage": "c8 report --reporter=text-lcov > coverage.lcov", + "prepare": "npm run build", + "test": "eslint sdp.js test/sdp.js && c8 --reporter html mocha test/sdp.js" + }, + "keywords": [ + "sdp", + "webrtc" + ], + "author": "Philipp Hancke", + "license": "MIT", + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-preset-env": "^1.7.0", + "c8": "^7.12.0", + "chai": "^4.3.7", + "codecov": "^3.6.5", + "eslint": "^8.31.0", + "mocha": "^10.2.0", + "sinon": "^15.0.1", + "sinon-chai": "^3.7.0" + } +} diff --git a/node_modules/sdp/sdp.d.ts b/node_modules/sdp/sdp.d.ts new file mode 100644 index 0000000..7f3d0c5 --- /dev/null +++ b/node_modules/sdp/sdp.d.ts @@ -0,0 +1,220 @@ +export type SDPBlob = string; +export type SDPLine = string; +export type SDPSection = string; + +export type SDPDirection = 'sendonly' | 'recvonly' | 'sendrecv' | 'inactive'; + +export interface SDPIceCandidate { + foundation: string; + component: 'rtp' | 'rtcp' | number; + protocol: 'tcp' | 'udp'; + priority: number; + ip: string; + address: string; + port: number; + type: 'host' | 'prflx' | 'srflx' | 'relay'; + relatedAddress?: string; + relatedPort?: number; + tcpType?: string; + ufrag?: string; + usernameFragment?: string; +} + +export interface SDPIceParameters { + iceLite?: boolean; + usernameFragment: string; + password: string; +} + +export interface SDPCodecParameters { + payloadType: number; + preferredPayloadType?: number; + name: string; + clockRate: number; + channels: number; + numChannels?: number; + maxptime?: number; +} + +export interface SDPCodecAdditionalParameters { + [key: string]: string; +} + +export interface SDPHeaderExtension { + id: number; + direction?: SDPDirection; + uri: string; + atrributes: string | undefined; +} + +export interface SDPFeedbackParameter { + type: string; + parameter: string; +} + +export interface SDPFingerprint { + algorithm: string; + value: string; +} + +export interface SDPDtlsParameters { + role: string; + fingerprints: SDPFingerprint[]; +} + +export interface SDPMediaSource { + ssrc: number; + attribute?: string; + value?: string; +} + +export interface SDPMediaSourceGroup { + semantics: string; + ssrcs: number[]; +} + +export interface SDPMediaStreamId { + stream: string; + track: string; +} + +export interface SDPCodec extends SDPCodecParameters { + payloadType: number; + preferredPayloadType?: number; + parameters?: SDPCodecAdditionalParameters; + rtcpFeedback?: SDPFeedbackParameter[]; +} + +export interface SDPGroup { + semantics: string; + mids: string[]; +} + +export interface SDPMLine { + kind: string; + port?: number; + protocol: string; + fmt?: string; +} + +export interface SDPOLine { + username: string; + sessionId: string; + sessionVersion: number; + netType: string; + addressType: string; + address: string; +} + +export interface SDPRtcpParameters { + cname?: string; + ssrc?: number; + reducedSize?: boolean; + compound?: boolean; + mux?: boolean; +} + +export interface SDPEncodingParameters { + ssrc: number; + codecPayloadType?: number; + rtx?: { + ssrc: number; + }; + fec?: { + ssrc: number; + mechanism: string; + }; +} + +export interface SDPRtpCapabilities { + codecs: SDPCodec[]; + headerExtensions: SDPHeaderExtension[]; + fecMechanisms: string[]; + rtcp?: SDPRtcpParameters[]; +} + +export interface SDPSctpDescription { + port: number; + protocol: string; + maxMessageSize?: number; +} + +export const localCname: string; + +export function generateIdentifier(): string; + +export function splitLines(blob: SDPBlob): SDPLine[]; +export function splitSections(blob: SDPBlob): SDPSection[]; + +export function getDescription(blob: SDPBlob): SDPSection; +export function getMediaSections(blob: SDPBlob): SDPSection[]; + +export function matchPrefix(blob: SDPBlob, prefix: string): SDPLine[]; + +export function parseCandidate(line: SDPLine): SDPIceCandidate; +export function writeCandidate(candidate: SDPIceCandidate): SDPLine; + +export function parseIceOptions(line: SDPLine): string[]; + +export function parseRtpMap(line: SDPLine): SDPCodecParameters; +export function writeRtpMap(codec: SDPCodecParameters): SDPLine; + +export function parseExtmap(line: SDPLine): SDPHeaderExtension; +export function writeExtmap(headerExtension: SDPHeaderExtension): SDPLine; + +export function parseFmtp(line: SDPLine): SDPCodecAdditionalParameters; +export function writeFmtp(codec: SDPCodec): SDPLine; + +export function parseRtcpFb(line: SDPLine): SDPFeedbackParameter; +export function writeRtcpFb(codec: SDPCodec): SDPLine[]; + +export function parseSsrcMedia(line: SDPLine): SDPMediaSource; +export function parseSsrcGroup(line: SDPLine): SDPMediaSourceGroup; + +export function getMid(mediaSection: SDPSection): string; + +export function parseFingerprint(line: SDPLine): SDPFingerprint; + +export function getDtlsParameters( + mediaSection: SDPSection, + session: SDPSection +): SDPDtlsParameters; +export function writeDtlsParameters(params: SDPDtlsParameters, setupType: string): SDPLine; + +export function getIceParameters( + mediaSection: SDPSection, + session: SDPSection +): SDPIceParameters; +export function writeIceParameters(params: SDPIceParameters): SDPLine; + +export function parseRtpParameters(mediaSection: SDPSection): SDPRtpCapabilities; +export function writeRtpDescription(kind: string, caps: SDPRtpCapabilities): SDPSection; + +export function parseRtpEncodingParameters(mediaSection: SDPSection): SDPEncodingParameters[]; + +export function parseRtcpParameters(mediaSection: SDPSection): SDPRtcpParameters; +export function writeRtcpParameters(params: SDPRtcpParameters): SDPLine; + +export function parseMsid(mediaSection: SDPSection): SDPMediaStreamId; + +export function parseSctpDescription(mediaSection: SDPSection): SDPSctpDescription; +export function writeSctpDescription( + mediaSection: SDPMLine, + desc: SDPSctpDescription +): SDPSection; + +export function generateSessionId(): string; +export function writeSessionBoilerplate( + sessId?: string, + sessVer?: number, + sessUser?: string +): SDPBlob; + +export function getDirection(mediaSection: SDPSection, sessionpart: SDPSection): SDPDirection; +export function getKind(mediaSection: SDPSection): string; +export function isRejected(mediaSection: SDPSection): boolean; + +export function parseMLine(mediaSection: SDPSection): SDPMLine; +export function parseOLine(mediaSection: SDPSection): SDPOLine; + +export function isValidSDP(blob: SDPBlob): boolean; diff --git a/node_modules/sdp/sdp.js b/node_modules/sdp/sdp.js new file mode 100644 index 0000000..d0e6488 --- /dev/null +++ b/node_modules/sdp/sdp.js @@ -0,0 +1,802 @@ +/* eslint-env node */ +'use strict'; + +// SDP helpers. +const SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function() { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function(blob) { + return blob.trim().split('\n').map(line => line.trim()); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function(blob) { + const parts = blob.split('\nm='); + return parts.map((part, index) => (index > 0 ? + 'm=' + part : part).trim() + '\r\n'); +}; + +// Returns the session description. +SDPUtils.getDescription = function(blob) { + const sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function(blob) { + const sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function(blob, prefix) { + return SDPUtils.splitLines(blob).filter(line => line.indexOf(prefix) === 0); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function(line) { + let parts; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + const candidate = { + foundation: parts[0], + component: {1: 'rtp', 2: 'rtcp'}[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7], + }; + + for (let i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function(candidate) { + const sdp = []; + sdp.push(candidate.foundation); + + const component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + const type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && + candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function(line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function(line) { + let parts = line.substring(9).split(' '); + const parsed = { + payloadType: parseInt(parts.shift(), 10), // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function(codec) { + let pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + const channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function(line) { + const parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' '), + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function(headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + + (headerExtension.direction && headerExtension.direction !== 'sendrecv' + ? '/' + headerExtension.direction + : '') + + ' ' + headerExtension.uri + + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function(line) { + const parsed = {}; + let kv; + const parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (let j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function(codec) { + let line = ''; + let pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + const params = []; + Object.keys(codec.parameters).forEach(param => { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function(line) { + const parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' '), + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function(codec) { + let lines = ''; + let pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(fb => { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function(line) { + const sp = line.indexOf(' '); + const parts = { + ssrc: parseInt(line.substring(7, sp), 10), + }; + const colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function(line) { + const parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(ssrc => parseInt(ssrc, 10)), + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function(mediaSection) { + const mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function(line) { + const parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase(), // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function(mediaSection, sessionpart) { + const lines = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint), + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function(params, setupType) { + let sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(fp => { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function(line) { + const parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3), + }; +}; + +SDPUtils.writeCryptoLine = function(parameters) { + return 'a=crypto:' + parameters.tag + ' ' + + parameters.cryptoSuite + ' ' + + (typeof parameters.keyParams === 'object' + ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) + : parameters.keyParams) + + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function(keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + const parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined, + }; +}; + +SDPUtils.writeCryptoKeyParams = function(keyParams) { + return keyParams.keyMethod + ':' + + keyParams.keySalt + + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + + (keyParams.mkiValue && keyParams.mkiLength + ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength + : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function(mediaSection, sessionpart) { + const lines = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function(mediaSection, sessionpart) { + const ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=ice-ufrag:')[0]; + const pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, + 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10), + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function(params) { + let sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function(mediaSection) { + const description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [], + }; + const lines = SDPUtils.splitLines(mediaSection); + const mline = lines[0].split(' '); + description.profile = mline[2]; + for (let i = 3; i < mline.length; i++) { // find all codecs from mline[3..] + const pt = mline[i]; + const rtpmapline = SDPUtils.matchPrefix( + mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + const codec = SDPUtils.parseRtpMap(rtpmapline); + const fmtps = SDPUtils.matchPrefix( + mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix( + mediaSection, 'a=rtcp-fb:' + pt + ' ') + .map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(line => { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + const wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ') + .map(SDPUtils.parseRtcpFb); + description.codecs.forEach(codec => { + wildcardRtcpFb.forEach(fb=> { + const duplicate = codec.rtcpFeedback.find(existingFeedback => { + return existingFeedback.type === fb.type && + existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function(kind, caps) { + let sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(codec => { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(codec => { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + let maxptime = 0; + caps.codecs.forEach(codec => { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(extension => { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function(mediaSection) { + const encodingParameters = []; + const description = SDPUtils.parseRtpParameters(mediaSection); + const hasRed = description.fecMechanisms.indexOf('RED') !== -1; + const hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + const ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(line => SDPUtils.parseSsrcMedia(line)) + .filter(parts => parts.attribute === 'cname'); + const primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + let secondarySsrc; + + const flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID') + .map(line => { + const parts = line.substring(17).split(' '); + return parts.map(part => parseInt(part, 10)); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(codec => { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + let encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10), + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = {ssrc: secondarySsrc}; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red', + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc, + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + let bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 + - (50 * 40 * 8); + } else { + bandwidth = undefined; + } + encodingParameters.forEach(params => { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function(mediaSection) { + const rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + const remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(line => SDPUtils.parseSsrcMedia(line)) + .filter(obj => obj.attribute === 'cname')[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + const rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + const mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function(rtcpParameters) { + let sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function(mediaSection) { + let parts; + const spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return {stream: parts[0], track: parts[1]}; + } + const planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:') + .map(line => SDPUtils.parseSsrcMedia(line)) + .filter(msidParts => msidParts.attribute === 'msid'); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return {stream: parts[0], track: parts[1]}; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function(mediaSection) { + const mline = SDPUtils.parseMLine(mediaSection); + const maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + let maxMessageSize; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + const sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize, + }; + } + const sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + const parts = sctpMapLines[0] + .substring(10) + .split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize, + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function(media, sctp) { + let output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = [ + 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', + 'c=IN IP4 0.0.0.0\r\n', + 'a=sctp-port:' + sctp.port + '\r\n', + ]; + } else { + output = [ + 'm=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', + 'c=IN IP4 0.0.0.0\r\n', + 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n', + ]; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function() { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function(sessId, sessVer, sessUser) { + let sessionId; + const version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + const user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + + 'o=' + user + ' ' + sessionId + ' ' + version + + ' IN IP4 127.0.0.1\r\n' + + 's=-\r\n' + + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function(mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + const lines = SDPUtils.splitLines(mediaSection); + for (let i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function(mediaSection) { + const lines = SDPUtils.splitLines(mediaSection); + const mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function(mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function(mediaSection) { + const lines = SDPUtils.splitLines(mediaSection); + const parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' '), + }; +}; + +SDPUtils.parseOLine = function(mediaSection) { + const line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + const parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5], + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function(blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + const lines = SDPUtils.splitLines(blob); + for (let i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if (typeof module === 'object') { + module.exports = SDPUtils; +} diff --git a/node_modules/vue-qrcode-reader/LICENSE b/node_modules/vue-qrcode-reader/LICENSE new file mode 100644 index 0000000..df30acf --- /dev/null +++ b/node_modules/vue-qrcode-reader/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Niklas Gruhn + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/vue-qrcode-reader/README.md b/node_modules/vue-qrcode-reader/README.md new file mode 100644 index 0000000..33f3fef --- /dev/null +++ b/node_modules/vue-qrcode-reader/README.md @@ -0,0 +1,205 @@ +

+ Logo + +
+
+ + + for Vue 3 + + + + npm monthly downloads + + +
+ + is maintained? yes + + + licence: MIT + + + + badges = awesome + + +
+ + + uses semantic release + + + + code style: prettier + + +
+ + + size minified + gzipped + + + + npm current version + + +
+ + + Mentioned in Awesome Vue + + +
+
+ live demos | + api reference +

+ +A set of Vue.js components for detecting QR codes and [various other barcode formats](https://github.com/Sec-ant/barcode-detector?tab=readme-ov-file#barcode-detector) right in the browser: + +- :movie_camera: `QrcodeStream` continuously scans frames from a camera stream. +- :put_litter_in_its_place: `QrcodeDropZone` is an empty region where you can drag-and-drop images to be decoded. +- :open_file_folder: `QrcodeCapture` is a classic file upload field, instantly scanning all files you select. + +All components are responsive. +Beyond that, close to zero styling. +Make them fit your layout. +Usage is simple and straight forward: + +```html + +``` + +```js +methods: { + onDetect (detectedCodes) { + // ... + } +} +``` + +### Preview + +

+ preview screencast 1 + preview screencast 2 +

+ +### Related Projects + +* [Barcode Detector Polyfill](https://github.com/Sec-ant/barcode-detector) +* [Svelte Port](https://github.com/ollema/svelte-qrcode-reader) + +# Installation :package: + +## With NPM + +Run + +```bash +npm install vue-qrcode-reader +``` + +You can import the components independantly + +```javascript +import { QrcodeStream, QrcodeDropZone, QrcodeCapture } from 'vue-qrcode-reader' + +const MyComponent = { + // + components: { + QrcodeStream, + QrcodeDropZone, + QrcodeCapture + } + + // ... +} +``` + +or register all of them globally right away + +```javascript +import Vue from 'vue' +import VueQrcodeReader from 'vue-qrcode-reader' + +Vue.use(VueQrcodeReader) +``` + +## Without NPM + +Include the following JS file: + +https://unpkg.com/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js + +Make sure to include it after Vue: + +```html + + +``` + +All components are automatically registered globally. +Use kebab-case to reference them in your templates: + +```html + + + +``` + +# Troubleshooting :zap: + +#### I don't see the camera when using `QrcodeStream`. + +- Check if it works on the demo page. Especially the [Handle Errors](https://gruhn.github.io/vue-qrcode-reader/demos/HandleErrors.html) demo, + since it renders error messages. + - The demo works but it doesn't work in my project: Listen for the `error` event to investigate errors. + - The demo doesn't work: Carefully review the Browser Support section above. + Maybe your device is just not supported. + +#### I'm running a dev server on localhost. How to test on my mobile device without HTTPS? + +- If your setup is Desktop Chrome + Android Chrome, use [Remote Debugging](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/) which allows your Android device to [access your local server as localhost](https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server). +- Otherwise use a reverse proxy like [ngrok](https://ngrok.com/) or [serveo](https://serveo.net/) to temporarily make your local server publicly available with HTTPS. +- There are also loads of serverless/static hosting services that have HTTPS enabled by default and where you can deploy your web app for free (e.g. _GitHub Pages_, _GitLab Pages_, _Google Firebase_, _Netlify_, _Heroku_, _ZEIT Now_, ...) + +#### Some of my QR codes are not being detected. + +- Make sure, there is some white border around the QR code. +- Test your QR codes in the upstream packages: [`barcode-detector`](https://github.com/Sec-ant/barcode-detector) -> [`zxing-wasm`](https://github.com/Sec-ant/zxing-wasm) -> [`zxing-cpp`](https://github.com/zxing-cpp/zxing-cpp), and file detection issues in the highest-level repository where the problem first occurs. + +#### 1D barcodes are not being detected. + +The default value for the `formats` prop is `"['qr_code']"`, which reflects the setting before the `formats` prop was available. +You'll need to add [other barcode formats](https://github.com/Sec-ant/barcode-detector?tab=readme-ov-file#barcode-detector) to this prop to detect those types of barcodes. +Check out [this demo](https://gruhn.github.io/vue-qrcode-reader/demos/FullDemo.html). + +#### How to make it work with Vue 2? + +Support is dropped but you can downgrade to vue-qrcode-reader v3.\* or lower. + +#### I get a "Failed to fetch" error at runtime for some Wasm file. + +That Wasm file implements the QR code detector. +Unfortunately, it's not very convenient to bundle this file with the package. +So by default we fetch it at runtime from a CDN. +That's an issue for offline applications or applications that run in a network with strict CSP policy. +For a workaround see: https://github.com/gruhn/vue-qrcode-reader/issues/354 + +#### `torch` is not supported on my device, although it has a flashlight. + +Support for `torch` is inconsistent across devices, cameras and browsers and operating systems. +On some devices the rear camera supports `torch` but the front camera doesn't, +even if the front camera actually has a flashlight. + +Furthermore, `torch` is not supported on iOS at all (last checked iOS 17.1). + +Visit [this page](https://gruhn.github.io/vue-qrcode-reader/select-camera-demo.html) with your device. +The list of links represents all cameras installed on the device. +If you click, the camera should be loaded. +Below the camera view the JSON object of "capabilities" is printed. +If it doesn't contain the key/value pair `"torch": true` then flashlight is not supported for that camera. + +This JSON object provided as payload of the [`camera-on` event](https://gruhn.github.io/vue-qrcode-reader/api/QrcodeStream.html#camera-on). diff --git a/node_modules/vue-qrcode-reader/dist/components/QrcodeCapture.vue.d.ts b/node_modules/vue-qrcode-reader/dist/components/QrcodeCapture.vue.d.ts new file mode 100644 index 0000000..ff4c4c4 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/components/QrcodeCapture.vue.d.ts @@ -0,0 +1,20 @@ +import { type PropType } from 'vue'; +import { type BarcodeFormat, type DetectedBarcode } from 'barcode-detector/pure'; +declare const _default: import("vue").DefineComponent<{ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; +}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { + detect: (detectedCodes: DetectedBarcode[]) => void; +}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default: () => BarcodeFormat[]; + }; +}>> & { + onDetect?: (detectedCodes: DetectedBarcode[]) => any; +}, { + formats: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +}, {}>; +export default _default; diff --git a/node_modules/vue-qrcode-reader/dist/components/QrcodeDropZone.vue.d.ts b/node_modules/vue-qrcode-reader/dist/components/QrcodeDropZone.vue.d.ts new file mode 100644 index 0000000..a336ee9 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/components/QrcodeDropZone.vue.d.ts @@ -0,0 +1,33 @@ +import { type PropType } from 'vue'; +import { type BarcodeFormat, type DetectedBarcode } from 'barcode-detector/pure'; +declare function __VLS_template(): { + default?(_: {}): any; +}; +declare const __VLS_component: import("vue").DefineComponent<{ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; +}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { + detect: (detectedCodes: DetectedBarcode[]) => void; + dragover: (isDraggingOver: boolean) => void; + error: (error: EmmitedError) => void; +}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default: () => BarcodeFormat[]; + }; +}>> & { + onError?: (error: EmmitedError) => any; + onDetect?: (detectedCodes: DetectedBarcode[]) => any; + onDragover?: (isDraggingOver: boolean) => any; +}, { + formats: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; +}, {}>; +declare const _default: __VLS_WithTemplateSlots>; +export default _default; +type __VLS_WithTemplateSlots = T & { + new (): { + $slots: S; + }; +}; diff --git a/node_modules/vue-qrcode-reader/dist/components/QrcodeStream.vue.d.ts b/node_modules/vue-qrcode-reader/dist/components/QrcodeStream.vue.d.ts new file mode 100644 index 0000000..bdeb75d --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/components/QrcodeStream.vue.d.ts @@ -0,0 +1,98 @@ +import type { DetectedBarcode, BarcodeFormat } from 'barcode-detector/pure'; +import { type PropType } from 'vue'; +declare function __VLS_template(): { + default?(_: {}): any; +}; +declare const __VLS_component: import("vue").DefineComponent<{ + /** + * Passes an object with various camera configuration options. + */ + constraints: { + type: PropType; + default(): MediaTrackConstraints; + }; + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: PropType<(detectedCodes: DetectedBarcode[], ctx: CanvasRenderingContext2D | null) => void>; + }; +}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { + detect: (detectedCodes: DetectedBarcode[]) => void; + "camera-on": (capabilities: Partial) => void; + "camera-off": () => void; + error: (error: EmmitedError) => void; +}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; + default(): MediaTrackConstraints; + }; + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: PropType; + default: () => BarcodeFormat[]; + }; + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: BooleanConstructor; + default: boolean; + }; + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: PropType<(detectedCodes: DetectedBarcode[], ctx: CanvasRenderingContext2D | null) => void>; + }; +}>> & { + onError?: (error: EmmitedError) => any; + onDetect?: (detectedCodes: DetectedBarcode[]) => any; + "onCamera-on"?: (capabilities: Partial) => any; + "onCamera-off"?: () => any; +}, { + formats: ("aztec" | "code_128" | "code_39" | "code_93" | "codabar" | "databar" | "databar_expanded" | "data_matrix" | "dx_film_edge" | "ean_13" | "ean_8" | "itf" | "maxi_code" | "micro_qr_code" | "pdf417" | "qr_code" | "rm_qr_code" | "upc_a" | "upc_e" | "linear_codes" | "matrix_codes" | "unknown")[]; + torch: boolean; + constraints: MediaTrackConstraints; + paused: boolean; +}, {}>; +declare const _default: __VLS_WithTemplateSlots>; +export default _default; +type __VLS_WithTemplateSlots = T & { + new (): { + $slots: S; + }; +}; diff --git a/node_modules/vue-qrcode-reader/dist/index.d.ts b/node_modules/vue-qrcode-reader/dist/index.d.ts new file mode 100644 index 0000000..c76151e --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/index.d.ts @@ -0,0 +1,9 @@ +import type { App, Plugin } from 'vue'; +import QrcodeStream from './components/QrcodeStream.vue'; +import QrcodeCapture from './components/QrcodeCapture.vue'; +import QrcodeDropZone from './components/QrcodeDropZone.vue'; +export declare function install(app: App): void; +export { QrcodeStream, QrcodeCapture, QrcodeDropZone }; +export { setZXingModuleOverrides, type BarcodeFormat } from 'barcode-detector/pure'; +declare const plugin: Plugin; +export { plugin as VueQrcodeReader }; diff --git a/node_modules/vue-qrcode-reader/dist/misc/callforth.d.ts b/node_modules/vue-qrcode-reader/dist/misc/callforth.d.ts new file mode 100644 index 0000000..13ef465 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/callforth.d.ts @@ -0,0 +1,6 @@ +export declare const eventOn: (eventTarget: EventTarget, successEvent: string, errorEvent?: string) => Promise; +export declare const timeout: (milliseconds: number) => Promise; +export declare const polling: (predicate: any, options: { + maxTries: number; + interval: number; +}) => Promise; diff --git a/node_modules/vue-qrcode-reader/dist/misc/camera.d.ts b/node_modules/vue-qrcode-reader/dist/misc/camera.d.ts new file mode 100644 index 0000000..da631ab --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/camera.d.ts @@ -0,0 +1,6 @@ +export declare function start(videoEl: HTMLVideoElement, { constraints, torch, restart }: { + constraints: MediaTrackConstraints; + torch: boolean; + restart?: boolean; +}): Promise>; +export declare function stop(): Promise; diff --git a/node_modules/vue-qrcode-reader/dist/misc/errors.d.ts b/node_modules/vue-qrcode-reader/dist/misc/errors.d.ts new file mode 100644 index 0000000..2897308 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/errors.d.ts @@ -0,0 +1,13 @@ +export declare class DropImageFetchError extends Error { + constructor(); +} +export declare class StreamApiNotSupportedError extends Error { + constructor(); +} +export declare class InsecureContextError extends Error { + constructor(); +} +export declare class StreamLoadTimeoutError extends Error { + constructor(); +} +export type EmmitedError = DropImageFetchError | StreamApiNotSupportedError | InsecureContextError | StreamLoadTimeoutError | Error; diff --git a/node_modules/vue-qrcode-reader/dist/misc/scanner.d.ts b/node_modules/vue-qrcode-reader/dist/misc/scanner.d.ts new file mode 100644 index 0000000..9e97a42 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/scanner.d.ts @@ -0,0 +1,26 @@ +import { type DetectedBarcode, type BarcodeFormat, BarcodeDetector } from 'barcode-detector/pure'; +declare global { + interface Window { + BarcodeDetector?: typeof BarcodeDetector; + } +} +/** + * Update the set of targeted barcode formats. In particular, this function + * can be called during scanning and the camera stream doesn't have to be + * interrupted. + */ +export declare function setScanningFormats(formats: BarcodeFormat[]): Promise; +type ScanHandler = (_: DetectedBarcode[]) => void; +/** + * Continuously extracts frames from camera stream and tries to read + * potentially pictured QR codes. + */ +export declare const keepScanning: (videoElement: HTMLVideoElement, { detectHandler, locateHandler, minDelay, formats }: { + detectHandler: ScanHandler; + locateHandler: ScanHandler; + minDelay: number; + formats: BarcodeFormat[]; +}) => Promise; +export declare const processFile: (file: File, formats?: BarcodeFormat[]) => Promise; +export declare const processUrl: (url: string, formats?: BarcodeFormat[]) => Promise; +export {}; diff --git a/node_modules/vue-qrcode-reader/dist/misc/shimGetUserMedia.d.ts b/node_modules/vue-qrcode-reader/dist/misc/shimGetUserMedia.d.ts new file mode 100644 index 0000000..40ff875 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/shimGetUserMedia.d.ts @@ -0,0 +1,2 @@ +declare const _default: (...args: any[]) => void; +export default _default; diff --git a/node_modules/vue-qrcode-reader/dist/misc/util.d.ts b/node_modules/vue-qrcode-reader/dist/misc/util.d.ts new file mode 100644 index 0000000..6b5bc5c --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/misc/util.d.ts @@ -0,0 +1,29 @@ +/** + * Takes a function `action` and returns a new function, that behaves + * like action but when called a second time does nothing. + */ +export declare const idempotent: (action: (x: any) => T) => (...args: any[]) => T; +/** + * Throws an error if the `condition` in the first argument is `false`. + * This function is useful to make assumptions explicit. For example, + * let's say we have a variable + * + * const value : string | undefined = ... + * + * but from the context we know that it can actually never be `undefined`. + * We can access attributes of `value` with + * + * value?.length + * + * but if the assumption is actually broken, we can a silent error. + * In contrast, with + * + * assert(value !== undefined, 'reason why we assume value always defined') + * value.length // no type error + * + * We make the assumption explicit and force a laud error. Also the type + * check can narrow the type of `value` to `string` after the `assert` and we + * can access properties without type error. + */ +export declare function assert(condition: boolean, failureMessage?: string): asserts condition; +export declare function assertNever(_witness: never): never; diff --git a/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js new file mode 100644 index 0000000..8dade65 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js @@ -0,0 +1,3306 @@ +import { defineComponent as jt, ref as we, watch as We, onMounted as vo, onUnmounted as yo, computed as Ut, openBlock as Lt, createElementBlock as Ht, createElementVNode as nt, normalizeStyle as go, withDirectives as wo, vShow as bo, renderSlot as Dr, withModifiers as at } from "vue"; +var Mr = (r, o, i) => { + if (!o.has(r)) + throw TypeError("Cannot " + i); +}, br = (r, o, i) => (Mr(r, o, "read from private field"), i ? i.call(r) : o.get(r)), Co = (r, o, i) => { + if (o.has(r)) + throw TypeError("Cannot add the same private member more than once"); + o instanceof WeakSet ? o.add(r) : o.set(r, i); +}, $o = (r, o, i, c) => (Mr(r, o, "write to private field"), o.set(r, i), i); +const Ar = [ + ["aztec", "Aztec"], + ["code_128", "Code128"], + ["code_39", "Code39"], + ["code_93", "Code93"], + ["codabar", "Codabar"], + ["databar", "DataBar"], + ["databar_expanded", "DataBarExpanded"], + ["data_matrix", "DataMatrix"], + ["dx_film_edge", "DXFilmEdge"], + ["ean_13", "EAN-13"], + ["ean_8", "EAN-8"], + ["itf", "ITF"], + ["maxi_code", "MaxiCode"], + ["micro_qr_code", "MicroQRCode"], + ["pdf417", "PDF417"], + ["qr_code", "QRCode"], + ["rm_qr_code", "rMQRCode"], + ["upc_a", "UPC-A"], + ["upc_e", "UPC-E"], + ["linear_codes", "Linear-Codes"], + ["matrix_codes", "Matrix-Codes"] +], _o = [...Ar, ["unknown"]].map((r) => r[0]), it = new Map( + Ar +); +function So(r) { + for (const [o, i] of it) + if (r === i) + return o; + return "unknown"; +} +function Po(r) { + if (xr(r)) + return { + width: r.naturalWidth, + height: r.naturalHeight + }; + if (Rr(r)) + return { + width: r.width.baseVal.value, + height: r.height.baseVal.value + }; + if (kr(r)) + return { + width: r.videoWidth, + height: r.videoHeight + }; + if (Fr(r)) + return { + width: r.width, + height: r.height + }; + if (Wr(r)) + return { + width: r.displayWidth, + height: r.displayHeight + }; + if (Ir(r)) + return { + width: r.width, + height: r.height + }; + if (Ur(r)) + return { + width: r.width, + height: r.height + }; + throw new TypeError( + "The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'." + ); +} +function xr(r) { + try { + return r instanceof HTMLImageElement; + } catch (o) { + return !1; + } +} +function Rr(r) { + try { + return r instanceof SVGImageElement; + } catch (o) { + return !1; + } +} +function kr(r) { + try { + return r instanceof HTMLVideoElement; + } catch (o) { + return !1; + } +} +function Ir(r) { + try { + return r instanceof HTMLCanvasElement; + } catch (o) { + return !1; + } +} +function Fr(r) { + try { + return r instanceof ImageBitmap; + } catch (o) { + return !1; + } +} +function Ur(r) { + try { + return r instanceof OffscreenCanvas; + } catch (o) { + return !1; + } +} +function Wr(r) { + try { + return r instanceof VideoFrame; + } catch (o) { + return !1; + } +} +function jr(r) { + try { + return r instanceof Blob; + } catch (o) { + return !1; + } +} +function To(r) { + try { + return r instanceof ImageData; + } catch (o) { + return !1; + } +} +function Eo(r, o) { + try { + const i = new OffscreenCanvas(r, o); + if (i.getContext("2d") instanceof OffscreenCanvasRenderingContext2D) + return i; + throw void 0; + } catch (i) { + const c = document.createElement("canvas"); + return c.width = r, c.height = o, c; + } +} +async function Lr(r) { + if (xr(r) && !await Ao(r)) + throw new DOMException( + "Failed to load or decode HTMLImageElement.", + "InvalidStateError" + ); + if (Rr(r) && !await xo(r)) + throw new DOMException( + "Failed to load or decode SVGImageElement.", + "InvalidStateError" + ); + if (Wr(r) && Ro(r)) + throw new DOMException("VideoFrame is closed.", "InvalidStateError"); + if (kr(r) && (r.readyState === 0 || r.readyState === 1)) + throw new DOMException("Invalid element or state.", "InvalidStateError"); + if (Fr(r) && Io(r)) + throw new DOMException( + "The image source is detached.", + "InvalidStateError" + ); + const { width: o, height: i } = Po(r); + if (o === 0 || i === 0) + return null; + const c = Eo(o, i).getContext("2d"); + c.drawImage(r, 0, 0); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Oo(r) { + let o; + try { + if (globalThis.createImageBitmap) + o = await createImageBitmap(r); + else if (globalThis.Image) { + o = new Image(); + let i = ""; + try { + i = URL.createObjectURL(r), o.src = i, await o.decode(); + } finally { + URL.revokeObjectURL(i); + } + } else + return r; + } catch (i) { + throw new DOMException( + "Failed to load or decode Blob.", + "InvalidStateError" + ); + } + return await Lr(o); +} +function Do(r) { + const { width: o, height: i } = r; + if (o === 0 || i === 0) + return null; + const c = r.getContext("2d"); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Mo(r) { + if (jr(r)) + return await Oo(r); + if (To(r)) { + if (ko(r)) + throw new DOMException( + "The image data has been detached.", + "InvalidStateError" + ); + return r; + } + return Ir(r) || Ur(r) ? Do(r) : await Lr(r); +} +async function Ao(r) { + try { + return await r.decode(), !0; + } catch (o) { + return !1; + } +} +async function xo(r) { + var o; + try { + return await ((o = r.decode) == null ? void 0 : o.call(r)), !0; + } catch (i) { + return !1; + } +} +function Ro(r) { + return r.format === null; +} +function ko(r) { + return r.data.buffer.byteLength === 0; +} +function Io(r) { + return r.width === 0 && r.height === 0; +} +function Cr(r, o) { + return r instanceof DOMException ? new DOMException(`${o}: ${r.message}`, r.name) : r instanceof Error ? new r.constructor(`${o}: ${r.message}`) : new Error(`${o}: ${r}`); +} +const $r = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function Fo(r) { + return r.join("|"); +} +function Uo(r) { + const o = _r(r); + let i = 0, c = $r.length - 1; + for (; i <= c; ) { + const l = Math.floor((i + c) / 2), h = $r[l], v = _r(h); + if (v === o) + return h; + v < o ? i = l + 1 : c = l - 1; + } + return "None"; +} +function _r(r) { + return r.toLowerCase().replace(/_-\[\]/g, ""); +} +function Wo(r, o) { + return r.Binarizer[o]; +} +function jo(r, o) { + return r.CharacterSet[o]; +} +const Lo = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function Ho(r) { + return Lo[r.value]; +} +function Bo(r, o) { + return r.EanAddOnSymbol[o]; +} +function Vo(r, o) { + return r.TextMode[o]; +} +const Ee = { + formats: [], + tryHarder: !0, + tryRotate: !0, + tryInvert: !0, + tryDownscale: !0, + binarizer: "LocalAverage", + isPure: !1, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: !1, + validateCode39CheckSum: !1, + validateITFCheckSum: !1, + returnCodabarStartEnd: !1, + returnErrors: !1, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function Hr(r, o) { + return { + ...o, + formats: Fo(o.formats), + binarizer: Wo(r, o.binarizer), + eanAddOnSymbol: Bo( + r, + o.eanAddOnSymbol + ), + textMode: Vo(r, o.textMode), + characterSet: jo( + r, + o.characterSet + ) + }; +} +function Br(r) { + return { + ...r, + format: Uo(r.format), + eccLevel: r.eccLevel, + contentType: Ho(r.contentType) + }; +} +const qo = { + locateFile: (r, o) => { + const i = r.match(/_(.+?)\.wasm$/); + return i ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}` : o + r; + } +}; +let Wt = /* @__PURE__ */ new WeakMap(); +function Bt(r, o) { + var i; + const c = Wt.get(r); + if (c != null && c.modulePromise && o === void 0) + return c.modulePromise; + const l = (i = c == null ? void 0 : c.moduleOverrides) != null ? i : qo, h = r({ + ...l + }); + return Wt.set(r, { + moduleOverrides: l, + modulePromise: h + }), h; +} +function No(r, o) { + Wt.set(r, { + moduleOverrides: o + }); +} +async function zo(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { size: h } = o, v = new Uint8Array(await o.arrayBuffer()), g = l._malloc(h); + l.HEAPU8.set(v, g); + const b = l.readBarcodesFromImage( + g, + h, + Hr(l, c) + ); + l._free(g); + const p = []; + for (let C = 0; C < b.size(); ++C) + p.push( + Br(b.get(C)) + ); + return p; +} +async function Go(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { + data: h, + width: v, + height: g, + data: { byteLength: b } + } = o, p = l._malloc(b); + l.HEAPU8.set(h, p); + const C = l.readBarcodesFromPixmap( + p, + v, + g, + Hr(l, c) + ); + l._free(p); + const S = []; + for (let $ = 0; $ < C.size(); ++$) + S.push( + Br(C.get($)) + ); + return S; +} +({ + ...Ee, + formats: [...Ee.formats] +}); +var lt = (() => { + var r = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(o = {}) { + var i = o, c, l; + i.ready = new Promise((e, t) => { + c = e, l = t; + }); + var h = Object.assign({}, i), v = "./this.program", g = typeof window == "object", b = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var p = ""; + function C(e) { + return i.locateFile ? i.locateFile(e, p) : p + e; + } + var S; + (g || b) && (b ? p = self.location.href : typeof document < "u" && document.currentScript && (p = document.currentScript.src), r && (p = r), p.indexOf("blob:") !== 0 ? p = p.substr(0, p.replace(/[?#].*/, "").lastIndexOf("/") + 1) : p = "", b && (S = (e) => { + var t = new XMLHttpRequest(); + return t.open("GET", e, !1), t.responseType = "arraybuffer", t.send(null), new Uint8Array(t.response); + })), i.print || console.log.bind(console); + var $ = i.printErr || console.error.bind(console); + Object.assign(i, h), h = null, i.arguments && i.arguments, i.thisProgram && (v = i.thisProgram), i.quit && i.quit; + var F; + i.wasmBinary && (F = i.wasmBinary), typeof WebAssembly != "object" && Z("no native wasm support detected"); + var U, W = !1, R, A, X, k, D, M, le, oe; + function be() { + var e = U.buffer; + i.HEAP8 = R = new Int8Array(e), i.HEAP16 = X = new Int16Array(e), i.HEAPU8 = A = new Uint8Array(e), i.HEAPU16 = k = new Uint16Array(e), i.HEAP32 = D = new Int32Array(e), i.HEAPU32 = M = new Uint32Array(e), i.HEAPF32 = le = new Float32Array(e), i.HEAPF64 = oe = new Float64Array(e); + } + var Ce = [], Oe = [], De = []; + function Le() { + if (i.preRun) + for (typeof i.preRun == "function" && (i.preRun = [i.preRun]); i.preRun.length; ) + ht(i.preRun.shift()); + gt(Ce); + } + function dt() { + gt(Oe); + } + function ft() { + if (i.postRun) + for (typeof i.postRun == "function" && (i.postRun = [i.postRun]); i.postRun.length; ) + Me(i.postRun.shift()); + gt(De); + } + function ht(e) { + Ce.unshift(e); + } + function pt(e) { + Oe.unshift(e); + } + function Me(e) { + De.unshift(e); + } + var te = 0, ve = null; + function mt(e) { + var t; + te++, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te); + } + function de(e) { + var t; + if (te--, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te), te == 0 && ve) { + var n = ve; + ve = null, n(); + } + } + function Z(e) { + var t; + (t = i.onAbort) === null || t === void 0 || t.call(i, e), e = "Aborted(" + e + ")", $(e), W = !0, e += ". Build with -sASSERTIONS for more info."; + var n = new WebAssembly.RuntimeError(e); + throw l(n), n; + } + var vt = "data:application/octet-stream;base64,", He = (e) => e.startsWith(vt), fe; + fe = "zxing_reader.wasm", He(fe) || (fe = C(fe)); + function Be(e) { + if (e == fe && F) + return new Uint8Array(F); + if (S) + return S(e); + throw "both async and sync fetching of the wasm failed"; + } + function yt(e) { + return !F && (g || b) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((t) => { + if (!t.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return t.arrayBuffer(); + }).catch(() => Be(e)) : Promise.resolve().then(() => Be(e)); + } + function Ve(e, t, n) { + return yt(e).then((a) => WebAssembly.instantiate(a, t)).then((a) => a).then(n, (a) => { + $(`failed to asynchronously prepare wasm: ${a}`), Z(a); + }); + } + function an(e, t, n, a) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !He(t) && typeof fetch == "function" ? fetch(t, { + credentials: "same-origin" + }).then((s) => { + var u = WebAssembly.instantiateStreaming(s, n); + return u.then(a, function(d) { + return $(`wasm streaming compile failed: ${d}`), $("falling back to ArrayBuffer instantiation"), Ve(t, n, a); + }); + }) : Ve(t, n, a); + } + function on() { + var e = { + a: Ga + }; + function t(a, s) { + return z = a.exports, U = z.ia, be(), Kt = z.ma, pt(z.ja), de(), z; + } + mt(); + function n(a) { + t(a.instance); + } + if (i.instantiateWasm) + try { + return i.instantiateWasm(e, t); + } catch (a) { + $(`Module.instantiateWasm callback failed with error: ${a}`), l(a); + } + return an(F, fe, e, n).catch(l), {}; + } + var gt = (e) => { + for (; e.length > 0; ) + e.shift()(i); + }; + i.noExitRuntime; + var qe = [], Ne = 0, sn = (e) => { + var t = new wt(e); + return t.get_caught() || (t.set_caught(!0), Ne--), t.set_rethrown(!1), qe.push(t), hr(t.excPtr), t.get_exception_ptr(); + }, ie = 0, cn = () => { + j(0, 0); + var e = qe.pop(); + fr(e.excPtr), ie = 0; + }; + function wt(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(t) { + M[this.ptr + 4 >> 2] = t; + }, this.get_type = function() { + return M[this.ptr + 4 >> 2]; + }, this.set_destructor = function(t) { + M[this.ptr + 8 >> 2] = t; + }, this.get_destructor = function() { + return M[this.ptr + 8 >> 2]; + }, this.set_caught = function(t) { + t = t ? 1 : 0, R[this.ptr + 12 >> 0] = t; + }, this.get_caught = function() { + return R[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(t) { + t = t ? 1 : 0, R[this.ptr + 13 >> 0] = t; + }, this.get_rethrown = function() { + return R[this.ptr + 13 >> 0] != 0; + }, this.init = function(t, n) { + this.set_adjusted_ptr(0), this.set_type(t), this.set_destructor(n); + }, this.set_adjusted_ptr = function(t) { + M[this.ptr + 16 >> 2] = t; + }, this.get_adjusted_ptr = function() { + return M[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var t = mr(this.get_type()); + if (t) + return M[this.excPtr >> 2]; + var n = this.get_adjusted_ptr(); + return n !== 0 ? n : this.excPtr; + }; + } + var un = (e) => { + throw ie || (ie = e), ie; + }, bt = (e) => { + var t = ie; + if (!t) + return Ue(0), 0; + var n = new wt(t); + n.set_adjusted_ptr(t); + var a = n.get_type(); + if (!a) + return Ue(0), t; + for (var s in e) { + var u = e[s]; + if (u === 0 || u === a) + break; + var d = n.ptr + 16; + if (pr(u, a, d)) + return Ue(u), t; + } + return Ue(a), t; + }, ln = () => bt([]), dn = (e) => bt([e]), fn = (e, t) => bt([e, t]), hn = () => { + var e = qe.pop(); + e || Z("no exception to throw"); + var t = e.excPtr; + throw e.get_rethrown() || (qe.push(e), e.set_rethrown(!0), e.set_caught(!1), Ne++), ie = t, ie; + }, pn = (e, t, n) => { + var a = new wt(e); + throw a.init(t, n), ie = e, Ne++, ie; + }, mn = () => Ne, ze = {}, Ct = (e) => { + for (; e.length; ) { + var t = e.pop(), n = e.pop(); + n(t); + } + }; + function $t(e) { + return this.fromWireType(D[e >> 2]); + } + var $e = {}, ye = {}, Ge = {}, qt, Ye = (e) => { + throw new qt(e); + }, ge = (e, t, n) => { + e.forEach(function(f) { + Ge[f] = t; + }); + function a(f) { + var m = n(f); + m.length !== e.length && Ye("Mismatched type converter count"); + for (var w = 0; w < e.length; ++w) + re(e[w], m[w]); + } + var s = new Array(t.length), u = [], d = 0; + t.forEach((f, m) => { + ye.hasOwnProperty(f) ? s[m] = ye[f] : (u.push(f), $e.hasOwnProperty(f) || ($e[f] = []), $e[f].push(() => { + s[m] = ye[f], ++d, d === u.length && a(s); + })); + }), u.length === 0 && a(s); + }, vn = (e) => { + var t = ze[e]; + delete ze[e]; + var n = t.rawConstructor, a = t.rawDestructor, s = t.fields, u = s.map((d) => d.getterReturnType).concat(s.map((d) => d.setterArgumentType)); + ge([e], u, (d) => { + var f = {}; + return s.forEach((m, w) => { + var _ = m.fieldName, T = d[w], E = m.getter, O = m.getterContext, L = d[w + s.length], q = m.setter, I = m.setterContext; + f[_] = { + read: (J) => T.fromWireType(E(O, J)), + write: (J, y) => { + var P = []; + q(I, J, L.toWireType(P, y)), Ct(P); + } + }; + }), [{ + name: t.name, + fromWireType: (m) => { + var w = {}; + for (var _ in f) + w[_] = f[_].read(m); + return a(m), w; + }, + toWireType: (m, w) => { + for (var _ in f) + if (!(_ in w)) + throw new TypeError(`Missing field: "${_}"`); + var T = n(); + for (_ in f) + f[_].write(T, w[_]); + return m !== null && m.push(a, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: a + }]; + }); + }, yn = (e, t, n, a, s) => { + }, gn = () => { + for (var e = new Array(256), t = 0; t < 256; ++t) + e[t] = String.fromCharCode(t); + Nt = e; + }, Nt, Y = (e) => { + for (var t = "", n = e; A[n]; ) + t += Nt[A[n++]]; + return t; + }, _e, x = (e) => { + throw new _e(e); + }; + function wn(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var a = t.name; + if (e || x(`type "${a}" must have a positive integer typeid pointer`), ye.hasOwnProperty(e)) { + if (n.ignoreDuplicateRegistrations) + return; + x(`Cannot register type '${a}' twice`); + } + if (ye[e] = t, delete Ge[e], $e.hasOwnProperty(e)) { + var s = $e[e]; + delete $e[e], s.forEach((u) => u()); + } + } + function re(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in t)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return wn(e, t, n); + } + var ne = 8, bn = (e, t, n, a) => { + t = Y(t), re(e, { + name: t, + fromWireType: function(s) { + return !!s; + }, + toWireType: function(s, u) { + return u ? n : a; + }, + argPackAdvance: ne, + readValueFromPointer: function(s) { + return this.fromWireType(A[s]); + }, + destructorFunction: null + }); + }, Cn = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), _t = (e) => { + function t(n) { + return n.$$.ptrType.registeredClass.name; + } + x(t(e) + " instance already deleted"); + }, St = !1, zt = (e) => { + }, $n = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, Gt = (e) => { + e.count.value -= 1; + var t = e.count.value === 0; + t && $n(e); + }, Yt = (e, t, n) => { + if (t === n) + return e; + if (n.baseClass === void 0) + return null; + var a = Yt(e, t, n.baseClass); + return a === null ? null : n.downcast(a); + }, Jt = {}, _n = () => Object.keys(Re).length, Sn = () => { + var e = []; + for (var t in Re) + Re.hasOwnProperty(t) && e.push(Re[t]); + return e; + }, Ae = [], Pt = () => { + for (; Ae.length; ) { + var e = Ae.pop(); + e.$$.deleteScheduled = !1, e.delete(); + } + }, xe, Pn = (e) => { + xe = e, Ae.length && xe && xe(Pt); + }, Tn = () => { + i.getInheritedInstanceCount = _n, i.getLiveInheritedInstances = Sn, i.flushPendingDeletes = Pt, i.setDelayFunction = Pn; + }, Re = {}, En = (e, t) => { + for (t === void 0 && x("ptr should not be undefined"); e.baseClass; ) + t = e.upcast(t), e = e.baseClass; + return t; + }, On = (e, t) => (t = En(e, t), Re[t]), Je = (e, t) => { + (!t.ptrType || !t.ptr) && Ye("makeClassHandle requires ptr and ptrType"); + var n = !!t.smartPtrType, a = !!t.smartPtr; + return n !== a && Ye("Both smartPtrType and smartPtr must be specified"), t.count = { + value: 1 + }, ke(Object.create(e, { + $$: { + value: t, + writable: !0 + } + })); + }; + function Dn(e) { + var t = this.getPointee(e); + if (!t) + return this.destructor(e), null; + var n = On(this.registeredClass, t); + if (n !== void 0) { + if (n.$$.count.value === 0) + return n.$$.ptr = t, n.$$.smartPtr = e, n.clone(); + var a = n.clone(); + return this.destructor(e), a; + } + function s() { + return this.isSmartPointer ? Je(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: t, + smartPtrType: this, + smartPtr: e + }) : Je(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var u = this.registeredClass.getActualType(t), d = Jt[u]; + if (!d) + return s.call(this); + var f; + this.isConst ? f = d.constPointerType : f = d.pointerType; + var m = Yt(t, this.registeredClass, f.registeredClass); + return m === null ? s.call(this) : this.isSmartPointer ? Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m, + smartPtrType: this, + smartPtr: e + }) : Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m + }); + } + var ke = (e) => typeof FinalizationRegistry > "u" ? (ke = (t) => t, e) : (St = new FinalizationRegistry((t) => { + Gt(t.$$); + }), ke = (t) => { + var n = t.$$, a = !!n.smartPtr; + if (a) { + var s = { + $$: n + }; + St.register(t, s, t); + } + return t; + }, zt = (t) => St.unregister(t), ke(e)), Mn = () => { + Object.assign(Qe.prototype, { + isAliasOf(e) { + if (!(this instanceof Qe) || !(e instanceof Qe)) + return !1; + var t = this.$$.ptrType.registeredClass, n = this.$$.ptr; + e.$$ = e.$$; + for (var a = e.$$.ptrType.registeredClass, s = e.$$.ptr; t.baseClass; ) + n = t.upcast(n), t = t.baseClass; + for (; a.baseClass; ) + s = a.upcast(s), a = a.baseClass; + return t === a && n === s; + }, + clone() { + if (this.$$.ptr || _t(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ke(Object.create(Object.getPrototypeOf(this), { + $$: { + value: Cn(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e; + }, + delete() { + this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), zt(this), Gt(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), Ae.push(this), Ae.length === 1 && xe && xe(Pt), this.$$.deleteScheduled = !0, this; + } + }); + }; + function Qe() { + } + var Ie = (e, t) => Object.defineProperty(t, "name", { + value: e + }), Qt = (e, t, n) => { + if (e[t].overloadTable === void 0) { + var a = e[t]; + e[t] = function() { + return e[t].overloadTable.hasOwnProperty(arguments.length) || x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`), e[t].overloadTable[arguments.length].apply(this, arguments); + }, e[t].overloadTable = [], e[t].overloadTable[a.argCount] = a; + } + }, Tt = (e, t, n) => { + i.hasOwnProperty(e) ? ((n === void 0 || i[e].overloadTable !== void 0 && i[e].overloadTable[n] !== void 0) && x(`Cannot register public name '${e}' twice`), Qt(i, e, e), i.hasOwnProperty(n) && x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`), i[e].overloadTable[n] = t) : (i[e] = t, n !== void 0 && (i[e].numArguments = n)); + }, An = 48, xn = 57, Rn = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var t = e.charCodeAt(0); + return t >= An && t <= xn ? `_${e}` : e; + }; + function kn(e, t, n, a, s, u, d, f) { + this.name = e, this.constructor = t, this.instancePrototype = n, this.rawDestructor = a, this.baseClass = s, this.getActualType = u, this.upcast = d, this.downcast = f, this.pureVirtualFunctions = []; + } + var Et = (e, t, n) => { + for (; t !== n; ) + t.upcast || x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`), e = t.upcast(e), t = t.baseClass; + return e; + }; + function In(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Fn(e, t) { + var n; + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), this.isSmartPointer ? (n = this.rawConstructor(), e !== null && e.push(this.rawDestructor, n), n) : 0; + (!t || !t.$$) && x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + var a = t.$$.ptrType.registeredClass; + if (n = Et(t.$$.ptr, a, this.registeredClass), this.isSmartPointer) + switch (t.$$.smartPtr === void 0 && x("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + t.$$.smartPtrType === this ? n = t.$$.smartPtr : x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + n = t.$$.smartPtr; + break; + case 2: + if (t.$$.smartPtrType === this) + n = t.$$.smartPtr; + else { + var s = t.clone(); + n = this.rawShare(n, se.toHandle(() => s.delete())), e !== null && e.push(this.rawDestructor, n); + } + break; + default: + x("Unsupporting sharing policy"); + } + return n; + } + function Un(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Xt(e) { + return this.fromWireType(M[e >> 2]); + } + var Wn = () => { + Object.assign(Xe.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var t; + (t = this.rawDestructor) === null || t === void 0 || t.call(this, e); + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: Dn + }); + }; + function Xe(e, t, n, a, s, u, d, f, m, w, _) { + this.name = e, this.registeredClass = t, this.isReference = n, this.isConst = a, this.isSmartPointer = s, this.pointeeType = u, this.sharingPolicy = d, this.rawGetPointee = f, this.rawConstructor = m, this.rawShare = w, this.rawDestructor = _, !s && t.baseClass === void 0 ? a ? (this.toWireType = In, this.destructorFunction = null) : (this.toWireType = Un, this.destructorFunction = null) : this.toWireType = Fn; + } + var Zt = (e, t, n) => { + i.hasOwnProperty(e) || Ye("Replacing nonexistant public symbol"), i[e].overloadTable !== void 0 && n !== void 0 ? i[e].overloadTable[n] = t : (i[e] = t, i[e].argCount = n); + }, jn = (e, t, n) => { + var a = i["dynCall_" + e]; + return n && n.length ? a.apply(null, [t].concat(n)) : a.call(null, t); + }, Ze = [], Kt, H = (e) => { + var t = Ze[e]; + return t || (e >= Ze.length && (Ze.length = e + 1), Ze[e] = t = Kt.get(e)), t; + }, Ln = (e, t, n) => { + if (e.includes("j")) + return jn(e, t, n); + var a = H(t).apply(null, n); + return a; + }, Hn = (e, t) => { + var n = []; + return function() { + return n.length = 0, Object.assign(n, arguments), Ln(e, t, n); + }; + }, ee = (e, t) => { + e = Y(e); + function n() { + return e.includes("j") ? Hn(e, t) : H(t); + } + var a = n(); + return typeof a != "function" && x(`unknown function pointer with signature ${e}: ${t}`), a; + }, Bn = (e, t) => { + var n = Ie(t, function(a) { + this.name = t, this.message = a; + var s = new Error(a).stack; + s !== void 0 && (this.stack = this.toString() + ` +` + s.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return n.prototype = Object.create(e.prototype), n.prototype.constructor = n, n.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, n; + }, er, tr = (e) => { + var t = dr(e), n = Y(t); + return ce(t), n; + }, Ke = (e, t) => { + var n = [], a = {}; + function s(u) { + if (!a[u] && !ye[u]) { + if (Ge[u]) { + Ge[u].forEach(s); + return; + } + n.push(u), a[u] = !0; + } + } + throw t.forEach(s), new er(`${e}: ` + n.map(tr).join([", "])); + }, Vn = (e, t, n, a, s, u, d, f, m, w, _, T, E) => { + _ = Y(_), u = ee(s, u), f && (f = ee(d, f)), w && (w = ee(m, w)), E = ee(T, E); + var O = Rn(_); + Tt(O, function() { + Ke(`Cannot construct ${_} due to unbound types`, [a]); + }), ge([e, t, n], a ? [a] : [], function(L) { + L = L[0]; + var q, I; + a ? (q = L.registeredClass, I = q.instancePrototype) : I = Qe.prototype; + var J = Ie(_, function() { + if (Object.getPrototypeOf(this) !== y) + throw new _e("Use 'new' to construct " + _); + if (P.constructor_body === void 0) + throw new _e(_ + " has no accessible constructor"); + var wr = P.constructor_body[arguments.length]; + if (wr === void 0) + throw new _e(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`); + return wr.apply(this, arguments); + }), y = Object.create(I, { + constructor: { + value: J + } + }); + J.prototype = y; + var P = new kn(_, J, y, E, q, u, f, w); + if (P.baseClass) { + var N, G; + (G = (N = P.baseClass).__derivedClasses) !== null && G !== void 0 || (N.__derivedClasses = []), P.baseClass.__derivedClasses.push(P); + } + var Se = new Xe(_, P, !0, !1, !1), rt = new Xe(_ + "*", P, !1, !1, !1), gr = new Xe(_ + " const*", P, !1, !0, !1); + return Jt[e] = { + pointerType: rt, + constPointerType: gr + }, Zt(O, J), [Se, rt, gr]; + }); + }, Ot = (e, t) => { + for (var n = [], a = 0; a < e; a++) + n.push(M[t + a * 4 >> 2]); + return n; + }; + function qn(e) { + for (var t = 1; t < e.length; ++t) + if (e[t] !== null && e[t].destructorFunction === void 0) + return !0; + return !1; + } + function Dt(e, t, n, a, s, u) { + var d = t.length; + d < 2 && x("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var f = t[1] !== null && n !== null, m = qn(t), w = t[0].name !== "void", _ = d - 2, T = new Array(_), E = [], O = [], L = function() { + arguments.length !== _ && x(`function ${e} called with ${arguments.length} arguments, expected ${_}`), O.length = 0; + var q; + E.length = f ? 2 : 1, E[0] = s, f && (q = t[1].toWireType(O, this), E[1] = q); + for (var I = 0; I < _; ++I) + T[I] = t[I + 2].toWireType(O, arguments[I]), E.push(T[I]); + var J = a.apply(null, E); + function y(P) { + if (m) + Ct(O); + else + for (var N = f ? 1 : 2; N < t.length; N++) { + var G = N === 1 ? q : T[N - 2]; + t[N].destructorFunction !== null && t[N].destructorFunction(G); + } + if (w) + return t[0].fromWireType(P); + } + return y(J); + }; + return Ie(e, L); + } + var Nn = (e, t, n, a, s, u) => { + var d = Ot(t, n); + s = ee(a, s), ge([], [e], function(f) { + f = f[0]; + var m = `constructor ${f.name}`; + if (f.registeredClass.constructor_body === void 0 && (f.registeredClass.constructor_body = []), f.registeredClass.constructor_body[t - 1] !== void 0) + throw new _e(`Cannot register multiple constructors with identical number of parameters (${t - 1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return f.registeredClass.constructor_body[t - 1] = () => { + Ke(`Cannot construct ${f.name} due to unbound types`, d); + }, ge([], d, (w) => (w.splice(1, 0, null), f.registeredClass.constructor_body[t - 1] = Dt(m, w, null, s, u), [])), []; + }); + }, rr = (e) => { + e = e.trim(); + const t = e.indexOf("("); + return t !== -1 ? e.substr(0, t) : e; + }, zn = (e, t, n, a, s, u, d, f, m) => { + var w = Ot(n, a); + t = Y(t), t = rr(t), u = ee(s, u), ge([], [e], function(_) { + _ = _[0]; + var T = `${_.name}.${t}`; + t.startsWith("@@") && (t = Symbol[t.substring(2)]), f && _.registeredClass.pureVirtualFunctions.push(t); + function E() { + Ke(`Cannot call ${T} due to unbound types`, w); + } + var O = _.registeredClass.instancePrototype, L = O[t]; + return L === void 0 || L.overloadTable === void 0 && L.className !== _.name && L.argCount === n - 2 ? (E.argCount = n - 2, E.className = _.name, O[t] = E) : (Qt(O, t, T), O[t].overloadTable[n - 2] = E), ge([], w, function(q) { + var I = Dt(T, q, _, u, d); + return O[t].overloadTable === void 0 ? (I.argCount = n - 2, O[t] = I) : O[t].overloadTable[n - 2] = I, []; + }), []; + }); + }; + function Gn() { + Object.assign(nr.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var t = this.freelist.pop() || this.allocated.length; + return this.allocated[t] = e, t; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function nr() { + this.allocated = [void 0], this.freelist = []; + } + var K = new nr(), Mt = (e) => { + e >= K.reserved && --K.get(e).refcount === 0 && K.free(e); + }, Yn = () => { + for (var e = 0, t = K.reserved; t < K.allocated.length; ++t) + K.allocated[t] !== void 0 && ++e; + return e; + }, Jn = () => { + K.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), K.reserved = K.allocated.length, i.count_emval_handles = Yn; + }, se = { + toValue: (e) => (e || x("Cannot use deleted val. handle = " + e), K.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return K.allocate({ + refcount: 1, + value: e + }); + } + } + }, Qn = (e, t) => { + t = Y(t), re(e, { + name: t, + fromWireType: (n) => { + var a = se.toValue(n); + return Mt(n), a; + }, + toWireType: (n, a) => se.toHandle(a), + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: null + }); + }, Xn = (e, t, n) => { + switch (t) { + case 1: + return n ? function(a) { + return this.fromWireType(R[a >> 0]); + } : function(a) { + return this.fromWireType(A[a >> 0]); + }; + case 2: + return n ? function(a) { + return this.fromWireType(X[a >> 1]); + } : function(a) { + return this.fromWireType(k[a >> 1]); + }; + case 4: + return n ? function(a) { + return this.fromWireType(D[a >> 2]); + } : function(a) { + return this.fromWireType(M[a >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, Zn = (e, t, n, a) => { + t = Y(t); + function s() { + } + s.values = {}, re(e, { + name: t, + constructor: s, + fromWireType: function(u) { + return this.constructor.values[u]; + }, + toWireType: (u, d) => d.value, + argPackAdvance: ne, + readValueFromPointer: Xn(t, n, a), + destructorFunction: null + }), Tt(t, s); + }, At = (e, t) => { + var n = ye[e]; + return n === void 0 && x(t + " has unknown type " + tr(e)), n; + }, Kn = (e, t, n) => { + var a = At(e, "enum"); + t = Y(t); + var s = a.constructor, u = Object.create(a.constructor.prototype, { + value: { + value: n + }, + constructor: { + value: Ie(`${a.name}_${t}`, function() { + }) + } + }); + s.values[n] = u, s[t] = u; + }, xt = (e) => { + if (e === null) + return "null"; + var t = typeof e; + return t === "object" || t === "array" || t === "function" ? e.toString() : "" + e; + }, ea = (e, t) => { + switch (t) { + case 4: + return function(n) { + return this.fromWireType(le[n >> 2]); + }; + case 8: + return function(n) { + return this.fromWireType(oe[n >> 3]); + }; + default: + throw new TypeError(`invalid float width (${t}): ${e}`); + } + }, ta = (e, t, n) => { + t = Y(t), re(e, { + name: t, + fromWireType: (a) => a, + toWireType: (a, s) => s, + argPackAdvance: ne, + readValueFromPointer: ea(t, n), + destructorFunction: null + }); + }, ra = (e, t, n, a, s, u, d) => { + var f = Ot(t, n); + e = Y(e), e = rr(e), s = ee(a, s), Tt(e, function() { + Ke(`Cannot call ${e} due to unbound types`, f); + }, t - 1), ge([], f, function(m) { + var w = [m[0], null].concat(m.slice(1)); + return Zt(e, Dt(e, w, null, s, u), t - 1), []; + }); + }, na = (e, t, n) => { + switch (t) { + case 1: + return n ? (a) => R[a >> 0] : (a) => A[a >> 0]; + case 2: + return n ? (a) => X[a >> 1] : (a) => k[a >> 1]; + case 4: + return n ? (a) => D[a >> 2] : (a) => M[a >> 2]; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, aa = (e, t, n, a, s) => { + t = Y(t); + var u = (_) => _; + if (a === 0) { + var d = 32 - 8 * n; + u = (_) => _ << d >>> d; + } + var f = t.includes("unsigned"), m = (_, T) => { + }, w; + f ? w = function(_, T) { + return m(T, this.name), T >>> 0; + } : w = function(_, T) { + return m(T, this.name), T; + }, re(e, { + name: t, + fromWireType: u, + toWireType: w, + argPackAdvance: ne, + readValueFromPointer: na(t, n, a !== 0), + destructorFunction: null + }); + }, oa = (e, t, n) => { + var a = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], s = a[t]; + function u(d) { + var f = M[d >> 2], m = M[d + 4 >> 2]; + return new s(R.buffer, m, f); + } + n = Y(n), re(e, { + name: n, + fromWireType: u, + argPackAdvance: ne, + readValueFromPointer: u + }, { + ignoreDuplicateRegistrations: !0 + }); + }, ar = (e, t, n, a) => { + if (!(a > 0)) + return 0; + for (var s = n, u = n + a - 1, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (f <= 127) { + if (n >= u) + break; + t[n++] = f; + } else if (f <= 2047) { + if (n + 1 >= u) + break; + t[n++] = 192 | f >> 6, t[n++] = 128 | f & 63; + } else if (f <= 65535) { + if (n + 2 >= u) + break; + t[n++] = 224 | f >> 12, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } else { + if (n + 3 >= u) + break; + t[n++] = 240 | f >> 18, t[n++] = 128 | f >> 12 & 63, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } + } + return t[n] = 0, n - s; + }, ia = (e, t, n) => ar(e, A, t, n), or = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a <= 127 ? t++ : a <= 2047 ? t += 2 : a >= 55296 && a <= 57343 ? (t += 4, ++n) : t += 3; + } + return t; + }, ir = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, sa = (e, t, n) => { + for (var a = t + n, s = t; e[s] && !(s >= a); ) + ++s; + if (s - t > 16 && e.buffer && ir) + return ir.decode(e.subarray(t, s)); + for (var u = ""; t < s; ) { + var d = e[t++]; + if (!(d & 128)) { + u += String.fromCharCode(d); + continue; + } + var f = e[t++] & 63; + if ((d & 224) == 192) { + u += String.fromCharCode((d & 31) << 6 | f); + continue; + } + var m = e[t++] & 63; + if ((d & 240) == 224 ? d = (d & 15) << 12 | f << 6 | m : d = (d & 7) << 18 | f << 12 | m << 6 | e[t++] & 63, d < 65536) + u += String.fromCharCode(d); + else { + var w = d - 65536; + u += String.fromCharCode(55296 | w >> 10, 56320 | w & 1023); + } + } + return u; + }, Rt = (e, t) => e ? sa(A, e, t) : "", ca = (e, t) => { + t = Y(t); + var n = t === "std::string"; + re(e, { + name: t, + fromWireType(a) { + var s = M[a >> 2], u = a + 4, d; + if (n) + for (var f = u, m = 0; m <= s; ++m) { + var w = u + m; + if (m == s || A[w] == 0) { + var _ = w - f, T = Rt(f, _); + d === void 0 ? d = T : (d += "\0", d += T), f = w + 1; + } + } + else { + for (var E = new Array(s), m = 0; m < s; ++m) + E[m] = String.fromCharCode(A[u + m]); + d = E.join(""); + } + return ce(a), d; + }, + toWireType(a, s) { + s instanceof ArrayBuffer && (s = new Uint8Array(s)); + var u, d = typeof s == "string"; + d || s instanceof Uint8Array || s instanceof Uint8ClampedArray || s instanceof Int8Array || x("Cannot pass non-string to std::string"), n && d ? u = or(s) : u = s.length; + var f = Ft(4 + u + 1), m = f + 4; + if (M[f >> 2] = u, n && d) + ia(s, m, u + 1); + else if (d) + for (var w = 0; w < u; ++w) { + var _ = s.charCodeAt(w); + _ > 255 && (ce(m), x("String has UTF-16 code units that do not fit in 8 bits")), A[m + w] = _; + } + else + for (var w = 0; w < u; ++w) + A[m + w] = s[w]; + return a !== null && a.push(ce, f), f; + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + destructorFunction(a) { + ce(a); + } + }); + }, sr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, ua = (e, t) => { + for (var n = e, a = n >> 1, s = a + t / 2; !(a >= s) && k[a]; ) + ++a; + if (n = a << 1, n - e > 32 && sr) + return sr.decode(A.subarray(e, n)); + for (var u = "", d = 0; !(d >= t / 2); ++d) { + var f = X[e + d * 2 >> 1]; + if (f == 0) + break; + u += String.fromCharCode(f); + } + return u; + }, la = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 2) + return 0; + n -= 2; + for (var s = t, u = n < e.length * 2 ? n / 2 : e.length, d = 0; d < u; ++d) { + var f = e.charCodeAt(d); + X[t >> 1] = f, t += 2; + } + return X[t >> 1] = 0, t - s; + }, da = (e) => e.length * 2, fa = (e, t) => { + for (var n = 0, a = ""; !(n >= t / 4); ) { + var s = D[e + n * 4 >> 2]; + if (s == 0) + break; + if (++n, s >= 65536) { + var u = s - 65536; + a += String.fromCharCode(55296 | u >> 10, 56320 | u & 1023); + } else + a += String.fromCharCode(s); + } + return a; + }, ha = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 4) + return 0; + for (var s = t, u = s + n - 4, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (D[t >> 2] = f, t += 4, t + 4 > u) + break; + } + return D[t >> 2] = 0, t - s; + }, pa = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a >= 55296 && a <= 57343 && ++n, t += 4; + } + return t; + }, ma = (e, t, n) => { + n = Y(n); + var a, s, u, d, f; + t === 2 ? (a = ua, s = la, d = da, u = () => k, f = 1) : t === 4 && (a = fa, s = ha, d = pa, u = () => M, f = 2), re(e, { + name: n, + fromWireType: (m) => { + for (var w = M[m >> 2], _ = u(), T, E = m + 4, O = 0; O <= w; ++O) { + var L = m + 4 + O * t; + if (O == w || _[L >> f] == 0) { + var q = L - E, I = a(E, q); + T === void 0 ? T = I : (T += "\0", T += I), E = L + t; + } + } + return ce(m), T; + }, + toWireType: (m, w) => { + typeof w != "string" && x(`Cannot pass non-string to C++ string type ${n}`); + var _ = d(w), T = Ft(4 + _ + t); + return M[T >> 2] = _ >> f, s(w, T + 4, _ + t), m !== null && m.push(ce, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction(m) { + ce(m); + } + }); + }, va = (e, t, n, a, s, u) => { + ze[e] = { + name: Y(t), + rawConstructor: ee(n, a), + rawDestructor: ee(s, u), + fields: [] + }; + }, ya = (e, t, n, a, s, u, d, f, m, w) => { + ze[e].fields.push({ + fieldName: Y(t), + getterReturnType: n, + getter: ee(a, s), + getterContext: u, + setterArgumentType: d, + setter: ee(f, m), + setterContext: w + }); + }, ga = (e, t) => { + t = Y(t), re(e, { + isVoid: !0, + name: t, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (n, a) => { + } + }); + }, kt = [], wa = (e, t, n, a) => (e = kt[e], t = se.toValue(t), e(null, t, n, a)), ba = {}, Ca = (e) => { + var t = ba[e]; + return t === void 0 ? Y(e) : t; + }, cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(t) { + t.$$$embind_global$$$ = t; + var n = typeof $$$embind_global$$$ == "object" && t.$$$embind_global$$$ == t; + return n || delete t.$$$embind_global$$$, n; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, $a = (e) => e === 0 ? se.toHandle(cr()) : (e = Ca(e), se.toHandle(cr()[e])), _a = (e) => { + var t = kt.length; + return kt.push(e), t; + }, Sa = (e, t) => { + for (var n = new Array(e), a = 0; a < e; ++a) + n[a] = At(M[t + a * 4 >> 2], "parameter " + a); + return n; + }, Pa = Reflect.construct, Ta = (e, t, n) => { + var a = [], s = e.toWireType(a, n); + return a.length && (M[t >> 2] = se.toHandle(a)), s; + }, Ea = (e, t, n) => { + var a = Sa(e, t), s = a.shift(); + e--; + var u = new Array(e), d = (m, w, _, T) => { + for (var E = 0, O = 0; O < e; ++O) + u[O] = a[O].readValueFromPointer(T + E), E += a[O].argPackAdvance; + for (var L = n === 1 ? Pa(w, u) : w.apply(m, u), O = 0; O < e; ++O) { + var q, I; + (q = (I = a[O]).deleteObject) === null || q === void 0 || q.call(I, u[O]); + } + return Ta(s, _, L); + }, f = `methodCaller<(${a.map((m) => m.name).join(", ")}) => ${s.name}>`; + return _a(Ie(f, d)); + }, Oa = (e) => { + e > 4 && (K.get(e).refcount += 1); + }, Da = (e) => { + var t = se.toValue(e); + Ct(t), Mt(e); + }, Ma = (e, t) => { + e = At(e, "_emval_take_value"); + var n = e.readValueFromPointer(t); + return se.toHandle(n); + }, Aa = () => { + Z(""); + }, xa = (e, t, n) => A.copyWithin(e, t, t + n), Ra = () => 2147483648, ka = (e) => { + var t = U.buffer, n = (e - t.byteLength + 65535) / 65536; + try { + return U.grow(n), be(), 1; + } catch (a) { + } + }, Ia = (e) => { + var t = A.length; + e >>>= 0; + var n = Ra(); + if (e > n) + return !1; + for (var a = (m, w) => m + (w - m % w) % w, s = 1; s <= 4; s *= 2) { + var u = t * (1 + 0.2 / s); + u = Math.min(u, e + 100663296); + var d = Math.min(n, a(Math.max(e, u), 65536)), f = ka(d); + if (f) + return !0; + } + return !1; + }, It = {}, Fa = () => v || "./this.program", Fe = () => { + if (!Fe.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", t = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: Fa() + }; + for (var n in It) + It[n] === void 0 ? delete t[n] : t[n] = It[n]; + var a = []; + for (var n in t) + a.push(`${n}=${t[n]}`); + Fe.strings = a; + } + return Fe.strings; + }, Ua = (e, t) => { + for (var n = 0; n < e.length; ++n) + R[t++ >> 0] = e.charCodeAt(n); + R[t >> 0] = 0; + }, Wa = (e, t) => { + var n = 0; + return Fe().forEach((a, s) => { + var u = t + n; + M[e + s * 4 >> 2] = u, Ua(a, u), n += a.length + 1; + }), 0; + }, ja = (e, t) => { + var n = Fe(); + M[e >> 2] = n.length; + var a = 0; + return n.forEach((s) => a += s.length + 1), M[t >> 2] = a, 0; + }, La = (e) => e, et = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Ha = (e, t) => { + for (var n = 0, a = 0; a <= t; n += e[a++]) + ; + return n; + }, ur = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], lr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Ba = (e, t) => { + for (var n = new Date(e.getTime()); t > 0; ) { + var a = et(n.getFullYear()), s = n.getMonth(), u = (a ? ur : lr)[s]; + if (t > u - n.getDate()) + t -= u - n.getDate() + 1, n.setDate(1), s < 11 ? n.setMonth(s + 1) : (n.setMonth(0), n.setFullYear(n.getFullYear() + 1)); + else + return n.setDate(n.getDate() + t), n; + } + return n; + }; + function Va(e, t, n) { + var a = or(e) + 1, s = new Array(a); + return ar(e, s, 0, s.length), s; + } + var qa = (e, t) => { + R.set(e, t); + }, Na = (e, t, n, a) => { + var s = M[a + 40 >> 2], u = { + tm_sec: D[a >> 2], + tm_min: D[a + 4 >> 2], + tm_hour: D[a + 8 >> 2], + tm_mday: D[a + 12 >> 2], + tm_mon: D[a + 16 >> 2], + tm_year: D[a + 20 >> 2], + tm_wday: D[a + 24 >> 2], + tm_yday: D[a + 28 >> 2], + tm_isdst: D[a + 32 >> 2], + tm_gmtoff: D[a + 36 >> 2], + tm_zone: s ? Rt(s) : "" + }, d = Rt(n), f = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var m in f) + d = d.replace(new RegExp(m, "g"), f[m]); + var w = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], _ = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function T(y, P, N) { + for (var G = typeof y == "number" ? y.toString() : y || ""; G.length < P; ) + G = N[0] + G; + return G; + } + function E(y, P) { + return T(y, P, "0"); + } + function O(y, P) { + function N(Se) { + return Se < 0 ? -1 : Se > 0 ? 1 : 0; + } + var G; + return (G = N(y.getFullYear() - P.getFullYear())) === 0 && (G = N(y.getMonth() - P.getMonth())) === 0 && (G = N(y.getDate() - P.getDate())), G; + } + function L(y) { + switch (y.getDay()) { + case 0: + return new Date(y.getFullYear() - 1, 11, 29); + case 1: + return y; + case 2: + return new Date(y.getFullYear(), 0, 3); + case 3: + return new Date(y.getFullYear(), 0, 2); + case 4: + return new Date(y.getFullYear(), 0, 1); + case 5: + return new Date(y.getFullYear() - 1, 11, 31); + case 6: + return new Date(y.getFullYear() - 1, 11, 30); + } + } + function q(y) { + var P = Ba(new Date(y.tm_year + 1900, 0, 1), y.tm_yday), N = new Date(P.getFullYear(), 0, 4), G = new Date(P.getFullYear() + 1, 0, 4), Se = L(N), rt = L(G); + return O(Se, P) <= 0 ? O(rt, P) <= 0 ? P.getFullYear() + 1 : P.getFullYear() : P.getFullYear() - 1; + } + var I = { + "%a": (y) => w[y.tm_wday].substring(0, 3), + "%A": (y) => w[y.tm_wday], + "%b": (y) => _[y.tm_mon].substring(0, 3), + "%B": (y) => _[y.tm_mon], + "%C": (y) => { + var P = y.tm_year + 1900; + return E(P / 100 | 0, 2); + }, + "%d": (y) => E(y.tm_mday, 2), + "%e": (y) => T(y.tm_mday, 2, " "), + "%g": (y) => q(y).toString().substring(2), + "%G": (y) => q(y), + "%H": (y) => E(y.tm_hour, 2), + "%I": (y) => { + var P = y.tm_hour; + return P == 0 ? P = 12 : P > 12 && (P -= 12), E(P, 2); + }, + "%j": (y) => E(y.tm_mday + Ha(et(y.tm_year + 1900) ? ur : lr, y.tm_mon - 1), 3), + "%m": (y) => E(y.tm_mon + 1, 2), + "%M": (y) => E(y.tm_min, 2), + "%n": () => ` +`, + "%p": (y) => y.tm_hour >= 0 && y.tm_hour < 12 ? "AM" : "PM", + "%S": (y) => E(y.tm_sec, 2), + "%t": () => " ", + "%u": (y) => y.tm_wday || 7, + "%U": (y) => { + var P = y.tm_yday + 7 - y.tm_wday; + return E(Math.floor(P / 7), 2); + }, + "%V": (y) => { + var P = Math.floor((y.tm_yday + 7 - (y.tm_wday + 6) % 7) / 7); + if ((y.tm_wday + 371 - y.tm_yday - 2) % 7 <= 2 && P++, P) { + if (P == 53) { + var N = (y.tm_wday + 371 - y.tm_yday) % 7; + N != 4 && (N != 3 || !et(y.tm_year)) && (P = 1); + } + } else { + P = 52; + var G = (y.tm_wday + 7 - y.tm_yday - 1) % 7; + (G == 4 || G == 5 && et(y.tm_year % 400 - 1)) && P++; + } + return E(P, 2); + }, + "%w": (y) => y.tm_wday, + "%W": (y) => { + var P = y.tm_yday + 7 - (y.tm_wday + 6) % 7; + return E(Math.floor(P / 7), 2); + }, + "%y": (y) => (y.tm_year + 1900).toString().substring(2), + "%Y": (y) => y.tm_year + 1900, + "%z": (y) => { + var P = y.tm_gmtoff, N = P >= 0; + return P = Math.abs(P) / 60, P = P / 60 * 100 + P % 60, (N ? "+" : "-") + ("0000" + P).slice(-4); + }, + "%Z": (y) => y.tm_zone, + "%%": () => "%" + }; + d = d.replace(/%%/g, "\0\0"); + for (var m in I) + d.includes(m) && (d = d.replace(new RegExp(m, "g"), I[m](u))); + d = d.replace(/\0\0/g, "%"); + var J = Va(d); + return J.length > t ? 0 : (qa(J, e), J.length - 1); + }, za = (e, t, n, a, s) => Na(e, t, n, a); + qt = i.InternalError = class extends Error { + constructor(e) { + super(e), this.name = "InternalError"; + } + }, gn(), _e = i.BindingError = class extends Error { + constructor(e) { + super(e), this.name = "BindingError"; + } + }, Mn(), Tn(), Wn(), er = i.UnboundTypeError = Bn(Error, "UnboundTypeError"), Gn(), Jn(); + var Ga = { + s: sn, + u: cn, + b: ln, + g: dn, + q: fn, + J: hn, + f: pn, + V: mn, + d: un, + da: vn, + Q: yn, + _: bn, + ca: Vn, + ba: Nn, + w: zn, + Y: Qn, + x: Zn, + h: Kn, + L: ta, + M: ra, + t: aa, + o: oa, + K: ca, + C: ma, + A: va, + ea: ya, + $: ga, + R: wa, + ha: Mt, + fa: $a, + Z: Ea, + N: Oa, + O: Da, + aa: Ma, + B: Aa, + X: xa, + W: Ia, + T: Wa, + U: ja, + E: uo, + D: Za, + F: co, + n: lo, + a: Ya, + e: eo, + m: Xa, + k: ro, + H: io, + v: ao, + G: so, + z: ho, + P: mo, + l: to, + j: Ka, + c: Qa, + p: Ja, + I: oo, + r: fo, + i: no, + y: po, + ga: La, + S: za + }, z = on(), ce = i._free = (e) => (ce = i._free = z.ka)(e), Ft = i._malloc = (e) => (Ft = i._malloc = z.la)(e), dr = (e) => (dr = z.na)(e), j = (e, t) => (j = z.oa)(e, t), Ue = (e) => (Ue = z.pa)(e), B = () => (B = z.qa)(), V = (e) => (V = z.ra)(e), fr = (e) => (fr = z.sa)(e), hr = (e) => (hr = z.ta)(e), pr = (e, t, n) => (pr = z.ua)(e, t, n), mr = (e) => (mr = z.va)(e); + i.dynCall_viijii = (e, t, n, a, s, u, d) => (i.dynCall_viijii = z.wa)(e, t, n, a, s, u, d); + var vr = i.dynCall_jiiii = (e, t, n, a, s) => (vr = i.dynCall_jiiii = z.xa)(e, t, n, a, s); + i.dynCall_iiiiij = (e, t, n, a, s, u, d) => (i.dynCall_iiiiij = z.ya)(e, t, n, a, s, u, d), i.dynCall_iiiiijj = (e, t, n, a, s, u, d, f, m) => (i.dynCall_iiiiijj = z.za)(e, t, n, a, s, u, d, f, m), i.dynCall_iiiiiijj = (e, t, n, a, s, u, d, f, m, w) => (i.dynCall_iiiiiijj = z.Aa)(e, t, n, a, s, u, d, f, m, w); + function Ya(e, t) { + var n = B(); + try { + return H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function Ja(e, t, n, a) { + var s = B(); + try { + H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Qa(e, t, n) { + var a = B(); + try { + H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function Xa(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Za(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function Ka(e, t) { + var n = B(); + try { + H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function eo(e, t, n) { + var a = B(); + try { + return H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function to(e) { + var t = B(); + try { + H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function ro(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function no(e, t, n, a, s, u, d, f, m, w, _) { + var T = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _); + } catch (E) { + if (V(T), E !== E + 0) + throw E; + j(1, 0); + } + } + function ao(e, t, n, a, s, u, d) { + var f = B(); + try { + return H(e)(t, n, a, s, u, d); + } catch (m) { + if (V(f), m !== m + 0) + throw m; + j(1, 0); + } + } + function oo(e, t, n, a, s) { + var u = B(); + try { + H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function io(e, t, n, a, s, u) { + var d = B(); + try { + return H(e)(t, n, a, s, u); + } catch (f) { + if (V(d), f !== f + 0) + throw f; + j(1, 0); + } + } + function so(e, t, n, a, s, u, d, f) { + var m = B(); + try { + return H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function co(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function uo(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function lo(e) { + var t = B(); + try { + return H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function fo(e, t, n, a, s, u, d, f) { + var m = B(); + try { + H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function ho(e, t, n, a, s, u, d, f, m, w, _, T) { + var E = B(); + try { + return H(e)(t, n, a, s, u, d, f, m, w, _, T); + } catch (O) { + if (V(E), O !== O + 0) + throw O; + j(1, 0); + } + } + function po(e, t, n, a, s, u, d, f, m, w, _, T, E, O, L, q) { + var I = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _, T, E, O, L, q); + } catch (J) { + if (V(I), J !== J + 0) + throw J; + j(1, 0); + } + } + function mo(e, t, n, a, s) { + var u = B(); + try { + return vr(e, t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + var tt; + ve = function e() { + tt || yr(), tt || (ve = e); + }; + function yr() { + if (te > 0 || (Le(), te > 0)) + return; + function e() { + tt || (tt = !0, i.calledRun = !0, !W && (dt(), c(i), i.onRuntimeInitialized && i.onRuntimeInitialized(), ft())); + } + i.setStatus ? (i.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + i.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (i.preInit) + for (typeof i.preInit == "function" && (i.preInit = [i.preInit]); i.preInit.length > 0; ) + i.preInit.pop()(); + return yr(), o.ready; + }; +})(); +function Yo(r) { + return Bt( + lt, + r + ); +} +function Hi(r) { + return No( + lt, + r + ); +} +async function Jo(r, o) { + return zo( + lt, + r, + o + ); +} +async function Qo(r, o) { + return Go( + lt, + r, + o + ); +} +var je; +class ct extends EventTarget { + constructor(o = {}) { + var i; + super(), Co(this, je, void 0); + try { + const c = (i = o == null ? void 0 : o.formats) == null ? void 0 : i.filter( + (l) => l !== "unknown" + ); + if ((c == null ? void 0 : c.length) === 0) + throw new TypeError("Hint option provided, but is empty."); + c == null || c.forEach((l) => { + if (!it.has(l)) + throw new TypeError( + `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.` + ); + }), $o(this, je, c != null ? c : []), Yo().then((l) => { + this.dispatchEvent( + new CustomEvent("load", { + detail: l + }) + ); + }).catch((l) => { + this.dispatchEvent(new CustomEvent("error", { detail: l })); + }); + } catch (c) { + throw Cr( + c, + "Failed to construct 'BarcodeDetector'" + ); + } + } + static async getSupportedFormats() { + return _o.filter((o) => o !== "unknown"); + } + async detect(o) { + try { + const i = await Mo(o); + if (i === null) + return []; + let c; + try { + jr(i) ? c = await Jo(i, { + tryHarder: !0, + formats: br(this, je).map((l) => it.get(l)) + }) : c = await Qo(i, { + tryHarder: !0, + formats: br(this, je).map((l) => it.get(l)) + }); + } catch (l) { + throw console.error(l), new DOMException( + "Barcode detection service unavailable.", + "NotSupportedError" + ); + } + return c.map((l) => { + const { + topLeft: { x: h, y: v }, + topRight: { x: g, y: b }, + bottomLeft: { x: p, y: C }, + bottomRight: { x: S, y: $ } + } = l.position, F = Math.min(h, g, p, S), U = Math.min(v, b, C, $), W = Math.max(h, g, p, S), R = Math.max(v, b, C, $); + return { + boundingBox: new DOMRectReadOnly( + F, + U, + W - F, + R - U + ), + rawValue: l.text, + format: So(l.format), + cornerPoints: [ + { + x: h, + y: v + }, + { + x: g, + y: b + }, + { + x: S, + y: $ + }, + { + x: p, + y: C + } + ] + }; + }); + } catch (i) { + throw Cr( + i, + "Failed to execute 'detect' on 'BarcodeDetector'" + ); + } + } +} +je = /* @__PURE__ */ new WeakMap(); +const Vt = (r, o, i = "error") => { + let c, l; + const h = new Promise( + (v, g) => { + c = v, l = g, r.addEventListener(o, c), r.addEventListener(i, l); + } + ); + return h.finally(() => { + r.removeEventListener(o, c), r.removeEventListener(i, l); + }), h; +}, Sr = (r) => new Promise((o) => setTimeout(o, r)); +class Xo extends Error { + constructor() { + super("can't process cross-origin image"), this.name = "DropImageFetchError"; + } +} +class Vr extends Error { + constructor() { + super("this browser has no Stream API support"), this.name = "StreamApiNotSupportedError"; + } +} +class Zo extends Error { + constructor() { + super( + "camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP." + ), this.name = "InsecureContextError"; + } +} +class Ko extends Error { + constructor() { + super( + "Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)" + ), this.name = "StreamLoadTimeoutError"; + } +} +let qr; +async function ei(r) { + if (window.BarcodeDetector === void 0) + return console.debug("[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill."), new ct({ formats: r }); + const o = await window.BarcodeDetector.getSupportedFormats(), i = r.filter((c) => !o.includes(c)); + return i.length > 0 ? (console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`), new ct({ formats: r })) : (console.debug("[vue-qrcode-reader] Will use native BarcodeDetector."), new window.BarcodeDetector({ formats: r })); +} +async function Nr(r) { + qr = await ei(r); +} +const ti = async (r, { + detectHandler: o, + locateHandler: i, + minDelay: c, + formats: l +}) => { + console.debug("[vue-qrcode-reader] start scanning"), await Nr(l); + const h = (v) => async (g) => { + if (r.readyState === 0) + console.debug("[vue-qrcode-reader] stop scanning: video element readyState is 0"); + else { + const { lastScanned: b, contentBefore: p, lastScanHadContent: C } = v; + if (g - b < c) + window.requestAnimationFrame(h(v)); + else { + const S = await qr.detect(r), $ = S.some((W) => !p.includes(W.rawValue)); + $ && o(S); + const F = S.length > 0; + F && i(S), !F && C && i(S); + const U = { + lastScanned: g, + lastScanHadContent: F, + // It can happen that a QR code is constantly in view of the camera but + // maybe a scanned frame is a bit blurry and we detect nothing but in the + // next frame we detect the code again. We also want to avoid emitting + // a `detect` event in such a case. So we don't reset `contentBefore`, + // if we detect nothing, only if we detect something new. + contentBefore: $ ? S.map((W) => W.rawValue) : p + }; + window.requestAnimationFrame(h(U)); + } + } + }; + h({ + lastScanned: performance.now(), + contentBefore: [], + lastScanHadContent: !1 + })(performance.now()); +}, ri = async (r) => { + if (r.startsWith("http") && r.includes(location.host) === !1) + throw new Xo(); + const o = document.createElement("img"); + return o.src = r, await Vt(o, "load"), o; +}, zr = async (r, o = ["qr_code"]) => await new ct({ formats: o }).detect(r), ni = async (r, o = ["qr_code"]) => { + const i = new ct({ formats: o }), c = await ri(r); + return await i.detect(c); +}; +var Gr = {}, Q = {}; +Object.defineProperty(Q, "__esModule", { + value: !0 +}); +Q.compactObject = Qr; +Q.deprecated = fi; +var ai = Q.detectBrowser = hi; +Q.disableLog = ui; +Q.disableWarnings = li; +Q.extractVersion = st; +Q.filterStats = pi; +Q.log = di; +Q.walkStats = ut; +Q.wrapPeerConnectionEvent = ci; +function oi(r, o, i) { + return o = ii(o), o in r ? Object.defineProperty(r, o, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : r[o] = i, r; +} +function ii(r) { + var o = si(r, "string"); + return pe(o) === "symbol" ? o : String(o); +} +function si(r, o) { + if (pe(r) !== "object" || r === null) + return r; + var i = r[Symbol.toPrimitive]; + if (i !== void 0) { + var c = i.call(r, o || "default"); + if (pe(c) !== "object") + return c; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (o === "string" ? String : Number)(r); +} +function pe(r) { + "@babel/helpers - typeof"; + return pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, pe(r); +} +var Yr = !0, Jr = !0; +function st(r, o, i) { + var c = r.match(o); + return c && c.length >= i && parseInt(c[i], 10); +} +function ci(r, o, i) { + if (r.RTCPeerConnection) { + var c = r.RTCPeerConnection.prototype, l = c.addEventListener; + c.addEventListener = function(v, g) { + if (v !== o) + return l.apply(this, arguments); + var b = function(C) { + var S = i(C); + S && (g.handleEvent ? g.handleEvent(S) : g(S)); + }; + return this._eventMap = this._eventMap || {}, this._eventMap[o] || (this._eventMap[o] = /* @__PURE__ */ new Map()), this._eventMap[o].set(g, b), l.apply(this, [v, b]); + }; + var h = c.removeEventListener; + c.removeEventListener = function(v, g) { + if (v !== o || !this._eventMap || !this._eventMap[o]) + return h.apply(this, arguments); + if (!this._eventMap[o].has(g)) + return h.apply(this, arguments); + var b = this._eventMap[o].get(g); + return this._eventMap[o].delete(g), this._eventMap[o].size === 0 && delete this._eventMap[o], Object.keys(this._eventMap).length === 0 && delete this._eventMap, h.apply(this, [v, b]); + }, Object.defineProperty(c, "on" + o, { + get: function() { + return this["_on" + o]; + }, + set: function(g) { + this["_on" + o] && (this.removeEventListener(o, this["_on" + o]), delete this["_on" + o]), g && this.addEventListener(o, this["_on" + o] = g); + }, + enumerable: !0, + configurable: !0 + }); + } +} +function ui(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Yr = r, r ? "adapter.js logging disabled" : "adapter.js logging enabled"); +} +function li(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Jr = !r, "adapter.js deprecation warnings " + (r ? "disabled" : "enabled")); +} +function di() { + if ((typeof window > "u" ? "undefined" : pe(window)) === "object") { + if (Yr) + return; + typeof console < "u" && typeof console.log == "function" && console.log.apply(console, arguments); + } +} +function fi(r, o) { + Jr && console.warn(r + " is deprecated, please use " + o + " instead."); +} +function hi(r) { + var o = { + browser: null, + version: null + }; + if (typeof r > "u" || !r.navigator || !r.navigator.userAgent) + return o.browser = "Not a browser.", o; + var i = r.navigator; + if (i.mozGetUserMedia) + o.browser = "firefox", o.version = st(i.userAgent, /Firefox\/(\d+)\./, 1); + else if (i.webkitGetUserMedia || r.isSecureContext === !1 && r.webkitRTCPeerConnection) + o.browser = "chrome", o.version = st(i.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + else if (r.RTCPeerConnection && i.userAgent.match(/AppleWebKit\/(\d+)\./)) + o.browser = "safari", o.version = st(i.userAgent, /AppleWebKit\/(\d+)\./, 1), o.supportsUnifiedPlan = r.RTCRtpTransceiver && "currentDirection" in r.RTCRtpTransceiver.prototype; + else + return o.browser = "Not a supported browser.", o; + return o; +} +function Pr(r) { + return Object.prototype.toString.call(r) === "[object Object]"; +} +function Qr(r) { + return Pr(r) ? Object.keys(r).reduce(function(o, i) { + var c = Pr(r[i]), l = c ? Qr(r[i]) : r[i], h = c && !Object.keys(l).length; + return l === void 0 || h ? o : Object.assign(o, oi({}, i, l)); + }, {}) : r; +} +function ut(r, o, i) { + !o || i.has(o.id) || (i.set(o.id, o), Object.keys(o).forEach(function(c) { + c.endsWith("Id") ? ut(r, r.get(o[c]), i) : c.endsWith("Ids") && o[c].forEach(function(l) { + ut(r, r.get(l), i); + }); + })); +} +function pi(r, o, i) { + var c = i ? "outbound-rtp" : "inbound-rtp", l = /* @__PURE__ */ new Map(); + if (o === null) + return l; + var h = []; + return r.forEach(function(v) { + v.type === "track" && v.trackIdentifier === o.id && h.push(v); + }), h.forEach(function(v) { + r.forEach(function(g) { + g.type === c && g.trackId === v.id && ut(r, g, l); + }); + }), l; +} +Object.defineProperty(Gr, "__esModule", { + value: !0 +}); +var mi = Gr.shimGetUserMedia = gi, vi = yi(Q); +function Xr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Xr = function(l) { + return l ? i : o; + })(r); +} +function yi(r, o) { + if (r && r.__esModule) + return r; + if (r === null || he(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Xr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function he(r) { + "@babel/helpers - typeof"; + return he = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, he(r); +} +var Tr = vi.log; +function gi(r, o) { + var i = r && r.navigator; + if (i.mediaDevices) { + var c = function(p) { + if (he(p) !== "object" || p.mandatory || p.optional) + return p; + var C = {}; + return Object.keys(p).forEach(function(S) { + if (!(S === "require" || S === "advanced" || S === "mediaSource")) { + var $ = he(p[S]) === "object" ? p[S] : { + ideal: p[S] + }; + $.exact !== void 0 && typeof $.exact == "number" && ($.min = $.max = $.exact); + var F = function(R, A) { + return R ? R + A.charAt(0).toUpperCase() + A.slice(1) : A === "deviceId" ? "sourceId" : A; + }; + if ($.ideal !== void 0) { + C.optional = C.optional || []; + var U = {}; + typeof $.ideal == "number" ? (U[F("min", S)] = $.ideal, C.optional.push(U), U = {}, U[F("max", S)] = $.ideal, C.optional.push(U)) : (U[F("", S)] = $.ideal, C.optional.push(U)); + } + $.exact !== void 0 && typeof $.exact != "number" ? (C.mandatory = C.mandatory || {}, C.mandatory[F("", S)] = $.exact) : ["min", "max"].forEach(function(W) { + $[W] !== void 0 && (C.mandatory = C.mandatory || {}, C.mandatory[F(W, S)] = $[W]); + }); + } + }), p.advanced && (C.optional = (C.optional || []).concat(p.advanced)), C; + }, l = function(p, C) { + if (o.version >= 61) + return C(p); + if (p = JSON.parse(JSON.stringify(p)), p && he(p.audio) === "object") { + var S = function(R, A, X) { + A in R && !(X in R) && (R[X] = R[A], delete R[A]); + }; + p = JSON.parse(JSON.stringify(p)), S(p.audio, "autoGainControl", "googAutoGainControl"), S(p.audio, "noiseSuppression", "googNoiseSuppression"), p.audio = c(p.audio); + } + if (p && he(p.video) === "object") { + var $ = p.video.facingMode; + $ = $ && (he($) === "object" ? $ : { + ideal: $ + }); + var F = o.version < 66; + if ($ && ($.exact === "user" || $.exact === "environment" || $.ideal === "user" || $.ideal === "environment") && !(i.mediaDevices.getSupportedConstraints && i.mediaDevices.getSupportedConstraints().facingMode && !F)) { + delete p.video.facingMode; + var U; + if ($.exact === "environment" || $.ideal === "environment" ? U = ["back", "rear"] : ($.exact === "user" || $.ideal === "user") && (U = ["front"]), U) + return i.mediaDevices.enumerateDevices().then(function(W) { + W = W.filter(function(A) { + return A.kind === "videoinput"; + }); + var R = W.find(function(A) { + return U.some(function(X) { + return A.label.toLowerCase().includes(X); + }); + }); + return !R && W.length && U.includes("back") && (R = W[W.length - 1]), R && (p.video.deviceId = $.exact ? { + exact: R.deviceId + } : { + ideal: R.deviceId + }), p.video = c(p.video), Tr("chrome: " + JSON.stringify(p)), C(p); + }); + } + p.video = c(p.video); + } + return Tr("chrome: " + JSON.stringify(p)), C(p); + }, h = function(p) { + return o.version >= 64 ? p : { + name: { + PermissionDeniedError: "NotAllowedError", + PermissionDismissedError: "NotAllowedError", + InvalidStateError: "NotAllowedError", + DevicesNotFoundError: "NotFoundError", + ConstraintNotSatisfiedError: "OverconstrainedError", + TrackStartError: "NotReadableError", + MediaDeviceFailedDueToShutdown: "NotAllowedError", + MediaDeviceKillSwitchOn: "NotAllowedError", + TabCaptureError: "AbortError", + ScreenCaptureError: "AbortError", + DeviceCaptureError: "AbortError" + }[p.name] || p.name, + message: p.message, + constraint: p.constraint || p.constraintName, + toString: function() { + return this.name + (this.message && ": ") + this.message; + } + }; + }, v = function(p, C, S) { + l(p, function($) { + i.webkitGetUserMedia($, C, function(F) { + S && S(h(F)); + }); + }); + }; + if (i.getUserMedia = v.bind(i), i.mediaDevices.getUserMedia) { + var g = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + i.mediaDevices.getUserMedia = function(b) { + return l(b, function(p) { + return g(p).then(function(C) { + if (p.audio && !C.getAudioTracks().length || p.video && !C.getVideoTracks().length) + throw C.getTracks().forEach(function(S) { + S.stop(); + }), new DOMException("", "NotFoundError"); + return C; + }, function(C) { + return Promise.reject(h(C)); + }); + }); + }; + } + } +} +var Zr = {}; +Object.defineProperty(Zr, "__esModule", { + value: !0 +}); +var wi = Zr.shimGetUserMedia = $i, bi = Ci(Q); +function Kr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Kr = function(l) { + return l ? i : o; + })(r); +} +function Ci(r, o) { + if (r && r.__esModule) + return r; + if (r === null || Pe(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Kr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function Pe(r) { + "@babel/helpers - typeof"; + return Pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, Pe(r); +} +function $i(r, o) { + var i = r && r.navigator, c = r && r.MediaStreamTrack; + if (i.getUserMedia = function(b, p, C) { + bi.deprecated("navigator.getUserMedia", "navigator.mediaDevices.getUserMedia"), i.mediaDevices.getUserMedia(b).then(p, C); + }, !(o.version > 55 && "autoGainControl" in i.mediaDevices.getSupportedConstraints())) { + var l = function(p, C, S) { + C in p && !(S in p) && (p[S] = p[C], delete p[C]); + }, h = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + if (i.mediaDevices.getUserMedia = function(b) { + return Pe(b) === "object" && Pe(b.audio) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b.audio, "autoGainControl", "mozAutoGainControl"), l(b.audio, "noiseSuppression", "mozNoiseSuppression")), h(b); + }, c && c.prototype.getSettings) { + var v = c.prototype.getSettings; + c.prototype.getSettings = function() { + var b = v.apply(this, arguments); + return l(b, "mozAutoGainControl", "autoGainControl"), l(b, "mozNoiseSuppression", "noiseSuppression"), b; + }; + } + if (c && c.prototype.applyConstraints) { + var g = c.prototype.applyConstraints; + c.prototype.applyConstraints = function(b) { + return this.kind === "audio" && Pe(b) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b, "autoGainControl", "mozAutoGainControl"), l(b, "noiseSuppression", "mozNoiseSuppression")), g.apply(this, [b]); + }; + } + } +} +var ae = {}; +Object.defineProperty(ae, "__esModule", { + value: !0 +}); +ae.shimAudioContext = xi; +ae.shimCallbacksAPI = Ei; +ae.shimConstraints = rn; +ae.shimCreateOfferLegacy = Ai; +var _i = ae.shimGetUserMedia = Oi; +ae.shimLocalStreamsAPI = Pi; +ae.shimRTCIceServerUrls = Di; +ae.shimRemoteStreamsAPI = Ti; +ae.shimTrackEventTransceiver = Mi; +var en = Si(Q); +function tn(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (tn = function(l) { + return l ? i : o; + })(r); +} +function Si(r, o) { + if (r && r.__esModule) + return r; + if (r === null || me(r) !== "object" && typeof r != "function") + return { default: r }; + var i = tn(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function me(r) { + "@babel/helpers - typeof"; + return me = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, me(r); +} +function Pi(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + if ("getLocalStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getLocalStreams = function() { + return this._localStreams || (this._localStreams = []), this._localStreams; + }), !("addStream" in r.RTCPeerConnection.prototype)) { + var o = r.RTCPeerConnection.prototype.addTrack; + r.RTCPeerConnection.prototype.addStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []), this._localStreams.includes(c) || this._localStreams.push(c), c.getAudioTracks().forEach(function(h) { + return o.call(l, h, c); + }), c.getVideoTracks().forEach(function(h) { + return o.call(l, h, c); + }); + }, r.RTCPeerConnection.prototype.addTrack = function(c) { + for (var l = this, h = arguments.length, v = new Array(h > 1 ? h - 1 : 0), g = 1; g < h; g++) + v[g - 1] = arguments[g]; + return v && v.forEach(function(b) { + l._localStreams ? l._localStreams.includes(b) || l._localStreams.push(b) : l._localStreams = [b]; + }), o.apply(this, arguments); + }; + } + "removeStream" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.removeStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []); + var h = this._localStreams.indexOf(c); + if (h !== -1) { + this._localStreams.splice(h, 1); + var v = c.getTracks(); + this.getSenders().forEach(function(g) { + v.includes(g.track) && l.removeTrack(g); + }); + } + }); + } +} +function Ti(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection) && ("getRemoteStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getRemoteStreams = function() { + return this._remoteStreams ? this._remoteStreams : []; + }), !("onaddstream" in r.RTCPeerConnection.prototype))) { + Object.defineProperty(r.RTCPeerConnection.prototype, "onaddstream", { + get: function() { + return this._onaddstream; + }, + set: function(c) { + var l = this; + this._onaddstream && (this.removeEventListener("addstream", this._onaddstream), this.removeEventListener("track", this._onaddstreampoly)), this.addEventListener("addstream", this._onaddstream = c), this.addEventListener("track", this._onaddstreampoly = function(h) { + h.streams.forEach(function(v) { + if (l._remoteStreams || (l._remoteStreams = []), !l._remoteStreams.includes(v)) { + l._remoteStreams.push(v); + var g = new Event("addstream"); + g.stream = v, l.dispatchEvent(g); + } + }); + }); + } + }); + var o = r.RTCPeerConnection.prototype.setRemoteDescription; + r.RTCPeerConnection.prototype.setRemoteDescription = function() { + var c = this; + return this._onaddstreampoly || this.addEventListener("track", this._onaddstreampoly = function(l) { + l.streams.forEach(function(h) { + if (c._remoteStreams || (c._remoteStreams = []), !(c._remoteStreams.indexOf(h) >= 0)) { + c._remoteStreams.push(h); + var v = new Event("addstream"); + v.stream = h, c.dispatchEvent(v); + } + }); + }), o.apply(c, arguments); + }; + } +} +function Ei(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + var o = r.RTCPeerConnection.prototype, i = o.createOffer, c = o.createAnswer, l = o.setLocalDescription, h = o.setRemoteDescription, v = o.addIceCandidate; + o.createOffer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = i.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }, o.createAnswer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = c.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }; + var g = function(p, C, S) { + var $ = l.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }; + o.setLocalDescription = g, g = function(p, C, S) { + var $ = h.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.setRemoteDescription = g, g = function(p, C, S) { + var $ = v.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.addIceCandidate = g; + } +} +function Oi(r) { + var o = r && r.navigator; + if (o.mediaDevices && o.mediaDevices.getUserMedia) { + var i = o.mediaDevices, c = i.getUserMedia.bind(i); + o.mediaDevices.getUserMedia = function(l) { + return c(rn(l)); + }; + } + !o.getUserMedia && o.mediaDevices && o.mediaDevices.getUserMedia && (o.getUserMedia = (function(h, v, g) { + o.mediaDevices.getUserMedia(h).then(v, g); + }).bind(o)); +} +function rn(r) { + return r && r.video !== void 0 ? Object.assign({}, r, { + video: en.compactObject(r.video) + }) : r; +} +function Di(r) { + if (r.RTCPeerConnection) { + var o = r.RTCPeerConnection; + r.RTCPeerConnection = function(c, l) { + if (c && c.iceServers) { + for (var h = [], v = 0; v < c.iceServers.length; v++) { + var g = c.iceServers[v]; + g.urls === void 0 && g.url ? (en.deprecated("RTCIceServer.url", "RTCIceServer.urls"), g = JSON.parse(JSON.stringify(g)), g.urls = g.url, delete g.url, h.push(g)) : h.push(c.iceServers[v]); + } + c.iceServers = h; + } + return new o(c, l); + }, r.RTCPeerConnection.prototype = o.prototype, "generateCertificate" in o && Object.defineProperty(r.RTCPeerConnection, "generateCertificate", { + get: function() { + return o.generateCertificate; + } + }); + } +} +function Mi(r) { + me(r) === "object" && r.RTCTrackEvent && "receiver" in r.RTCTrackEvent.prototype && !("transceiver" in r.RTCTrackEvent.prototype) && Object.defineProperty(r.RTCTrackEvent.prototype, "transceiver", { + get: function() { + return { + receiver: this.receiver + }; + } + }); +} +function Ai(r) { + var o = r.RTCPeerConnection.prototype.createOffer; + r.RTCPeerConnection.prototype.createOffer = function(c) { + if (c) { + typeof c.offerToReceiveAudio < "u" && (c.offerToReceiveAudio = !!c.offerToReceiveAudio); + var l = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "audio"; + }); + c.offerToReceiveAudio === !1 && l ? l.direction === "sendrecv" ? l.setDirection ? l.setDirection("sendonly") : l.direction = "sendonly" : l.direction === "recvonly" && (l.setDirection ? l.setDirection("inactive") : l.direction = "inactive") : c.offerToReceiveAudio === !0 && !l && this.addTransceiver("audio", { + direction: "recvonly" + }), typeof c.offerToReceiveVideo < "u" && (c.offerToReceiveVideo = !!c.offerToReceiveVideo); + var h = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "video"; + }); + c.offerToReceiveVideo === !1 && h ? h.direction === "sendrecv" ? h.setDirection ? h.setDirection("sendonly") : h.direction = "sendonly" : h.direction === "recvonly" && (h.setDirection ? h.setDirection("inactive") : h.direction = "inactive") : c.offerToReceiveVideo === !0 && !h && this.addTransceiver("video", { + direction: "recvonly" + }); + } + return o.apply(this, arguments); + }; +} +function xi(r) { + me(r) !== "object" || r.AudioContext || (r.AudioContext = r.webkitAudioContext); +} +const Ri = (r) => { + let o = !1, i; + return (...c) => (o || (i = r(c), o = !0), i); +}; +function ue(r, o) { + if (r === !1) + throw new Error(o != null ? o : "assertion failure"); +} +function Er(r) { + throw new Error("this code should be unreachable"); +} +const ki = Ri(() => { + const r = ai(window); + switch (r.browser) { + case "chrome": + mi(window, r); + break; + case "firefox": + wi(window, r); + break; + case "safari": + _i(window, r); + break; + default: + throw new Vr(); + } +}); +let Te = Promise.resolve({ type: "stop", data: {} }); +async function Or(r, o, i) { + var g, b, p; + if (console.debug( + "[vue-qrcode-reader] starting camera with constraints: ", + JSON.stringify(o) + ), window.isSecureContext !== !0) + throw new Zo(); + if (((g = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : g.getUserMedia) === void 0) + throw new Vr(); + ki(), console.debug("[vue-qrcode-reader] calling getUserMedia"); + const c = await navigator.mediaDevices.getUserMedia({ + audio: !1, + video: o + }); + r.srcObject !== void 0 ? r.srcObject = c : r.mozSrcObject !== void 0 ? r.mozSrcObject = c : window.URL.createObjectURL ? r.src = window.URL.createObjectURL(c) : window.webkitURL ? r.src = window.webkitURL.createObjectURL(c) : r.src = c.id, r.play(), console.debug("[vue-qrcode-reader] waiting for video element to load"), await Promise.race([ + Vt(r, "loadeddata"), + // On iOS devices in PWA mode, QrcodeStream works initially, but after + // killing and restarting the PWA, all video elements fail to load camera + // streams and never emit the `loadeddata` event. Looks like this is + // related to a WebKit issue (see #298). No workarounds at the moment. + // To at least detect this situation, we throw an error if the event + // has not been emitted after a 6 second timeout. + Sr(6e3).then(() => { + throw new Ko(); + }) + ]), console.debug("[vue-qrcode-reader] video element loaded"), await Sr(500); + const [l] = c.getVideoTracks(), h = (p = (b = l == null ? void 0 : l.getCapabilities) == null ? void 0 : b.call(l)) != null ? p : {}; + let v = !1; + return i && h.torch && (await l.applyConstraints({ advanced: [{ torch: !0 }] }), v = !0), console.debug("[vue-qrcode-reader] camera ready"), { + type: "start", + data: { + videoEl: r, + stream: c, + capabilities: h, + constraints: o, + isTorchOn: v + } + }; +} +async function Ii(r, { + constraints: o, + torch: i, + restart: c = !1 +}) { + Te = Te.then((h) => { + if (h.type === "start") { + const { + data: { + videoEl: v, + stream: g, + constraints: b, + isTorchOn: p + } + } = h; + return !c && r === v && o === b && i === p ? h : nn(v, g, p).then( + () => Or(r, o, i) + ); + } else if (h.type === "stop" || h.type === "failed") + return Or(r, o, i); + Er(); + }).catch((h) => (console.debug(`[vue-qrcode-reader] starting camera failed with "${h}"`), { type: "failed", error: h })); + const l = await Te; + if (l.type === "stop") + throw new Error("Something went wrong with the camera task queue (start task)."); + if (l.type === "failed") + throw l.error; + if (l.type === "start") + return l.data.capabilities; + Er(); +} +async function nn(r, o, i) { + console.debug("[vue-qrcode-reader] stopping camera"), r.src = "", r.srcObject = null, r.load(), await Vt(r, "error"); + for (const c of o.getTracks()) + i != null || await c.applyConstraints({ advanced: [{ torch: !1 }] }), o.removeTrack(c), c.stop(); + return { + type: "stop", + data: {} + }; +} +async function ot() { + if (Te = Te.then((o) => { + if (o.type === "stop" || o.type === "failed") + return o; + const { + data: { videoEl: i, stream: c, isTorchOn: l } + } = o; + return nn(i, c, l); + }), (await Te).type === "start") + throw new Error("Something went wrong with the camera task queue (stop task)."); +} +const Fi = /* @__PURE__ */ jt({ + __name: "QrcodeStream", + props: { + // in this file: don't use `props.constraints` directly. Use `constraintsCached`. + /** + * Passes an object with various camera configuration options. + */ + constraints: { + type: Object, + default() { + return { facingMode: "environment" }; + } + }, + // in this file: don't use `props.formats` directly. Use `formatsCached`. + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: Array, + default: () => ["qr_code"] + }, + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: Boolean, + default: !1 + }, + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: Boolean, + default: !1 + }, + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: Function + } + }, + emits: ["detect", "camera-on", "camera-off", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = we(i.constraints), h = we(i.formats); + We( + () => i.constraints, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (l.value = k); + }, + { deep: !0 } + ), We( + () => i.formats, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (h.value = k); + }, + { deep: !0 } + ); + const v = we(), g = we(), b = we(), p = we(!1), C = we(!1); + vo(() => { + C.value = !0; + }), yo(() => { + ot(); + }); + const S = Ut(() => ({ + torch: i.torch, + constraints: l.value, + shouldStream: C.value && !i.paused + })); + We( + S, + async (k) => { + const D = b.value; + ue( + D !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined." + ); + const M = v.value; + ue( + M !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined." + ); + const le = M.getContext("2d"); + if (ue(le !== null, "if cavnas is defined, canvas 2d context should also be non-null"), k.shouldStream) { + ot(), p.value = !1; + try { + const oe = await Ii(D, k); + C.value ? (p.value = !0, c("camera-on", oe)) : await ot(); + } catch (oe) { + c("error", oe); + } + } else + M.width = D.videoWidth, M.height = D.videoHeight, le.drawImage(D, 0, 0, D.videoWidth, D.videoHeight), ot(), p.value = !1, c("camera-off"); + }, + { deep: !0 } + ), We(h, async (k) => { + C.value && await Nr(k); + }); + const $ = Ut(() => S.value.shouldStream && p.value); + We($, (k) => { + if (k) { + ue( + v.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined" + ), F(v.value), ue( + g.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined" + ), F(g.value); + const D = () => i.track === void 0 ? 500 : 40; + ue( + b.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus video element is defined" + ), ti(b.value, { + detectHandler: (M) => c("detect", M), + formats: h.value, + locateHandler: U, + minDelay: D() + }); + } + }); + const F = (k) => { + const D = k.getContext("2d"); + ue(D !== null, "canvas 2d context should always be non-null"), D.clearRect(0, 0, k.width, k.height); + }, U = (k) => { + const D = g.value; + ue( + D !== void 0, + "onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined." + ); + const M = b.value; + if (ue( + M !== void 0, + "onLocate handler should only be called when component is mounted. Thus video element is always defined." + ), k.length === 0 || i.track === void 0) + F(D); + else { + const le = M.offsetWidth, oe = M.offsetHeight, be = M.videoWidth, Ce = M.videoHeight, Oe = Math.max(le / be, oe / Ce), De = be * Oe, Le = Ce * Oe, dt = De / be, ft = Le / Ce, ht = (le - De) / 2, pt = (oe - Le) / 2, Me = ({ x: de, y: Z }) => ({ + x: Math.floor(de * dt), + y: Math.floor(Z * ft) + }), te = ({ x: de, y: Z }) => ({ + x: Math.floor(de + ht), + y: Math.floor(Z + pt) + }), ve = k.map((de) => { + const { boundingBox: Z, cornerPoints: vt } = de, { x: He, y: fe } = te( + Me({ + x: Z.x, + y: Z.y + }) + ), { x: Be, y: yt } = Me({ + x: Z.width, + y: Z.height + }); + return { + ...de, + cornerPoints: vt.map((Ve) => te(Me(Ve))), + boundingBox: DOMRectReadOnly.fromRect({ x: He, y: fe, width: Be, height: yt }) + }; + }); + D.width = M.offsetWidth, D.height = M.offsetHeight; + const mt = D.getContext("2d"); + i.track(ve, mt); + } + }, W = { + width: "100%", + height: "100%", + position: "relative", + // notice that we use z-index only once for the wrapper div. + // If z-index is not defined, elements are stacked in the order they appear in the DOM. + // The first element is at the very bottom and subsequent elements are added on top. + "z-index": "0" + }, R = { + width: "100%", + height: "100%", + position: "absolute", + top: "0", + left: "0" + }, A = { + width: "100%", + height: "100%", + "object-fit": "cover" + }, X = Ut(() => $.value ? A : { + ...A, + visibility: "hidden", + position: "absolute" + }); + return (k, D) => (Lt(), Ht("div", { style: W }, [ + nt("video", { + ref_key: "videoRef", + ref: b, + style: go(X.value), + autoplay: "", + muted: "", + playsinline: "" + }, null, 4), + wo(nt("canvas", { + id: "qrcode-stream-pause-frame", + ref_key: "pauseFrameRef", + ref: v, + style: A + }, null, 512), [ + [bo, !$.value] + ]), + nt("canvas", { + id: "qrcode-stream-tracking-layer", + ref_key: "trackingLayerRef", + ref: g, + style: R + }, null, 512), + nt("div", { style: R }, [ + Dr(k.$slots, "default") + ]) + ])); + } +}), Ui = /* @__PURE__ */ jt({ + __name: "QrcodeCapture", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect"], + setup(r, { emit: o }) { + const i = r, c = o, l = (h) => { + if (!(!(h.target instanceof HTMLInputElement) || !h.target.files)) + for (const v of Array.from(h.target.files)) + zr(v, i.formats).then((g) => { + c("detect", g); + }); + }; + return (h, v) => (Lt(), Ht("input", { + onChange: l, + type: "file", + name: "image", + accept: "image/*", + capture: "environment", + multiple: "" + }, null, 32)); + } +}), Wi = /* @__PURE__ */ jt({ + __name: "QrcodeDropZone", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect", "dragover", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = async (g) => { + try { + const b = await g; + c("detect", b); + } catch (b) { + c("error", b); + } + }, h = (g) => { + c("dragover", g); + }, v = ({ dataTransfer: g }) => { + if (!g) + return; + h(!1); + const b = [...Array.from(g.files)], p = g.getData("text/uri-list"); + b.forEach((C) => { + l(zr(C, i.formats)); + }), p !== "" && l(ni(p, i.formats)); + }; + return (g, b) => (Lt(), Ht("div", { + onDrop: at(v, ["prevent", "stop"]), + onDragenter: b[0] || (b[0] = at((p) => h(!0), ["prevent", "stop"])), + onDragleave: b[1] || (b[1] = at((p) => h(!1), ["prevent", "stop"])), + onDragover: b[2] || (b[2] = at(() => { + }, ["prevent", "stop"])) + }, [ + Dr(g.$slots, "default") + ], 32)); + } +}); +function ji(r) { + r.component("qrcode-stream", Fi), r.component("qrcode-capture", Ui), r.component("qrcode-drop-zone", Wi); +} +const Bi = { install: ji }; +export { + Ui as QrcodeCapture, + Wi as QrcodeDropZone, + Fi as QrcodeStream, + Bi as VueQrcodeReader, + ji as install, + Hi as setZXingModuleOverrides +}; diff --git a/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js new file mode 100644 index 0000000..17e8ed5 --- /dev/null +++ b/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js @@ -0,0 +1,3 @@ +(function(ee,O){typeof exports=="object"&&typeof module<"u"?O(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],O):(ee=typeof globalThis<"u"?globalThis:ee||self,O(ee.VueQrcodeReader={},ee.Vue))})(this,function(ee,O){"use strict";var Wt=(r,o,i)=>{if(!o.has(r))throw TypeError("Cannot "+i)},jt=(r,o,i)=>(Wt(r,o,"read from private field"),i?i.call(r):o.get(r)),tn=(r,o,i)=>{if(o.has(r))throw TypeError("Cannot add the same private member more than once");o instanceof WeakSet?o.add(r):o.set(r,i)},rn=(r,o,i,c)=>(Wt(r,o,"write to private field"),o.set(r,i),i);const Lt=[["aztec","Aztec"],["code_128","Code128"],["code_39","Code39"],["code_93","Code93"],["codabar","Codabar"],["databar","DataBar"],["databar_expanded","DataBarExpanded"],["data_matrix","DataMatrix"],["dx_film_edge","DXFilmEdge"],["ean_13","EAN-13"],["ean_8","EAN-8"],["itf","ITF"],["maxi_code","MaxiCode"],["micro_qr_code","MicroQRCode"],["pdf417","PDF417"],["qr_code","QRCode"],["rm_qr_code","rMQRCode"],["upc_a","UPC-A"],["upc_e","UPC-E"],["linear_codes","Linear-Codes"],["matrix_codes","Matrix-Codes"]],nn=[...Lt,["unknown"]].map(r=>r[0]),Le=new Map(Lt);function an(r){for(const[o,i]of Le)if(r===i)return o;return"unknown"}function on(r){if(Ht(r))return{width:r.naturalWidth,height:r.naturalHeight};if(Bt(r))return{width:r.width.baseVal.value,height:r.height.baseVal.value};if(Vt(r))return{width:r.videoWidth,height:r.videoHeight};if(Nt(r))return{width:r.width,height:r.height};if(Gt(r))return{width:r.displayWidth,height:r.displayHeight};if(qt(r))return{width:r.width,height:r.height};if(zt(r))return{width:r.width,height:r.height};throw new TypeError("The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.")}function Ht(r){try{return r instanceof HTMLImageElement}catch(o){return!1}}function Bt(r){try{return r instanceof SVGImageElement}catch(o){return!1}}function Vt(r){try{return r instanceof HTMLVideoElement}catch(o){return!1}}function qt(r){try{return r instanceof HTMLCanvasElement}catch(o){return!1}}function Nt(r){try{return r instanceof ImageBitmap}catch(o){return!1}}function zt(r){try{return r instanceof OffscreenCanvas}catch(o){return!1}}function Gt(r){try{return r instanceof VideoFrame}catch(o){return!1}}function Yt(r){try{return r instanceof Blob}catch(o){return!1}}function sn(r){try{return r instanceof ImageData}catch(o){return!1}}function cn(r,o){try{const i=new OffscreenCanvas(r,o);if(i.getContext("2d")instanceof OffscreenCanvasRenderingContext2D)return i;throw void 0}catch(i){const c=document.createElement("canvas");return c.width=r,c.height=o,c}}async function Jt(r){if(Ht(r)&&!await fn(r))throw new DOMException("Failed to load or decode HTMLImageElement.","InvalidStateError");if(Bt(r)&&!await hn(r))throw new DOMException("Failed to load or decode SVGImageElement.","InvalidStateError");if(Gt(r)&&pn(r))throw new DOMException("VideoFrame is closed.","InvalidStateError");if(Vt(r)&&(r.readyState===0||r.readyState===1))throw new DOMException("Invalid element or state.","InvalidStateError");if(Nt(r)&&vn(r))throw new DOMException("The image source is detached.","InvalidStateError");const{width:o,height:i}=on(r);if(o===0||i===0)return null;const c=cn(o,i).getContext("2d");c.drawImage(r,0,0);try{return c.getImageData(0,0,o,i)}catch(l){throw new DOMException("Source would taint origin.","SecurityError")}}async function un(r){let o;try{if(globalThis.createImageBitmap)o=await createImageBitmap(r);else if(globalThis.Image){o=new Image;let i="";try{i=URL.createObjectURL(r),o.src=i,await o.decode()}finally{URL.revokeObjectURL(i)}}else return r}catch(i){throw new DOMException("Failed to load or decode Blob.","InvalidStateError")}return await Jt(o)}function ln(r){const{width:o,height:i}=r;if(o===0||i===0)return null;const c=r.getContext("2d");try{return c.getImageData(0,0,o,i)}catch(l){throw new DOMException("Source would taint origin.","SecurityError")}}async function dn(r){if(Yt(r))return await un(r);if(sn(r)){if(mn(r))throw new DOMException("The image data has been detached.","InvalidStateError");return r}return qt(r)||zt(r)?ln(r):await Jt(r)}async function fn(r){try{return await r.decode(),!0}catch(o){return!1}}async function hn(r){var o;try{return await((o=r.decode)==null?void 0:o.call(r)),!0}catch(i){return!1}}function pn(r){return r.format===null}function mn(r){return r.data.buffer.byteLength===0}function vn(r){return r.width===0&&r.height===0}function Qt(r,o){return r instanceof DOMException?new DOMException(`${o}: ${r.message}`,r.name):r instanceof Error?new r.constructor(`${o}: ${r.message}`):new Error(`${o}: ${r}`)}const Xt=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function yn(r){return r.join("|")}function gn(r){const o=Zt(r);let i=0,c=Xt.length-1;for(;i<=c;){const l=Math.floor((i+c)/2),h=Xt[l],v=Zt(h);if(v===o)return h;v{const i=r.match(/_(.+?)\.wasm$/);return i?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}`:o+r}};let ut=new WeakMap;function lt(r,o){var i;const c=ut.get(r);if(c!=null&&c.modulePromise&&o===void 0)return c.modulePromise;const l=(i=c==null?void 0:c.moduleOverrides)!=null?i:Pn,h=r({...l});return ut.set(r,{moduleOverrides:l,modulePromise:h}),h}function Tn(r,o){ut.set(r,{moduleOverrides:o})}async function En(r,o,i=Ce){const c={...Ce,...i},l=await lt(r),{size:h}=o,v=new Uint8Array(await o.arrayBuffer()),g=l._malloc(h);l.HEAPU8.set(v,g);const b=l.readBarcodesFromImage(g,h,Kt(l,c));l._free(g);const p=[];for(let C=0;C{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(o={}){var i=o,c,l;i.ready=new Promise((e,t)=>{c=e,l=t});var h=Object.assign({},i),v="./this.program",g=typeof window=="object",b=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var p="";function C(e){return i.locateFile?i.locateFile(e,p):p+e}var S;(g||b)&&(b?p=self.location.href:typeof document<"u"&&document.currentScript&&(p=document.currentScript.src),r&&(p=r),p.indexOf("blob:")!==0?p=p.substr(0,p.replace(/[?#].*/,"").lastIndexOf("/")+1):p="",b&&(S=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)})),i.print||console.log.bind(console);var $=i.printErr||console.error.bind(console);Object.assign(i,h),h=null,i.arguments&&i.arguments,i.thisProgram&&(v=i.thisProgram),i.quit&&i.quit;var U;i.wasmBinary&&(U=i.wasmBinary),typeof WebAssembly!="object"&&K("no native wasm support detected");var W,j=!1,k,R,Z,I,D,A,me,ce;function Se(){var e=W.buffer;i.HEAP8=k=new Int8Array(e),i.HEAP16=Z=new Int16Array(e),i.HEAPU8=R=new Uint8Array(e),i.HEAPU16=I=new Uint16Array(e),i.HEAP32=D=new Int32Array(e),i.HEAPU32=A=new Uint32Array(e),i.HEAPF32=me=new Float32Array(e),i.HEAPF64=ce=new Float64Array(e)}var Pe=[],De=[],Ae=[];function ze(){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)pt(i.preRun.shift());wt(Pe)}function ft(){wt(De)}function ht(){if(i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;)Re(i.postRun.shift());wt(Ae)}function pt(e){Pe.unshift(e)}function mt(e){De.unshift(e)}function Re(e){Ae.unshift(e)}var ae=0,ge=null;function vt(e){var t;ae++,(t=i.monitorRunDependencies)===null||t===void 0||t.call(i,ae)}function ve(e){var t;if(ae--,(t=i.monitorRunDependencies)===null||t===void 0||t.call(i,ae),ae==0&&ge){var n=ge;ge=null,n()}}function K(e){var t;(t=i.onAbort)===null||t===void 0||t.call(i,e),e="Aborted("+e+")",$(e),j=!0,e+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(e);throw l(n),n}var yt="data:application/octet-stream;base64,",Ge=e=>e.startsWith(yt),ye;ye="zxing_reader.wasm",Ge(ye)||(ye=C(ye));function Ye(e){if(e==ye&&U)return new Uint8Array(U);if(S)return S(e);throw"both async and sync fetching of the wasm failed"}function gt(e){return!U&&(g||b)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()}).catch(()=>Ye(e)):Promise.resolve().then(()=>Ye(e))}function Je(e,t,n){return gt(e).then(a=>WebAssembly.instantiate(a,t)).then(a=>a).then(n,a=>{$(`failed to asynchronously prepare wasm: ${a}`),K(a)})}function wa(e,t,n,a){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Ge(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(s=>{var u=WebAssembly.instantiateStreaming(s,n);return u.then(a,function(d){return $(`wasm streaming compile failed: ${d}`),$("falling back to ArrayBuffer instantiation"),Je(t,n,a)})}):Je(t,n,a)}function ba(){var e={a:ci};function t(a,s){return G=a.exports,W=G.ia,Se(),kr=G.ma,mt(G.ja),ve(),G}vt();function n(a){t(a.instance)}if(i.instantiateWasm)try{return i.instantiateWasm(e,t)}catch(a){$(`Module.instantiateWasm callback failed with error: ${a}`),l(a)}return wa(U,ye,e,n).catch(l),{}}var wt=e=>{for(;e.length>0;)e.shift()(i)};i.noExitRuntime;var Qe=[],Xe=0,Ca=e=>{var t=new bt(e);return t.get_caught()||(t.set_caught(!0),Xe--),t.set_rethrown(!1),Qe.push(t),Yr(t.excPtr),t.get_exception_ptr()},ue=0,$a=()=>{L(0,0);var e=Qe.pop();Gr(e.excPtr),ue=0};function bt(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){A[this.ptr+4>>2]=t},this.get_type=function(){return A[this.ptr+4>>2]},this.set_destructor=function(t){A[this.ptr+8>>2]=t},this.get_destructor=function(){return A[this.ptr+8>>2]},this.set_caught=function(t){t=t?1:0,k[this.ptr+12>>0]=t},this.get_caught=function(){return k[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,k[this.ptr+13>>0]=t},this.get_rethrown=function(){return k[this.ptr+13>>0]!=0},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n)},this.set_adjusted_ptr=function(t){A[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return A[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=Qr(this.get_type());if(t)return A[this.excPtr>>2];var n=this.get_adjusted_ptr();return n!==0?n:this.excPtr}}var _a=e=>{throw ue||(ue=e),ue},Ct=e=>{var t=ue;if(!t)return je(0),0;var n=new bt(t);n.set_adjusted_ptr(t);var a=n.get_type();if(!a)return je(0),t;for(var s in e){var u=e[s];if(u===0||u===a)break;var d=n.ptr+16;if(Jr(u,a,d))return je(u),t}return je(a),t},Sa=()=>Ct([]),Pa=e=>Ct([e]),Ta=(e,t)=>Ct([e,t]),Ea=()=>{var e=Qe.pop();e||K("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(Qe.push(e),e.set_rethrown(!0),e.set_caught(!1),Xe++),ue=t,ue},Oa=(e,t,n)=>{var a=new bt(e);throw a.init(t,n),ue=e,Xe++,ue},Ma=()=>Xe,Ze={},$t=e=>{for(;e.length;){var t=e.pop(),n=e.pop();n(t)}};function _t(e){return this.fromWireType(D[e>>2])}var Te={},we={},Ke={},Pr,et=e=>{throw new Pr(e)},be=(e,t,n)=>{e.forEach(function(f){Ke[f]=t});function a(f){var m=n(f);m.length!==e.length&&et("Mismatched type converter count");for(var w=0;w{we.hasOwnProperty(f)?s[m]=we[f]:(u.push(f),Te.hasOwnProperty(f)||(Te[f]=[]),Te[f].push(()=>{s[m]=we[f],++d,d===u.length&&a(s)}))}),u.length===0&&a(s)},Da=e=>{var t=Ze[e];delete Ze[e];var n=t.rawConstructor,a=t.rawDestructor,s=t.fields,u=s.map(d=>d.getterReturnType).concat(s.map(d=>d.setterArgumentType));be([e],u,d=>{var f={};return s.forEach((m,w)=>{var _=m.fieldName,T=d[w],E=m.getter,M=m.getterContext,H=d[w+s.length],N=m.setter,F=m.setterContext;f[_]={read:Q=>T.fromWireType(E(M,Q)),write:(Q,y)=>{var P=[];N(F,Q,H.toWireType(P,y)),$t(P)}}}),[{name:t.name,fromWireType:m=>{var w={};for(var _ in f)w[_]=f[_].read(m);return a(m),w},toWireType:(m,w)=>{for(var _ in f)if(!(_ in w))throw new TypeError(`Missing field: "${_}"`);var T=n();for(_ in f)f[_].write(T,w[_]);return m!==null&&m.push(a,T),T},argPackAdvance:ie,readValueFromPointer:_t,destructorFunction:a}]})},Aa=(e,t,n,a,s)=>{},Ra=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Tr=e},Tr,J=e=>{for(var t="",n=e;R[n];)t+=Tr[R[n++]];return t},Ee,x=e=>{throw new Ee(e)};function xa(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var a=t.name;if(e||x(`type "${a}" must have a positive integer typeid pointer`),we.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;x(`Cannot register type '${a}' twice`)}if(we[e]=t,delete Ke[e],Te.hasOwnProperty(e)){var s=Te[e];delete Te[e],s.forEach(u=>u())}}function oe(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return xa(e,t,n)}var ie=8,ka=(e,t,n,a)=>{t=J(t),oe(e,{name:t,fromWireType:function(s){return!!s},toWireType:function(s,u){return u?n:a},argPackAdvance:ie,readValueFromPointer:function(s){return this.fromWireType(R[s])},destructorFunction:null})},Ia=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),St=e=>{function t(n){return n.$$.ptrType.registeredClass.name}x(t(e)+" instance already deleted")},Pt=!1,Er=e=>{},Fa=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Or=e=>{e.count.value-=1;var t=e.count.value===0;t&&Fa(e)},Mr=(e,t,n)=>{if(t===n)return e;if(n.baseClass===void 0)return null;var a=Mr(e,t,n.baseClass);return a===null?null:n.downcast(a)},Dr={},Ua=()=>Object.keys(Ie).length,Wa=()=>{var e=[];for(var t in Ie)Ie.hasOwnProperty(t)&&e.push(Ie[t]);return e},xe=[],Tt=()=>{for(;xe.length;){var e=xe.pop();e.$$.deleteScheduled=!1,e.delete()}},ke,ja=e=>{ke=e,xe.length&&ke&&ke(Tt)},La=()=>{i.getInheritedInstanceCount=Ua,i.getLiveInheritedInstances=Wa,i.flushPendingDeletes=Tt,i.setDelayFunction=ja},Ie={},Ha=(e,t)=>{for(t===void 0&&x("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Ba=(e,t)=>(t=Ha(e,t),Ie[t]),tt=(e,t)=>{(!t.ptrType||!t.ptr)&&et("makeClassHandle requires ptr and ptrType");var n=!!t.smartPtrType,a=!!t.smartPtr;return n!==a&&et("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Fe(Object.create(e,{$$:{value:t,writable:!0}}))};function Va(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=Ba(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var a=n.clone();return this.destructor(e),a}function s(){return this.isSmartPointer?tt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):tt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var u=this.registeredClass.getActualType(t),d=Dr[u];if(!d)return s.call(this);var f;this.isConst?f=d.constPointerType:f=d.pointerType;var m=Mr(t,this.registeredClass,f.registeredClass);return m===null?s.call(this):this.isSmartPointer?tt(f.registeredClass.instancePrototype,{ptrType:f,ptr:m,smartPtrType:this,smartPtr:e}):tt(f.registeredClass.instancePrototype,{ptrType:f,ptr:m})}var Fe=e=>typeof FinalizationRegistry>"u"?(Fe=t=>t,e):(Pt=new FinalizationRegistry(t=>{Or(t.$$)}),Fe=t=>{var n=t.$$,a=!!n.smartPtr;if(a){var s={$$:n};Pt.register(t,s,t)}return t},Er=t=>Pt.unregister(t),Fe(e)),qa=()=>{Object.assign(rt.prototype,{isAliasOf(e){if(!(this instanceof rt)||!(e instanceof rt))return!1;var t=this.$$.ptrType.registeredClass,n=this.$$.ptr;e.$$=e.$$;for(var a=e.$$.ptrType.registeredClass,s=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;a.baseClass;)s=a.upcast(s),a=a.baseClass;return t===a&&n===s},clone(){if(this.$$.ptr||St(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Fe(Object.create(Object.getPrototypeOf(this),{$$:{value:Ia(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&x("Object already scheduled for deletion"),Er(this),Or(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||St(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&x("Object already scheduled for deletion"),xe.push(this),xe.length===1&&ke&&ke(Tt),this.$$.deleteScheduled=!0,this}})};function rt(){}var Ue=(e,t)=>Object.defineProperty(t,"name",{value:e}),Ar=(e,t,n)=>{if(e[t].overloadTable===void 0){var a=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[a.argCount]=a}},Et=(e,t,n)=>{i.hasOwnProperty(e)?((n===void 0||i[e].overloadTable!==void 0&&i[e].overloadTable[n]!==void 0)&&x(`Cannot register public name '${e}' twice`),Ar(i,e,e),i.hasOwnProperty(n)&&x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`),i[e].overloadTable[n]=t):(i[e]=t,n!==void 0&&(i[e].numArguments=n))},Na=48,za=57,Ga=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=Na&&t<=za?`_${e}`:e};function Ya(e,t,n,a,s,u,d,f){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=a,this.baseClass=s,this.getActualType=u,this.upcast=d,this.downcast=f,this.pureVirtualFunctions=[]}var Ot=(e,t,n)=>{for(;t!==n;)t.upcast||x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Ja(e,t){if(t===null)return this.isReference&&x(`null is not a valid ${this.name}`),0;t.$$||x(`Cannot pass "${xt(t)}" as a ${this.name}`),t.$$.ptr||x(`Cannot pass deleted object as a pointer of type ${this.name}`);var n=t.$$.ptrType.registeredClass,a=Ot(t.$$.ptr,n,this.registeredClass);return a}function Qa(e,t){var n;if(t===null)return this.isReference&&x(`null is not a valid ${this.name}`),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;(!t||!t.$$)&&x(`Cannot pass "${xt(t)}" as a ${this.name}`),t.$$.ptr||x(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&x(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var a=t.$$.ptrType.registeredClass;if(n=Ot(t.$$.ptr,a,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&x("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:x(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var s=t.clone();n=this.rawShare(n,le.toHandle(()=>s.delete())),e!==null&&e.push(this.rawDestructor,n)}break;default:x("Unsupporting sharing policy")}return n}function Xa(e,t){if(t===null)return this.isReference&&x(`null is not a valid ${this.name}`),0;t.$$||x(`Cannot pass "${xt(t)}" as a ${this.name}`),t.$$.ptr||x(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var n=t.$$.ptrType.registeredClass,a=Ot(t.$$.ptr,n,this.registeredClass);return a}function Rr(e){return this.fromWireType(A[e>>2])}var Za=()=>{Object.assign(nt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var t;(t=this.rawDestructor)===null||t===void 0||t.call(this,e)},argPackAdvance:ie,readValueFromPointer:Rr,deleteObject(e){e!==null&&e.delete()},fromWireType:Va})};function nt(e,t,n,a,s,u,d,f,m,w,_){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=a,this.isSmartPointer=s,this.pointeeType=u,this.sharingPolicy=d,this.rawGetPointee=f,this.rawConstructor=m,this.rawShare=w,this.rawDestructor=_,!s&&t.baseClass===void 0?a?(this.toWireType=Ja,this.destructorFunction=null):(this.toWireType=Xa,this.destructorFunction=null):this.toWireType=Qa}var xr=(e,t,n)=>{i.hasOwnProperty(e)||et("Replacing nonexistant public symbol"),i[e].overloadTable!==void 0&&n!==void 0?i[e].overloadTable[n]=t:(i[e]=t,i[e].argCount=n)},Ka=(e,t,n)=>{var a=i["dynCall_"+e];return n&&n.length?a.apply(null,[t].concat(n)):a.call(null,t)},at=[],kr,B=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=kr.get(e)),t},eo=(e,t,n)=>{if(e.includes("j"))return Ka(e,t,n);var a=B(t).apply(null,n);return a},to=(e,t)=>{var n=[];return function(){return n.length=0,Object.assign(n,arguments),eo(e,t,n)}},re=(e,t)=>{e=J(e);function n(){return e.includes("j")?to(e,t):B(t)}var a=n();return typeof a!="function"&&x(`unknown function pointer with signature ${e}: ${t}`),a},ro=(e,t)=>{var n=Ue(t,function(a){this.name=t,this.message=a;var s=new Error(a).stack;s!==void 0&&(this.stack=this.toString()+` +`+s.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},n},Ir,Fr=e=>{var t=zr(e),n=J(t);return de(t),n},ot=(e,t)=>{var n=[],a={};function s(u){if(!a[u]&&!we[u]){if(Ke[u]){Ke[u].forEach(s);return}n.push(u),a[u]=!0}}throw t.forEach(s),new Ir(`${e}: `+n.map(Fr).join([", "]))},no=(e,t,n,a,s,u,d,f,m,w,_,T,E)=>{_=J(_),u=re(s,u),f&&(f=re(d,f)),w&&(w=re(m,w)),E=re(T,E);var M=Ga(_);Et(M,function(){ot(`Cannot construct ${_} due to unbound types`,[a])}),be([e,t,n],a?[a]:[],function(H){H=H[0];var N,F;a?(N=H.registeredClass,F=N.instancePrototype):F=rt.prototype;var Q=Ue(_,function(){if(Object.getPrototypeOf(this)!==y)throw new Ee("Use 'new' to construct "+_);if(P.constructor_body===void 0)throw new Ee(_+" has no accessible constructor");var en=P.constructor_body[arguments.length];if(en===void 0)throw new Ee(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`);return en.apply(this,arguments)}),y=Object.create(F,{constructor:{value:Q}});Q.prototype=y;var P=new Ya(_,Q,y,E,N,u,f,w);if(P.baseClass){var z,Y;(Y=(z=P.baseClass).__derivedClasses)!==null&&Y!==void 0||(z.__derivedClasses=[]),P.baseClass.__derivedClasses.push(P)}var Oe=new nt(_,P,!0,!1,!1),ct=new nt(_+"*",P,!1,!1,!1),Kr=new nt(_+" const*",P,!1,!0,!1);return Dr[e]={pointerType:ct,constPointerType:Kr},xr(M,Q),[Oe,ct,Kr]})},Mt=(e,t)=>{for(var n=[],a=0;a>2]);return n};function ao(e){for(var t=1;t{var d=Mt(t,n);s=re(a,s),be([],[e],function(f){f=f[0];var m=`constructor ${f.name}`;if(f.registeredClass.constructor_body===void 0&&(f.registeredClass.constructor_body=[]),f.registeredClass.constructor_body[t-1]!==void 0)throw new Ee(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return f.registeredClass.constructor_body[t-1]=()=>{ot(`Cannot construct ${f.name} due to unbound types`,d)},be([],d,w=>(w.splice(1,0,null),f.registeredClass.constructor_body[t-1]=Dt(m,w,null,s,u),[])),[]})},Ur=e=>{e=e.trim();const t=e.indexOf("(");return t!==-1?e.substr(0,t):e},io=(e,t,n,a,s,u,d,f,m)=>{var w=Mt(n,a);t=J(t),t=Ur(t),u=re(s,u),be([],[e],function(_){_=_[0];var T=`${_.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),f&&_.registeredClass.pureVirtualFunctions.push(t);function E(){ot(`Cannot call ${T} due to unbound types`,w)}var M=_.registeredClass.instancePrototype,H=M[t];return H===void 0||H.overloadTable===void 0&&H.className!==_.name&&H.argCount===n-2?(E.argCount=n-2,E.className=_.name,M[t]=E):(Ar(M,t,T),M[t].overloadTable[n-2]=E),be([],w,function(N){var F=Dt(T,N,_,u,d);return M[t].overloadTable===void 0?(F.argCount=n-2,M[t]=F):M[t].overloadTable[n-2]=F,[]}),[]})};function so(){Object.assign(Wr.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Wr(){this.allocated=[void 0],this.freelist=[]}var te=new Wr,At=e=>{e>=te.reserved&&--te.get(e).refcount===0&&te.free(e)},co=()=>{for(var e=0,t=te.reserved;t{te.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),te.reserved=te.allocated.length,i.count_emval_handles=co},le={toValue:e=>(e||x("Cannot use deleted val. handle = "+e),te.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return te.allocate({refcount:1,value:e})}}},lo=(e,t)=>{t=J(t),oe(e,{name:t,fromWireType:n=>{var a=le.toValue(n);return At(n),a},toWireType:(n,a)=>le.toHandle(a),argPackAdvance:ie,readValueFromPointer:_t,destructorFunction:null})},fo=(e,t,n)=>{switch(t){case 1:return n?function(a){return this.fromWireType(k[a>>0])}:function(a){return this.fromWireType(R[a>>0])};case 2:return n?function(a){return this.fromWireType(Z[a>>1])}:function(a){return this.fromWireType(I[a>>1])};case 4:return n?function(a){return this.fromWireType(D[a>>2])}:function(a){return this.fromWireType(A[a>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},ho=(e,t,n,a)=>{t=J(t);function s(){}s.values={},oe(e,{name:t,constructor:s,fromWireType:function(u){return this.constructor.values[u]},toWireType:(u,d)=>d.value,argPackAdvance:ie,readValueFromPointer:fo(t,n,a),destructorFunction:null}),Et(t,s)},Rt=(e,t)=>{var n=we[e];return n===void 0&&x(t+" has unknown type "+Fr(e)),n},po=(e,t,n)=>{var a=Rt(e,"enum");t=J(t);var s=a.constructor,u=Object.create(a.constructor.prototype,{value:{value:n},constructor:{value:Ue(`${a.name}_${t}`,function(){})}});s.values[n]=u,s[t]=u},xt=e=>{if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},mo=(e,t)=>{switch(t){case 4:return function(n){return this.fromWireType(me[n>>2])};case 8:return function(n){return this.fromWireType(ce[n>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},vo=(e,t,n)=>{t=J(t),oe(e,{name:t,fromWireType:a=>a,toWireType:(a,s)=>s,argPackAdvance:ie,readValueFromPointer:mo(t,n),destructorFunction:null})},yo=(e,t,n,a,s,u,d)=>{var f=Mt(t,n);e=J(e),e=Ur(e),s=re(a,s),Et(e,function(){ot(`Cannot call ${e} due to unbound types`,f)},t-1),be([],f,function(m){var w=[m[0],null].concat(m.slice(1));return xr(e,Dt(e,w,null,s,u),t-1),[]})},go=(e,t,n)=>{switch(t){case 1:return n?a=>k[a>>0]:a=>R[a>>0];case 2:return n?a=>Z[a>>1]:a=>I[a>>1];case 4:return n?a=>D[a>>2]:a=>A[a>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},wo=(e,t,n,a,s)=>{t=J(t);var u=_=>_;if(a===0){var d=32-8*n;u=_=>_<>>d}var f=t.includes("unsigned"),m=(_,T)=>{},w;f?w=function(_,T){return m(T,this.name),T>>>0}:w=function(_,T){return m(T,this.name),T},oe(e,{name:t,fromWireType:u,toWireType:w,argPackAdvance:ie,readValueFromPointer:go(t,n,a!==0),destructorFunction:null})},bo=(e,t,n)=>{var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],s=a[t];function u(d){var f=A[d>>2],m=A[d+4>>2];return new s(k.buffer,m,f)}n=J(n),oe(e,{name:n,fromWireType:u,argPackAdvance:ie,readValueFromPointer:u},{ignoreDuplicateRegistrations:!0})},jr=(e,t,n,a)=>{if(!(a>0))return 0;for(var s=n,u=n+a-1,d=0;d=55296&&f<=57343){var m=e.charCodeAt(++d);f=65536+((f&1023)<<10)|m&1023}if(f<=127){if(n>=u)break;t[n++]=f}else if(f<=2047){if(n+1>=u)break;t[n++]=192|f>>6,t[n++]=128|f&63}else if(f<=65535){if(n+2>=u)break;t[n++]=224|f>>12,t[n++]=128|f>>6&63,t[n++]=128|f&63}else{if(n+3>=u)break;t[n++]=240|f>>18,t[n++]=128|f>>12&63,t[n++]=128|f>>6&63,t[n++]=128|f&63}}return t[n]=0,n-s},Co=(e,t,n)=>jr(e,R,t,n),Lr=e=>{for(var t=0,n=0;n=55296&&a<=57343?(t+=4,++n):t+=3}return t},Hr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,$o=(e,t,n)=>{for(var a=t+n,s=t;e[s]&&!(s>=a);)++s;if(s-t>16&&e.buffer&&Hr)return Hr.decode(e.subarray(t,s));for(var u="";t>10,56320|w&1023)}}return u},kt=(e,t)=>e?$o(R,e,t):"",_o=(e,t)=>{t=J(t);var n=t==="std::string";oe(e,{name:t,fromWireType(a){var s=A[a>>2],u=a+4,d;if(n)for(var f=u,m=0;m<=s;++m){var w=u+m;if(m==s||R[w]==0){var _=w-f,T=kt(f,_);d===void 0?d=T:(d+="\0",d+=T),f=w+1}}else{for(var E=new Array(s),m=0;m>2]=u,n&&d)Co(s,m,u+1);else if(d)for(var w=0;w255&&(de(m),x("String has UTF-16 code units that do not fit in 8 bits")),R[m+w]=_}else for(var w=0;w{for(var n=e,a=n>>1,s=a+t/2;!(a>=s)&&I[a];)++a;if(n=a<<1,n-e>32&&Br)return Br.decode(R.subarray(e,n));for(var u="",d=0;!(d>=t/2);++d){var f=Z[e+d*2>>1];if(f==0)break;u+=String.fromCharCode(f)}return u},Po=(e,t,n)=>{var a;if((a=n)!==null&&a!==void 0||(n=2147483647),n<2)return 0;n-=2;for(var s=t,u=n>1]=f,t+=2}return Z[t>>1]=0,t-s},To=e=>e.length*2,Eo=(e,t)=>{for(var n=0,a="";!(n>=t/4);){var s=D[e+n*4>>2];if(s==0)break;if(++n,s>=65536){var u=s-65536;a+=String.fromCharCode(55296|u>>10,56320|u&1023)}else a+=String.fromCharCode(s)}return a},Oo=(e,t,n)=>{var a;if((a=n)!==null&&a!==void 0||(n=2147483647),n<4)return 0;for(var s=t,u=s+n-4,d=0;d=55296&&f<=57343){var m=e.charCodeAt(++d);f=65536+((f&1023)<<10)|m&1023}if(D[t>>2]=f,t+=4,t+4>u)break}return D[t>>2]=0,t-s},Mo=e=>{for(var t=0,n=0;n=55296&&a<=57343&&++n,t+=4}return t},Do=(e,t,n)=>{n=J(n);var a,s,u,d,f;t===2?(a=So,s=Po,d=To,u=()=>I,f=1):t===4&&(a=Eo,s=Oo,d=Mo,u=()=>A,f=2),oe(e,{name:n,fromWireType:m=>{for(var w=A[m>>2],_=u(),T,E=m+4,M=0;M<=w;++M){var H=m+4+M*t;if(M==w||_[H>>f]==0){var N=H-E,F=a(E,N);T===void 0?T=F:(T+="\0",T+=F),E=H+t}}return de(m),T},toWireType:(m,w)=>{typeof w!="string"&&x(`Cannot pass non-string to C++ string type ${n}`);var _=d(w),T=Ut(4+_+t);return A[T>>2]=_>>f,s(w,T+4,_+t),m!==null&&m.push(de,T),T},argPackAdvance:ie,readValueFromPointer:_t,destructorFunction(m){de(m)}})},Ao=(e,t,n,a,s,u)=>{Ze[e]={name:J(t),rawConstructor:re(n,a),rawDestructor:re(s,u),fields:[]}},Ro=(e,t,n,a,s,u,d,f,m,w)=>{Ze[e].fields.push({fieldName:J(t),getterReturnType:n,getter:re(a,s),getterContext:u,setterArgumentType:d,setter:re(f,m),setterContext:w})},xo=(e,t)=>{t=J(t),oe(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:(n,a)=>{}})},It=[],ko=(e,t,n,a)=>(e=It[e],t=le.toValue(t),e(null,t,n,a)),Io={},Fo=e=>{var t=Io[e];return t===void 0?J(e):t},Vr=()=>{if(typeof globalThis=="object")return globalThis;function e(t){t.$$$embind_global$$$=t;var n=typeof $$$embind_global$$$=="object"&&t.$$$embind_global$$$==t;return n||delete t.$$$embind_global$$$,n}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Uo=e=>e===0?le.toHandle(Vr()):(e=Fo(e),le.toHandle(Vr()[e])),Wo=e=>{var t=It.length;return It.push(e),t},jo=(e,t)=>{for(var n=new Array(e),a=0;a>2],"parameter "+a);return n},Lo=Reflect.construct,Ho=(e,t,n)=>{var a=[],s=e.toWireType(a,n);return a.length&&(A[t>>2]=le.toHandle(a)),s},Bo=(e,t,n)=>{var a=jo(e,t),s=a.shift();e--;var u=new Array(e),d=(m,w,_,T)=>{for(var E=0,M=0;Mm.name).join(", ")}) => ${s.name}>`;return Wo(Ue(f,d))},Vo=e=>{e>4&&(te.get(e).refcount+=1)},qo=e=>{var t=le.toValue(e);$t(t),At(e)},No=(e,t)=>{e=Rt(e,"_emval_take_value");var n=e.readValueFromPointer(t);return le.toHandle(n)},zo=()=>{K("")},Go=(e,t,n)=>R.copyWithin(e,t,t+n),Yo=()=>2147483648,Jo=e=>{var t=W.buffer,n=(e-t.byteLength+65535)/65536;try{return W.grow(n),Se(),1}catch(a){}},Qo=e=>{var t=R.length;e>>>=0;var n=Yo();if(e>n)return!1;for(var a=(m,w)=>m+(w-m%w)%w,s=1;s<=4;s*=2){var u=t*(1+.2/s);u=Math.min(u,e+100663296);var d=Math.min(n,a(Math.max(e,u),65536)),f=Jo(d);if(f)return!0}return!1},Ft={},Xo=()=>v||"./this.program",We=()=>{if(!We.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:Xo()};for(var n in Ft)Ft[n]===void 0?delete t[n]:t[n]=Ft[n];var a=[];for(var n in t)a.push(`${n}=${t[n]}`);We.strings=a}return We.strings},Zo=(e,t)=>{for(var n=0;n>0]=e.charCodeAt(n);k[t>>0]=0},Ko=(e,t)=>{var n=0;return We().forEach((a,s)=>{var u=t+n;A[e+s*4>>2]=u,Zo(a,u),n+=a.length+1}),0},ei=(e,t)=>{var n=We();A[e>>2]=n.length;var a=0;return n.forEach(s=>a+=s.length+1),A[t>>2]=a,0},ti=e=>e,it=e=>e%4===0&&(e%100!==0||e%400===0),ri=(e,t)=>{for(var n=0,a=0;a<=t;n+=e[a++]);return n},qr=[31,29,31,30,31,30,31,31,30,31,30,31],Nr=[31,28,31,30,31,30,31,31,30,31,30,31],ni=(e,t)=>{for(var n=new Date(e.getTime());t>0;){var a=it(n.getFullYear()),s=n.getMonth(),u=(a?qr:Nr)[s];if(t>u-n.getDate())t-=u-n.getDate()+1,n.setDate(1),s<11?n.setMonth(s+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1));else return n.setDate(n.getDate()+t),n}return n};function ai(e,t,n){var a=Lr(e)+1,s=new Array(a);return jr(e,s,0,s.length),s}var oi=(e,t)=>{k.set(e,t)},ii=(e,t,n,a)=>{var s=A[a+40>>2],u={tm_sec:D[a>>2],tm_min:D[a+4>>2],tm_hour:D[a+8>>2],tm_mday:D[a+12>>2],tm_mon:D[a+16>>2],tm_year:D[a+20>>2],tm_wday:D[a+24>>2],tm_yday:D[a+28>>2],tm_isdst:D[a+32>>2],tm_gmtoff:D[a+36>>2],tm_zone:s?kt(s):""},d=kt(n),f={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var m in f)d=d.replace(new RegExp(m,"g"),f[m]);var w=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],_=["January","February","March","April","May","June","July","August","September","October","November","December"];function T(y,P,z){for(var Y=typeof y=="number"?y.toString():y||"";Y.length0?1:0}var Y;return(Y=z(y.getFullYear()-P.getFullYear()))===0&&(Y=z(y.getMonth()-P.getMonth()))===0&&(Y=z(y.getDate()-P.getDate())),Y}function H(y){switch(y.getDay()){case 0:return new Date(y.getFullYear()-1,11,29);case 1:return y;case 2:return new Date(y.getFullYear(),0,3);case 3:return new Date(y.getFullYear(),0,2);case 4:return new Date(y.getFullYear(),0,1);case 5:return new Date(y.getFullYear()-1,11,31);case 6:return new Date(y.getFullYear()-1,11,30)}}function N(y){var P=ni(new Date(y.tm_year+1900,0,1),y.tm_yday),z=new Date(P.getFullYear(),0,4),Y=new Date(P.getFullYear()+1,0,4),Oe=H(z),ct=H(Y);return M(Oe,P)<=0?M(ct,P)<=0?P.getFullYear()+1:P.getFullYear():P.getFullYear()-1}var F={"%a":y=>w[y.tm_wday].substring(0,3),"%A":y=>w[y.tm_wday],"%b":y=>_[y.tm_mon].substring(0,3),"%B":y=>_[y.tm_mon],"%C":y=>{var P=y.tm_year+1900;return E(P/100|0,2)},"%d":y=>E(y.tm_mday,2),"%e":y=>T(y.tm_mday,2," "),"%g":y=>N(y).toString().substring(2),"%G":y=>N(y),"%H":y=>E(y.tm_hour,2),"%I":y=>{var P=y.tm_hour;return P==0?P=12:P>12&&(P-=12),E(P,2)},"%j":y=>E(y.tm_mday+ri(it(y.tm_year+1900)?qr:Nr,y.tm_mon-1),3),"%m":y=>E(y.tm_mon+1,2),"%M":y=>E(y.tm_min,2),"%n":()=>` +`,"%p":y=>y.tm_hour>=0&&y.tm_hour<12?"AM":"PM","%S":y=>E(y.tm_sec,2),"%t":()=>" ","%u":y=>y.tm_wday||7,"%U":y=>{var P=y.tm_yday+7-y.tm_wday;return E(Math.floor(P/7),2)},"%V":y=>{var P=Math.floor((y.tm_yday+7-(y.tm_wday+6)%7)/7);if((y.tm_wday+371-y.tm_yday-2)%7<=2&&P++,P){if(P==53){var z=(y.tm_wday+371-y.tm_yday)%7;z!=4&&(z!=3||!it(y.tm_year))&&(P=1)}}else{P=52;var Y=(y.tm_wday+7-y.tm_yday-1)%7;(Y==4||Y==5&&it(y.tm_year%400-1))&&P++}return E(P,2)},"%w":y=>y.tm_wday,"%W":y=>{var P=y.tm_yday+7-(y.tm_wday+6)%7;return E(Math.floor(P/7),2)},"%y":y=>(y.tm_year+1900).toString().substring(2),"%Y":y=>y.tm_year+1900,"%z":y=>{var P=y.tm_gmtoff,z=P>=0;return P=Math.abs(P)/60,P=P/60*100+P%60,(z?"+":"-")+("0000"+P).slice(-4)},"%Z":y=>y.tm_zone,"%%":()=>"%"};d=d.replace(/%%/g,"\0\0");for(var m in F)d.includes(m)&&(d=d.replace(new RegExp(m,"g"),F[m](u)));d=d.replace(/\0\0/g,"%");var Q=ai(d);return Q.length>t?0:(oi(Q,e),Q.length-1)},si=(e,t,n,a,s)=>ii(e,t,n,a);Pr=i.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Ra(),Ee=i.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},qa(),La(),Za(),Ir=i.UnboundTypeError=ro(Error,"UnboundTypeError"),so(),uo();var ci={s:Ca,u:$a,b:Sa,g:Pa,q:Ta,J:Ea,f:Oa,V:Ma,d:_a,da:Da,Q:Aa,_:ka,ca:no,ba:oo,w:io,Y:lo,x:ho,h:po,L:vo,M:yo,t:wo,o:bo,K:_o,C:Do,A:Ao,ea:Ro,$:xo,R:ko,ha:At,fa:Uo,Z:Bo,N:Vo,O:qo,aa:No,B:zo,X:Go,W:Qo,T:Ko,U:ei,E:Si,D:hi,F:_i,n:Pi,a:ui,e:mi,m:fi,k:yi,H:Ci,v:wi,G:$i,z:Ei,P:Mi,l:vi,j:pi,c:di,p:li,I:bi,r:Ti,i:gi,y:Oi,ga:ti,S:si},G=ba(),de=i._free=e=>(de=i._free=G.ka)(e),Ut=i._malloc=e=>(Ut=i._malloc=G.la)(e),zr=e=>(zr=G.na)(e),L=(e,t)=>(L=G.oa)(e,t),je=e=>(je=G.pa)(e),V=()=>(V=G.qa)(),q=e=>(q=G.ra)(e),Gr=e=>(Gr=G.sa)(e),Yr=e=>(Yr=G.ta)(e),Jr=(e,t,n)=>(Jr=G.ua)(e,t,n),Qr=e=>(Qr=G.va)(e);i.dynCall_viijii=(e,t,n,a,s,u,d)=>(i.dynCall_viijii=G.wa)(e,t,n,a,s,u,d);var Xr=i.dynCall_jiiii=(e,t,n,a,s)=>(Xr=i.dynCall_jiiii=G.xa)(e,t,n,a,s);i.dynCall_iiiiij=(e,t,n,a,s,u,d)=>(i.dynCall_iiiiij=G.ya)(e,t,n,a,s,u,d),i.dynCall_iiiiijj=(e,t,n,a,s,u,d,f,m)=>(i.dynCall_iiiiijj=G.za)(e,t,n,a,s,u,d,f,m),i.dynCall_iiiiiijj=(e,t,n,a,s,u,d,f,m,w)=>(i.dynCall_iiiiiijj=G.Aa)(e,t,n,a,s,u,d,f,m,w);function ui(e,t){var n=V();try{return B(e)(t)}catch(a){if(q(n),a!==a+0)throw a;L(1,0)}}function li(e,t,n,a){var s=V();try{B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function di(e,t,n){var a=V();try{B(e)(t,n)}catch(s){if(q(a),s!==s+0)throw s;L(1,0)}}function fi(e,t,n,a){var s=V();try{return B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function hi(e,t,n,a,s){var u=V();try{return B(e)(t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}function pi(e,t){var n=V();try{B(e)(t)}catch(a){if(q(n),a!==a+0)throw a;L(1,0)}}function mi(e,t,n){var a=V();try{return B(e)(t,n)}catch(s){if(q(a),s!==s+0)throw s;L(1,0)}}function vi(e){var t=V();try{B(e)()}catch(n){if(q(t),n!==n+0)throw n;L(1,0)}}function yi(e,t,n,a,s){var u=V();try{return B(e)(t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}function gi(e,t,n,a,s,u,d,f,m,w,_){var T=V();try{B(e)(t,n,a,s,u,d,f,m,w,_)}catch(E){if(q(T),E!==E+0)throw E;L(1,0)}}function wi(e,t,n,a,s,u,d){var f=V();try{return B(e)(t,n,a,s,u,d)}catch(m){if(q(f),m!==m+0)throw m;L(1,0)}}function bi(e,t,n,a,s){var u=V();try{B(e)(t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}function Ci(e,t,n,a,s,u){var d=V();try{return B(e)(t,n,a,s,u)}catch(f){if(q(d),f!==f+0)throw f;L(1,0)}}function $i(e,t,n,a,s,u,d,f){var m=V();try{return B(e)(t,n,a,s,u,d,f)}catch(w){if(q(m),w!==w+0)throw w;L(1,0)}}function _i(e,t,n,a){var s=V();try{return B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function Si(e,t,n,a){var s=V();try{return B(e)(t,n,a)}catch(u){if(q(s),u!==u+0)throw u;L(1,0)}}function Pi(e){var t=V();try{return B(e)()}catch(n){if(q(t),n!==n+0)throw n;L(1,0)}}function Ti(e,t,n,a,s,u,d,f){var m=V();try{B(e)(t,n,a,s,u,d,f)}catch(w){if(q(m),w!==w+0)throw w;L(1,0)}}function Ei(e,t,n,a,s,u,d,f,m,w,_,T){var E=V();try{return B(e)(t,n,a,s,u,d,f,m,w,_,T)}catch(M){if(q(E),M!==M+0)throw M;L(1,0)}}function Oi(e,t,n,a,s,u,d,f,m,w,_,T,E,M,H,N){var F=V();try{B(e)(t,n,a,s,u,d,f,m,w,_,T,E,M,H,N)}catch(Q){if(q(F),Q!==Q+0)throw Q;L(1,0)}}function Mi(e,t,n,a,s){var u=V();try{return Xr(e,t,n,a,s)}catch(d){if(q(u),d!==d+0)throw d;L(1,0)}}var st;ge=function e(){st||Zr(),st||(ge=e)};function Zr(){if(ae>0||(ze(),ae>0))return;function e(){st||(st=!0,i.calledRun=!0,!j&&(ft(),c(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),ht()))}i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),e()},1)):e()}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return Zr(),o.ready}})();function Mn(r){return lt(He,r)}function Dn(r){return Tn(He,r)}async function An(r,o){return En(He,r,o)}async function Rn(r,o){return On(He,r,o)}var Me;class Be extends EventTarget{constructor(o={}){var i;super(),tn(this,Me,void 0);try{const c=(i=o==null?void 0:o.formats)==null?void 0:i.filter(l=>l!=="unknown");if((c==null?void 0:c.length)===0)throw new TypeError("Hint option provided, but is empty.");c==null||c.forEach(l=>{if(!Le.has(l))throw new TypeError(`Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.`)}),rn(this,Me,c!=null?c:[]),Mn().then(l=>{this.dispatchEvent(new CustomEvent("load",{detail:l}))}).catch(l=>{this.dispatchEvent(new CustomEvent("error",{detail:l}))})}catch(c){throw Qt(c,"Failed to construct 'BarcodeDetector'")}}static async getSupportedFormats(){return nn.filter(o=>o!=="unknown")}async detect(o){try{const i=await dn(o);if(i===null)return[];let c;try{Yt(i)?c=await An(i,{tryHarder:!0,formats:jt(this,Me).map(l=>Le.get(l))}):c=await Rn(i,{tryHarder:!0,formats:jt(this,Me).map(l=>Le.get(l))})}catch(l){throw console.error(l),new DOMException("Barcode detection service unavailable.","NotSupportedError")}return c.map(l=>{const{topLeft:{x:h,y:v},topRight:{x:g,y:b},bottomLeft:{x:p,y:C},bottomRight:{x:S,y:$}}=l.position,U=Math.min(h,g,p,S),W=Math.min(v,b,C,$),j=Math.max(h,g,p,S),k=Math.max(v,b,C,$);return{boundingBox:new DOMRectReadOnly(U,W,j-U,k-W),rawValue:l.text,format:an(l.format),cornerPoints:[{x:h,y:v},{x:g,y:b},{x:S,y:$},{x:p,y:C}]}})}catch(i){throw Qt(i,"Failed to execute 'detect' on 'BarcodeDetector'")}}}Me=new WeakMap;const dt=(r,o,i="error")=>{let c,l;const h=new Promise((v,g)=>{c=v,l=g,r.addEventListener(o,c),r.addEventListener(i,l)});return h.finally(()=>{r.removeEventListener(o,c),r.removeEventListener(i,l)}),h},tr=r=>new Promise(o=>setTimeout(o,r));class xn extends Error{constructor(){super("can't process cross-origin image"),this.name="DropImageFetchError"}}class rr extends Error{constructor(){super("this browser has no Stream API support"),this.name="StreamApiNotSupportedError"}}class kn extends Error{constructor(){super("camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP."),this.name="InsecureContextError"}}class In extends Error{constructor(){super("Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)"),this.name="StreamLoadTimeoutError"}}let nr;async function Fn(r){if(window.BarcodeDetector===void 0)return console.debug("[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill."),new Be({formats:r});const o=await window.BarcodeDetector.getSupportedFormats(),i=r.filter(c=>!o.includes(c));return i.length>0?(console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`),new Be({formats:r})):(console.debug("[vue-qrcode-reader] Will use native BarcodeDetector."),new window.BarcodeDetector({formats:r}))}async function ar(r){nr=await Fn(r)}const Un=async(r,{detectHandler:o,locateHandler:i,minDelay:c,formats:l})=>{console.debug("[vue-qrcode-reader] start scanning"),await ar(l);const h=v=>async g=>{if(r.readyState===0)console.debug("[vue-qrcode-reader] stop scanning: video element readyState is 0");else{const{lastScanned:b,contentBefore:p,lastScanHadContent:C}=v;if(g-b!p.includes(j.rawValue));$&&o(S);const U=S.length>0;U&&i(S),!U&&C&&i(S);const W={lastScanned:g,lastScanHadContent:U,contentBefore:$?S.map(j=>j.rawValue):p};window.requestAnimationFrame(h(W))}}};h({lastScanned:performance.now(),contentBefore:[],lastScanHadContent:!1})(performance.now())},Wn=async r=>{if(r.startsWith("http")&&r.includes(location.host)===!1)throw new xn;const o=document.createElement("img");return o.src=r,await dt(o,"load"),o},or=async(r,o=["qr_code"])=>await new Be({formats:o}).detect(r),jn=async(r,o=["qr_code"])=>{const i=new Be({formats:o}),c=await Wn(r);return await i.detect(c)};var ir={},X={};Object.defineProperty(X,"__esModule",{value:!0}),X.compactObject=lr,X.deprecated=Yn;var Ln=X.detectBrowser=Jn;X.disableLog=Nn,X.disableWarnings=zn,X.extractVersion=Ve,X.filterStats=Qn,X.log=Gn,X.walkStats=qe,X.wrapPeerConnectionEvent=qn;function Hn(r,o,i){return o=Bn(o),o in r?Object.defineProperty(r,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):r[o]=i,r}function Bn(r){var o=Vn(r,"string");return fe(o)==="symbol"?o:String(o)}function Vn(r,o){if(fe(r)!=="object"||r===null)return r;var i=r[Symbol.toPrimitive];if(i!==void 0){var c=i.call(r,o||"default");if(fe(c)!=="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(o==="string"?String:Number)(r)}function fe(r){"@babel/helpers - typeof";return fe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},fe(r)}var sr=!0,cr=!0;function Ve(r,o,i){var c=r.match(o);return c&&c.length>=i&&parseInt(c[i],10)}function qn(r,o,i){if(r.RTCPeerConnection){var c=r.RTCPeerConnection.prototype,l=c.addEventListener;c.addEventListener=function(v,g){if(v!==o)return l.apply(this,arguments);var b=function(C){var S=i(C);S&&(g.handleEvent?g.handleEvent(S):g(S))};return this._eventMap=this._eventMap||{},this._eventMap[o]||(this._eventMap[o]=new Map),this._eventMap[o].set(g,b),l.apply(this,[v,b])};var h=c.removeEventListener;c.removeEventListener=function(v,g){if(v!==o||!this._eventMap||!this._eventMap[o])return h.apply(this,arguments);if(!this._eventMap[o].has(g))return h.apply(this,arguments);var b=this._eventMap[o].get(g);return this._eventMap[o].delete(g),this._eventMap[o].size===0&&delete this._eventMap[o],Object.keys(this._eventMap).length===0&&delete this._eventMap,h.apply(this,[v,b])},Object.defineProperty(c,"on"+o,{get:function(){return this["_on"+o]},set:function(g){this["_on"+o]&&(this.removeEventListener(o,this["_on"+o]),delete this["_on"+o]),g&&this.addEventListener(o,this["_on"+o]=g)},enumerable:!0,configurable:!0})}}function Nn(r){return typeof r!="boolean"?new Error("Argument type: "+fe(r)+". Please use a boolean."):(sr=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function zn(r){return typeof r!="boolean"?new Error("Argument type: "+fe(r)+". Please use a boolean."):(cr=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function Gn(){if((typeof window>"u"?"undefined":fe(window))==="object"){if(sr)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Yn(r,o){cr&&console.warn(r+" is deprecated, please use "+o+" instead.")}function Jn(r){var o={browser:null,version:null};if(typeof r>"u"||!r.navigator||!r.navigator.userAgent)return o.browser="Not a browser.",o;var i=r.navigator;if(i.mozGetUserMedia)o.browser="firefox",o.version=Ve(i.userAgent,/Firefox\/(\d+)\./,1);else if(i.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection)o.browser="chrome",o.version=Ve(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.RTCPeerConnection&&i.userAgent.match(/AppleWebKit\/(\d+)\./))o.browser="safari",o.version=Ve(i.userAgent,/AppleWebKit\/(\d+)\./,1),o.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return o.browser="Not a supported browser.",o;return o}function ur(r){return Object.prototype.toString.call(r)==="[object Object]"}function lr(r){return ur(r)?Object.keys(r).reduce(function(o,i){var c=ur(r[i]),l=c?lr(r[i]):r[i],h=c&&!Object.keys(l).length;return l===void 0||h?o:Object.assign(o,Hn({},i,l))},{}):r}function qe(r,o,i){!o||i.has(o.id)||(i.set(o.id,o),Object.keys(o).forEach(function(c){c.endsWith("Id")?qe(r,r.get(o[c]),i):c.endsWith("Ids")&&o[c].forEach(function(l){qe(r,r.get(l),i)})}))}function Qn(r,o,i){var c=i?"outbound-rtp":"inbound-rtp",l=new Map;if(o===null)return l;var h=[];return r.forEach(function(v){v.type==="track"&&v.trackIdentifier===o.id&&h.push(v)}),h.forEach(function(v){r.forEach(function(g){g.type===c&&g.trackId===v.id&&qe(r,g,l)})}),l}Object.defineProperty(ir,"__esModule",{value:!0});var Xn=ir.shimGetUserMedia=ea,Zn=Kn(X);function dr(r){if(typeof WeakMap!="function")return null;var o=new WeakMap,i=new WeakMap;return(dr=function(l){return l?i:o})(r)}function Kn(r,o){if(r&&r.__esModule)return r;if(r===null||he(r)!=="object"&&typeof r!="function")return{default:r};var i=dr(o);if(i&&i.has(r))return i.get(r);var c={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in r)if(h!=="default"&&Object.prototype.hasOwnProperty.call(r,h)){var v=l?Object.getOwnPropertyDescriptor(r,h):null;v&&(v.get||v.set)?Object.defineProperty(c,h,v):c[h]=r[h]}return c.default=r,i&&i.set(r,c),c}function he(r){"@babel/helpers - typeof";return he=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},he(r)}var fr=Zn.log;function ea(r,o){var i=r&&r.navigator;if(i.mediaDevices){var c=function(p){if(he(p)!=="object"||p.mandatory||p.optional)return p;var C={};return Object.keys(p).forEach(function(S){if(!(S==="require"||S==="advanced"||S==="mediaSource")){var $=he(p[S])==="object"?p[S]:{ideal:p[S]};$.exact!==void 0&&typeof $.exact=="number"&&($.min=$.max=$.exact);var U=function(k,R){return k?k+R.charAt(0).toUpperCase()+R.slice(1):R==="deviceId"?"sourceId":R};if($.ideal!==void 0){C.optional=C.optional||[];var W={};typeof $.ideal=="number"?(W[U("min",S)]=$.ideal,C.optional.push(W),W={},W[U("max",S)]=$.ideal,C.optional.push(W)):(W[U("",S)]=$.ideal,C.optional.push(W))}$.exact!==void 0&&typeof $.exact!="number"?(C.mandatory=C.mandatory||{},C.mandatory[U("",S)]=$.exact):["min","max"].forEach(function(j){$[j]!==void 0&&(C.mandatory=C.mandatory||{},C.mandatory[U(j,S)]=$[j])})}}),p.advanced&&(C.optional=(C.optional||[]).concat(p.advanced)),C},l=function(p,C){if(o.version>=61)return C(p);if(p=JSON.parse(JSON.stringify(p)),p&&he(p.audio)==="object"){var S=function(k,R,Z){R in k&&!(Z in k)&&(k[Z]=k[R],delete k[R])};p=JSON.parse(JSON.stringify(p)),S(p.audio,"autoGainControl","googAutoGainControl"),S(p.audio,"noiseSuppression","googNoiseSuppression"),p.audio=c(p.audio)}if(p&&he(p.video)==="object"){var $=p.video.facingMode;$=$&&(he($)==="object"?$:{ideal:$});var U=o.version<66;if($&&($.exact==="user"||$.exact==="environment"||$.ideal==="user"||$.ideal==="environment")&&!(i.mediaDevices.getSupportedConstraints&&i.mediaDevices.getSupportedConstraints().facingMode&&!U)){delete p.video.facingMode;var W;if($.exact==="environment"||$.ideal==="environment"?W=["back","rear"]:($.exact==="user"||$.ideal==="user")&&(W=["front"]),W)return i.mediaDevices.enumerateDevices().then(function(j){j=j.filter(function(R){return R.kind==="videoinput"});var k=j.find(function(R){return W.some(function(Z){return R.label.toLowerCase().includes(Z)})});return!k&&j.length&&W.includes("back")&&(k=j[j.length-1]),k&&(p.video.deviceId=$.exact?{exact:k.deviceId}:{ideal:k.deviceId}),p.video=c(p.video),fr("chrome: "+JSON.stringify(p)),C(p)})}p.video=c(p.video)}return fr("chrome: "+JSON.stringify(p)),C(p)},h=function(p){return o.version>=64?p:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[p.name]||p.name,message:p.message,constraint:p.constraint||p.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},v=function(p,C,S){l(p,function($){i.webkitGetUserMedia($,C,function(U){S&&S(h(U))})})};if(i.getUserMedia=v.bind(i),i.mediaDevices.getUserMedia){var g=i.mediaDevices.getUserMedia.bind(i.mediaDevices);i.mediaDevices.getUserMedia=function(b){return l(b,function(p){return g(p).then(function(C){if(p.audio&&!C.getAudioTracks().length||p.video&&!C.getVideoTracks().length)throw C.getTracks().forEach(function(S){S.stop()}),new DOMException("","NotFoundError");return C},function(C){return Promise.reject(h(C))})})}}}}var hr={};Object.defineProperty(hr,"__esModule",{value:!0});var ta=hr.shimGetUserMedia=aa,ra=na(X);function pr(r){if(typeof WeakMap!="function")return null;var o=new WeakMap,i=new WeakMap;return(pr=function(l){return l?i:o})(r)}function na(r,o){if(r&&r.__esModule)return r;if(r===null||$e(r)!=="object"&&typeof r!="function")return{default:r};var i=pr(o);if(i&&i.has(r))return i.get(r);var c={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in r)if(h!=="default"&&Object.prototype.hasOwnProperty.call(r,h)){var v=l?Object.getOwnPropertyDescriptor(r,h):null;v&&(v.get||v.set)?Object.defineProperty(c,h,v):c[h]=r[h]}return c.default=r,i&&i.set(r,c),c}function $e(r){"@babel/helpers - typeof";return $e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},$e(r)}function aa(r,o){var i=r&&r.navigator,c=r&&r.MediaStreamTrack;if(i.getUserMedia=function(b,p,C){ra.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(b).then(p,C)},!(o.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){var l=function(p,C,S){C in p&&!(S in p)&&(p[S]=p[C],delete p[C])},h=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(b){return $e(b)==="object"&&$e(b.audio)==="object"&&(b=JSON.parse(JSON.stringify(b)),l(b.audio,"autoGainControl","mozAutoGainControl"),l(b.audio,"noiseSuppression","mozNoiseSuppression")),h(b)},c&&c.prototype.getSettings){var v=c.prototype.getSettings;c.prototype.getSettings=function(){var b=v.apply(this,arguments);return l(b,"mozAutoGainControl","autoGainControl"),l(b,"mozNoiseSuppression","noiseSuppression"),b}}if(c&&c.prototype.applyConstraints){var g=c.prototype.applyConstraints;c.prototype.applyConstraints=function(b){return this.kind==="audio"&&$e(b)==="object"&&(b=JSON.parse(JSON.stringify(b)),l(b,"autoGainControl","mozAutoGainControl"),l(b,"noiseSuppression","mozNoiseSuppression")),g.apply(this,[b])}}}}var ne={};Object.defineProperty(ne,"__esModule",{value:!0}),ne.shimAudioContext=pa,ne.shimCallbacksAPI=ua,ne.shimConstraints=yr,ne.shimCreateOfferLegacy=ha;var oa=ne.shimGetUserMedia=la;ne.shimLocalStreamsAPI=sa,ne.shimRTCIceServerUrls=da,ne.shimRemoteStreamsAPI=ca,ne.shimTrackEventTransceiver=fa;var mr=ia(X);function vr(r){if(typeof WeakMap!="function")return null;var o=new WeakMap,i=new WeakMap;return(vr=function(l){return l?i:o})(r)}function ia(r,o){if(r&&r.__esModule)return r;if(r===null||pe(r)!=="object"&&typeof r!="function")return{default:r};var i=vr(o);if(i&&i.has(r))return i.get(r);var c={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var h in r)if(h!=="default"&&Object.prototype.hasOwnProperty.call(r,h)){var v=l?Object.getOwnPropertyDescriptor(r,h):null;v&&(v.get||v.set)?Object.defineProperty(c,h,v):c[h]=r[h]}return c.default=r,i&&i.set(r,c),c}function pe(r){"@babel/helpers - typeof";return pe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},pe(r)}function sa(r){if(!(pe(r)!=="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){var o=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(c){var l=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(c)||this._localStreams.push(c),c.getAudioTracks().forEach(function(h){return o.call(l,h,c)}),c.getVideoTracks().forEach(function(h){return o.call(l,h,c)})},r.RTCPeerConnection.prototype.addTrack=function(c){for(var l=this,h=arguments.length,v=new Array(h>1?h-1:0),g=1;g=0)){c._remoteStreams.push(h);var v=new Event("addstream");v.stream=h,c.dispatchEvent(v)}})}),o.apply(c,arguments)}}}function ua(r){if(!(pe(r)!=="object"||!r.RTCPeerConnection)){var o=r.RTCPeerConnection.prototype,i=o.createOffer,c=o.createAnswer,l=o.setLocalDescription,h=o.setRemoteDescription,v=o.addIceCandidate;o.createOffer=function(p,C){var S=arguments.length>=2?arguments[2]:arguments[0],$=i.apply(this,[S]);return C?($.then(p,C),Promise.resolve()):$},o.createAnswer=function(p,C){var S=arguments.length>=2?arguments[2]:arguments[0],$=c.apply(this,[S]);return C?($.then(p,C),Promise.resolve()):$};var g=function(p,C,S){var $=l.apply(this,[p]);return S?($.then(C,S),Promise.resolve()):$};o.setLocalDescription=g,g=function(p,C,S){var $=h.apply(this,[p]);return S?($.then(C,S),Promise.resolve()):$},o.setRemoteDescription=g,g=function(p,C,S){var $=v.apply(this,[p]);return S?($.then(C,S),Promise.resolve()):$},o.addIceCandidate=g}}function la(r){var o=r&&r.navigator;if(o.mediaDevices&&o.mediaDevices.getUserMedia){var i=o.mediaDevices,c=i.getUserMedia.bind(i);o.mediaDevices.getUserMedia=function(l){return c(yr(l))}}!o.getUserMedia&&o.mediaDevices&&o.mediaDevices.getUserMedia&&(o.getUserMedia=(function(h,v,g){o.mediaDevices.getUserMedia(h).then(v,g)}).bind(o))}function yr(r){return r&&r.video!==void 0?Object.assign({},r,{video:mr.compactObject(r.video)}):r}function da(r){if(r.RTCPeerConnection){var o=r.RTCPeerConnection;r.RTCPeerConnection=function(c,l){if(c&&c.iceServers){for(var h=[],v=0;v{let o=!1,i;return(...c)=>(o||(i=r(c),o=!0),i)};function se(r,o){if(r===!1)throw new Error(o!=null?o:"assertion failure")}function gr(r){throw new Error("this code should be unreachable")}const va=ma(()=>{const r=Ln(window);switch(r.browser){case"chrome":Xn(window,r);break;case"firefox":ta(window,r);break;case"safari":oa(window,r);break;default:throw new rr}});let _e=Promise.resolve({type:"stop",data:{}});async function wr(r,o,i){var g,b,p;if(console.debug("[vue-qrcode-reader] starting camera with constraints: ",JSON.stringify(o)),window.isSecureContext!==!0)throw new kn;if(((g=navigator==null?void 0:navigator.mediaDevices)==null?void 0:g.getUserMedia)===void 0)throw new rr;va(),console.debug("[vue-qrcode-reader] calling getUserMedia");const c=await navigator.mediaDevices.getUserMedia({audio:!1,video:o});r.srcObject!==void 0?r.srcObject=c:r.mozSrcObject!==void 0?r.mozSrcObject=c:window.URL.createObjectURL?r.src=window.URL.createObjectURL(c):window.webkitURL?r.src=window.webkitURL.createObjectURL(c):r.src=c.id,r.play(),console.debug("[vue-qrcode-reader] waiting for video element to load"),await Promise.race([dt(r,"loadeddata"),tr(6e3).then(()=>{throw new In})]),console.debug("[vue-qrcode-reader] video element loaded"),await tr(500);const[l]=c.getVideoTracks(),h=(p=(b=l==null?void 0:l.getCapabilities)==null?void 0:b.call(l))!=null?p:{};let v=!1;return i&&h.torch&&(await l.applyConstraints({advanced:[{torch:!0}]}),v=!0),console.debug("[vue-qrcode-reader] camera ready"),{type:"start",data:{videoEl:r,stream:c,capabilities:h,constraints:o,isTorchOn:v}}}async function ya(r,{constraints:o,torch:i,restart:c=!1}){_e=_e.then(h=>{if(h.type==="start"){const{data:{videoEl:v,stream:g,constraints:b,isTorchOn:p}}=h;return!c&&r===v&&o===b&&i===p?h:br(v,g,p).then(()=>wr(r,o,i))}else if(h.type==="stop"||h.type==="failed")return wr(r,o,i);gr()}).catch(h=>(console.debug(`[vue-qrcode-reader] starting camera failed with "${h}"`),{type:"failed",error:h}));const l=await _e;if(l.type==="stop")throw new Error("Something went wrong with the camera task queue (start task).");if(l.type==="failed")throw l.error;if(l.type==="start")return l.data.capabilities;gr()}async function br(r,o,i){console.debug("[vue-qrcode-reader] stopping camera"),r.src="",r.srcObject=null,r.load(),await dt(r,"error");for(const c of o.getTracks())i!=null||await c.applyConstraints({advanced:[{torch:!1}]}),o.removeTrack(c),c.stop();return{type:"stop",data:{}}}async function Ne(){if(_e=_e.then(o=>{if(o.type==="stop"||o.type==="failed")return o;const{data:{videoEl:i,stream:c,isTorchOn:l}}=o;return br(i,c,l)}),(await _e).type==="start")throw new Error("Something went wrong with the camera task queue (stop task).")}const Cr=O.defineComponent({__name:"QrcodeStream",props:{constraints:{type:Object,default(){return{facingMode:"environment"}}},formats:{type:Array,default:()=>["qr_code"]},paused:{type:Boolean,default:!1},torch:{type:Boolean,default:!1},track:{type:Function}},emits:["detect","camera-on","camera-off","error"],setup(r,{emit:o}){const i=r,c=o,l=O.ref(i.constraints),h=O.ref(i.formats);O.watch(()=>i.constraints,(I,D)=>{JSON.stringify(I)!==JSON.stringify(D)&&(l.value=I)},{deep:!0}),O.watch(()=>i.formats,(I,D)=>{JSON.stringify(I)!==JSON.stringify(D)&&(h.value=I)},{deep:!0});const v=O.ref(),g=O.ref(),b=O.ref(),p=O.ref(!1),C=O.ref(!1);O.onMounted(()=>{C.value=!0}),O.onUnmounted(()=>{Ne()});const S=O.computed(()=>({torch:i.torch,constraints:l.value,shouldStream:C.value&&!i.paused}));O.watch(S,async I=>{const D=b.value;se(D!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined.");const A=v.value;se(A!==void 0,"cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined.");const me=A.getContext("2d");if(se(me!==null,"if cavnas is defined, canvas 2d context should also be non-null"),I.shouldStream){Ne(),p.value=!1;try{const ce=await ya(D,I);C.value?(p.value=!0,c("camera-on",ce)):await Ne()}catch(ce){c("error",ce)}}else A.width=D.videoWidth,A.height=D.videoHeight,me.drawImage(D,0,0,D.videoWidth,D.videoHeight),Ne(),p.value=!1,c("camera-off")},{deep:!0}),O.watch(h,async I=>{C.value&&await ar(I)});const $=O.computed(()=>S.value.shouldStream&&p.value);O.watch($,I=>{if(I){se(v.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined"),U(v.value),se(g.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined"),U(g.value);const D=()=>i.track===void 0?500:40;se(b.value!==void 0,"shouldScan watcher should only be triggered when component is mounted. Thus video element is defined"),Un(b.value,{detectHandler:A=>c("detect",A),formats:h.value,locateHandler:W,minDelay:D()})}});const U=I=>{const D=I.getContext("2d");se(D!==null,"canvas 2d context should always be non-null"),D.clearRect(0,0,I.width,I.height)},W=I=>{const D=g.value;se(D!==void 0,"onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined.");const A=b.value;if(se(A!==void 0,"onLocate handler should only be called when component is mounted. Thus video element is always defined."),I.length===0||i.track===void 0)U(D);else{const me=A.offsetWidth,ce=A.offsetHeight,Se=A.videoWidth,Pe=A.videoHeight,De=Math.max(me/Se,ce/Pe),Ae=Se*De,ze=Pe*De,ft=Ae/Se,ht=ze/Pe,pt=(me-Ae)/2,mt=(ce-ze)/2,Re=({x:ve,y:K})=>({x:Math.floor(ve*ft),y:Math.floor(K*ht)}),ae=({x:ve,y:K})=>({x:Math.floor(ve+pt),y:Math.floor(K+mt)}),ge=I.map(ve=>{const{boundingBox:K,cornerPoints:yt}=ve,{x:Ge,y:ye}=ae(Re({x:K.x,y:K.y})),{x:Ye,y:gt}=Re({x:K.width,y:K.height});return{...ve,cornerPoints:yt.map(Je=>ae(Re(Je))),boundingBox:DOMRectReadOnly.fromRect({x:Ge,y:ye,width:Ye,height:gt})}});D.width=A.offsetWidth,D.height=A.offsetHeight;const vt=D.getContext("2d");i.track(ge,vt)}},j={width:"100%",height:"100%",position:"relative","z-index":"0"},k={width:"100%",height:"100%",position:"absolute",top:"0",left:"0"},R={width:"100%",height:"100%","object-fit":"cover"},Z=O.computed(()=>$.value?R:{...R,visibility:"hidden",position:"absolute"});return(I,D)=>(O.openBlock(),O.createElementBlock("div",{style:j},[O.createElementVNode("video",{ref_key:"videoRef",ref:b,style:O.normalizeStyle(Z.value),autoplay:"",muted:"",playsinline:""},null,4),O.withDirectives(O.createElementVNode("canvas",{id:"qrcode-stream-pause-frame",ref_key:"pauseFrameRef",ref:v,style:R},null,512),[[O.vShow,!$.value]]),O.createElementVNode("canvas",{id:"qrcode-stream-tracking-layer",ref_key:"trackingLayerRef",ref:g,style:k},null,512),O.createElementVNode("div",{style:k},[O.renderSlot(I.$slots,"default")])]))}}),$r=O.defineComponent({__name:"QrcodeCapture",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect"],setup(r,{emit:o}){const i=r,c=o,l=h=>{if(!(!(h.target instanceof HTMLInputElement)||!h.target.files))for(const v of Array.from(h.target.files))or(v,i.formats).then(g=>{c("detect",g)})};return(h,v)=>(O.openBlock(),O.createElementBlock("input",{onChange:l,type:"file",name:"image",accept:"image/*",capture:"environment",multiple:""},null,32))}}),_r=O.defineComponent({__name:"QrcodeDropZone",props:{formats:{type:Array,default:()=>["qr_code"]}},emits:["detect","dragover","error"],setup(r,{emit:o}){const i=r,c=o,l=async g=>{try{const b=await g;c("detect",b)}catch(b){c("error",b)}},h=g=>{c("dragover",g)},v=({dataTransfer:g})=>{if(!g)return;h(!1);const b=[...Array.from(g.files)],p=g.getData("text/uri-list");b.forEach(C=>{l(or(C,i.formats))}),p!==""&&l(jn(p,i.formats))};return(g,b)=>(O.openBlock(),O.createElementBlock("div",{onDrop:O.withModifiers(v,["prevent","stop"]),onDragenter:b[0]||(b[0]=O.withModifiers(p=>h(!0),["prevent","stop"])),onDragleave:b[1]||(b[1]=O.withModifiers(p=>h(!1),["prevent","stop"])),onDragover:b[2]||(b[2]=O.withModifiers(()=>{},["prevent","stop"]))},[O.renderSlot(g.$slots,"default")],32))}});function Sr(r){r.component("qrcode-stream",Cr),r.component("qrcode-capture",$r),r.component("qrcode-drop-zone",_r)}const ga={install:Sr};ee.QrcodeCapture=$r,ee.QrcodeDropZone=_r,ee.QrcodeStream=Cr,ee.VueQrcodeReader=ga,ee.install=Sr,ee.setZXingModuleOverrides=Dn,Object.defineProperty(ee,Symbol.toStringTag,{value:"Module"})}); diff --git a/node_modules/vue-qrcode-reader/package.json b/node_modules/vue-qrcode-reader/package.json new file mode 100644 index 0000000..e8b5ea6 --- /dev/null +++ b/node_modules/vue-qrcode-reader/package.json @@ -0,0 +1,77 @@ +{ + "name": "vue-qrcode-reader", + "version": "5.6.0", + "description": "A set of Vue.js components for detecting and decoding QR codes.", + "author": { + "name": "Niklas Gruhn", + "email": "niklas@gruhn.me" + }, + "engines": { + "node": ">=18.0.0" + }, + "packageManager": "pnpm@8.3.1", + "type": "module", + "scripts": { + "build": "vite build", + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs", + "format": "prettier **/*.{vue,ts,json,md} --write --ignore-path .gitignore --ignore-path docs/.gitignore", + "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "prepack": "pnpm run build" + }, + "main": "./dist/vue-qrcode-reader.js", + "module": "./dist/vue-qrcode-reader.js", + "unpkg": "./dist/vue-qrcode-reader.umd.js", + "exports": { + ".": { + "import": "./dist/vue-qrcode-reader.js", + "require": "./dist/vue-qrcode-reader.umd.js", + "types": "./dist/index.d.ts" + } + }, + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "dependencies": { + "barcode-detector": "2.2.2", + "webrtc-adapter": "8.2.3" + }, + "devDependencies": { + "@tsconfig/node20": "20.1.2", + "@types/node": "20.10.5", + "@types/w3c-image-capture": "1.0.10", + "@vite-pwa/vitepress": "0.3.1", + "@vitejs/plugin-vue": "4.5.2", + "@vue/compiler-sfc": "3.3.13", + "@vue/eslint-config-prettier": "8.0.0", + "@vue/eslint-config-typescript": "12.0.0", + "@vue/tsconfig": "0.5.1", + "eslint": "8.56.0", + "eslint-plugin-prettier": "5.1.0", + "eslint-plugin-vue": "9.19.2", + "prettier": "3.1.1", + "semantic-release": "22.0.12", + "typescript": "5.5.3", + "vite": "5.0.10", + "vite-plugin-dts": "3.6.4", + "vitepress": "1.0.0-rc.32", + "vue": "3.3.13", + "vue-tsc": "1.8.25", + "workbox-window": "7.0.0" + }, + "bugs": "https://github.com/gruhn/vue-qrcode-reader/issues", + "homepage": "https://gruhn.github.io/vue-qrcode-reader/", + "keywords": [ + "vue", + "vuejs", + "vue-component", + "qrcode", + "qrcode-reader", + "qrcode-scanner", + "webrtc" + ], + "license": "MIT", + "repository": "github:gruhn/vue-qrcode-reader" +} diff --git a/node_modules/webrtc-adapter/.eslintrc b/node_modules/webrtc-adapter/.eslintrc new file mode 100644 index 0000000..fd82de2 --- /dev/null +++ b/node_modules/webrtc-adapter/.eslintrc @@ -0,0 +1,70 @@ +{ + "rules": { + "array-bracket-spacing": 2, + "block-spacing": [2, "never"], + "brace-style": [2, "1tbs", {"allowSingleLine": false}], + "camelcase": [2, {"properties": "always"}], + "curly": 2, + "default-case": 2, + "dot-notation": 2, + "eqeqeq": 2, + "id-match": ["error", "^[\x00-\x7F]+$", { + "properties": true, + "onlyDeclarations": false, + "ignoreDestructuring": false + }], + "indent": [ + 2, + 2, + {"SwitchCase": 1} + ], + "key-spacing": [2, {"beforeColon": false, "afterColon": true}], + "keyword-spacing": 2, + "max-len": [2, 80, 2, {"ignoreUrls": true}], + "new-cap": [2, {"newIsCapExceptions": [ + "webkitRTCPeerConnection", + "mozRTCPeerConnection" + ]}], + "no-console": 0, + "no-else-return": 2, + "no-eval": 2, + "no-multi-spaces": 2, + "no-multiple-empty-lines": [2, {"max": 2}], + "no-shadow": 2, + "no-trailing-spaces": 2, + "no-unused-expressions": 2, + "no-unused-vars": [2, {"args": "none"}], + "object-curly-spacing": [2, "never"], + "padded-blocks": [2, "never"], + "quotes": [ + 2, + "single" + ], + "semi": [ + 2, + "always" + ], + "space-before-blocks": 2, + "space-before-function-paren": [2, "never"], + "space-unary-ops": 2, + "space-infix-ops": 2, + "spaced-comment": 2, + "valid-typeof": 2 + }, + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": ["eslint:recommended"], + "parserOptions": { + "sourceType": "module" + }, + "globals": { + "module": true, + "require": true, + "process": true, + "Promise": true, + "Map": true + } +} diff --git a/node_modules/webrtc-adapter/.travis.yml b/node_modules/webrtc-adapter/.travis.yml new file mode 100644 index 0000000..7b57cb7 --- /dev/null +++ b/node_modules/webrtc-adapter/.travis.yml @@ -0,0 +1,65 @@ +sudo: false +language: node_js +dist: trusty +node_js: +- "7" + +env: + - CXX=g++-4.8 +matrix: + include: + - os: linux + sudo: false + env: BROWSER=chrome BVER=stable + - os: linux + sudo: false + env: BROWSER=chrome BVER=beta + - os: linux + sudo: false + env: BROWSER=chrome BVER=unstable + - os: linux + sudo: false + env: BROWSER=firefox BVER=stable + - os: linux + sudo: false + env: BROWSER=firefox BVER=beta + - os: linux + sudo: false + env: BROWSER=firefox BVER=unstable + - os: osx + sudo: required + osx_image: xcode9.4 + env: BROWSER=safari BVER=stable + - os: osx + sudo: required + osx_image: xcode11.2 + env: BROWSER=safari BVER=unstable + + fast_finish: true + + allow_failures: + - os: linux + sudo: false + env: BROWSER=chrome BVER=unstable + - os: linux + sudo: false + env: BROWSER=firefox BVER=unstable + +before_script: + - ./node_modules/travis-multirunner/setup.sh + - export DISPLAY=:99.0 + - if [ -f /etc/init.d/xvfb ]; then sh -e /etc/init.d/xvfb start; fi + +after_failure: + - for file in *.log; do echo $file; echo "======================"; cat $file; done || true + +notifications: + email: + - + +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.8 diff --git a/node_modules/webrtc-adapter/CONTRIBUTING.md b/node_modules/webrtc-adapter/CONTRIBUTING.md new file mode 100644 index 0000000..c86d36e --- /dev/null +++ b/node_modules/webrtc-adapter/CONTRIBUTING.md @@ -0,0 +1,15 @@ +WebRTC welcomes patches/pulls for features and bug fixes. + +For contributors external to Google, follow the instructions given in the [Google Individual Contributor License Agreement](https://cla.developers.google.com/about/google-individual). + +In all cases, contributors must sign a contributor license agreement before a contribution can be accepted. Please complete the agreement for an [individual](https://developers.google.com/open-source/cla/individual) or a [corporation](https://developers.google.com/open-source/cla/corporate) as appropriate. + +If you plan to add a significant component or large chunk of code, we recommend you bring this up on the [webrtc-discuss group](https://groups.google.com/forum/#!forum/discuss-webrtc) for a design discussion before writing code. + +If appropriate, write a unit test which demonstrates that your code functions as expected. Tests are the best way to ensure that future contributors do not break your code accidentally. + +To request a change or addition, you must [submit a pull request](https://help.github.com/categories/collaborating/). + +WebRTC developers monitor outstanding pull requests. They may request changes to the pull request before accepting. They will also verify that a CLA has been signed. + +The [Developer's Guide](https://bit.ly/webrtcdevguide) for this repo has more detailed information about code style, structure and validation. diff --git a/node_modules/webrtc-adapter/Gruntfile.js b/node_modules/webrtc-adapter/Gruntfile.js new file mode 100644 index 0000000..e39392b --- /dev/null +++ b/node_modules/webrtc-adapter/Gruntfile.js @@ -0,0 +1,71 @@ +'use strict'; + +module.exports = function(grunt) { + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + babel: { + options: { + presets: ['@babel/preset-env'] + }, + dist: { + files: [{ + expand: 'true', + cwd: 'src/js', + src: ['*.js', '**/*.js'], + dest: 'dist/' + }] + } + }, + browserify: { + adapterGlobalObject: { + src: ['./dist/adapter_core5.js'], + dest: './out/adapter.js', + options: { + browserifyOptions: { + // Exposes shim methods in a global object to the browser. + // The tests require this. + standalone: 'adapter' + } + } + }, + // Use this if you do not want adapter to expose anything to the global + // scope. + adapterAndNoGlobalObject: { + src: ['./dist/adapter_core5.js'], + dest: './out/adapter_no_global.js' + } + }, + eslint: { + options: { + overrideConfigFile: '.eslintrc' + }, + target: ['src/**/*.js', 'test/*.js', 'test/unit/*.js', 'test/e2e/*.js'] + }, + copy: { + build: { + dest: 'release/', + cwd: 'out', + src: '**', + nonull: true, + expand: true + } + }, + shell: { + downloadBrowser : { + command: 'BROWSER=${BROWSER-chrome} BVER=${BVER-stable} ./node_modules/travis-multirunner/setup.sh' + }, + }, + }); + + grunt.loadNpmTasks('grunt-eslint'); + grunt.loadNpmTasks('grunt-browserify'); + grunt.loadNpmTasks('grunt-babel'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-shell'); + + grunt.registerTask('default', ['eslint', 'build']); + grunt.registerTask('lint', ['eslint']); + grunt.registerTask('build', ['babel', 'browserify']); + grunt.registerTask('copyForPublish', ['copy']); + grunt.registerTask('downloadBrowser', ['shell:downloadBrowser']) +}; diff --git a/node_modules/webrtc-adapter/LICENSE.md b/node_modules/webrtc-adapter/LICENSE.md new file mode 100644 index 0000000..30f27f9 --- /dev/null +++ b/node_modules/webrtc-adapter/LICENSE.md @@ -0,0 +1,30 @@ +Copyright (c) 2014, The WebRTC project authors. All rights reserved. +Copyright (c) 2018, The adapter.js project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/webrtc-adapter/README.md b/node_modules/webrtc-adapter/README.md new file mode 100644 index 0000000..367d995 --- /dev/null +++ b/node_modules/webrtc-adapter/README.md @@ -0,0 +1,79 @@ +# WebRTC adapter # +adapter.js is a shim to insulate apps from spec changes and prefix differences in WebRTC. The prefix differences are mostly gone these days but differences in behaviour between browsers remain. + +This repository used to be part of the WebRTC organisation on github but moved. We aim to keep the old repository updated with new releases. + +## Install ## + +#### NPM +```bash +npm install webrtc-adapter +``` + +#### Bower +```bash +bower install webrtc-adapter +``` + +## Usage ## +##### Javascript +Just import adapter: +``` +import adapter from 'webrtc-adapter'; +``` +No further action is required. You might want to use adapters browser detection +which detects which webrtc quirks are required. You can look at +``` +adapter.browserDetails.browser +``` +for webrtc engine detection (which will for example detect Opera or the Chromium based Edge as 'chrome') and +``` +adapter.browserDetails.version +``` +for the version according to the user-agent string. + +##### NPM +Copy to desired location in your src tree or use a minify/vulcanize tool (node_modules is usually not published with the code). +See [webrtc/samples repo](https://github.com/webrtc/samples) as an example on how you can do this. + +#### Prebuilt releases +##### Web +In the [gh-pages branch](https://github.com/webrtcHacks/adapter/tree/gh-pages) prebuilt ready to use files can be downloaded/linked directly. +Latest version can be found at https://webrtc.github.io/adapter/adapter-latest.js. +Specific versions can be found at https://webrtc.github.io/adapter/adapter-N.N.N.js, e.g. https://webrtc.github.io/adapter/adapter-1.0.2.js. + +##### Bower +You will find `adapter.js` in `bower_components/webrtc-adapter/`. + +##### NPM +In node_modules/webrtc-adapter/out/ folder you will find 4 files: +* `adapter.js` - includes all the shims and is visible in the browser under the global `adapter` object (window.adapter). +* `adapter_no_global.js` - same as `adapter.js` but is not exposed/visible in the browser (you cannot call/interact with the shims in the browser). + +Include the file that suits your need in your project. + +## Development ## +Head over to [test/README.md](https://github.com/webrtcHacks/adapter/blob/master/test/README.md) and get started developing. + +## Publish a new version ## +* Go to the adapter repository root directory +* Make sure your repository is clean, i.e. no untracked files etc. Also check that you are on the master branch and have pulled the latest changes. +* Depending on the impact of the release, either use `patch`, `minor` or `major` in place of ``. Run `npm version -m 'bump to %s'` and type in your password lots of times (setting up credential caching is probably a good idea). +* Create and merge the PR if green in the GitHub web ui +* Go to the releases tab in the GitHub web ui and edit the tag. +* Add a summary of the recent commits in the tag summary and a link to the diff between the previous and current version in the description, [example](https://github.com/webrtcHacks/adapter/releases/tag/v3.4.1). +* Go back to your checkout and run `git pull` +* Run `npm publish` (you need access to the [webrtc-adapter npmjs package](https://www.npmjs.com/package/webrtc-adapter)). For big changes, consider using a [tag version](https://docs.npmjs.com/adding-dist-tags-to-packages) such as `next` and then [change the dist-tag after testing](https://docs.npmjs.com/cli/dist-tag). +* Done! There should now be a new release published to NPM and the gh-pages branch. + +Note: Currently only tested on Linux, not sure about Mac but will definitely not work on Windows. + +### Publish a hotfix patch versions +In some cases it may be necessary to do a patch version while there are significant changes changes on the master branch. +To make a patch release, +* checkout the latest git tag using `git checkout tags/vMajor.minor.patch`. +* checkout a new branch, using a name such as patchrelease-major-minor-patch. +* cherry-pick the fixes using `git cherry-pick some-commit-hash`. +* run `npm version patch`. This will create a new patch version and publish it on github. +* check out `origin/bumpVersion` branch and publish the new version using `npm publish`. +* the branch can now safely be deleted. It is not necessary to merge it into the main branch since it only contains cherry-picked commits. diff --git a/node_modules/webrtc-adapter/bower.json b/node_modules/webrtc-adapter/bower.json new file mode 100644 index 0000000..cc5ac95 --- /dev/null +++ b/node_modules/webrtc-adapter/bower.json @@ -0,0 +1,25 @@ +{ + "name": "webrtc-adapter", + "description": "A shim to insulate apps from WebRTC spec changes and browser prefix differences", + "license": "BSD-3-Clause", + "main": "./release/adapter.js", + "repository": { + "type": "git", + "url": "https://github.com/webrtchacks/adapter.git" + }, + "authors": [ + "The WebRTC project authors (https://www.webrtc.org/)", + "The adapter.js project authors (https://github.com/webrtchacks/adapter/)" + ], + "moduleType": [ + "node" + ], + "ignore": [ + "test/*" + ], + "keywords": [ + "WebRTC", + "RTCPeerConnection", + "getUserMedia" + ] +} diff --git a/node_modules/webrtc-adapter/dist/adapter_core.js b/node_modules/webrtc-adapter/dist/adapter_core.js new file mode 100644 index 0000000..6eb013a --- /dev/null +++ b/node_modules/webrtc-adapter/dist/adapter_core.js @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +var _adapter_factory = require("./adapter_factory.js"); +var adapter = (0, _adapter_factory.adapterFactory)({ + window: typeof window === 'undefined' ? undefined : window +}); +var _default = adapter; +exports["default"] = _default; diff --git a/node_modules/webrtc-adapter/dist/adapter_core5.js b/node_modules/webrtc-adapter/dist/adapter_core5.js new file mode 100644 index 0000000..d96b1d0 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/adapter_core5.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +var _adapter_factory = require("./adapter_factory.js"); +var adapter = (0, _adapter_factory.adapterFactory)({ + window: typeof window === 'undefined' ? undefined : window +}); +module.exports = adapter; // this is the difference from adapter_core. diff --git a/node_modules/webrtc-adapter/dist/adapter_factory.js b/node_modules/webrtc-adapter/dist/adapter_factory.js new file mode 100644 index 0000000..0cd97fa --- /dev/null +++ b/node_modules/webrtc-adapter/dist/adapter_factory.js @@ -0,0 +1,141 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.adapterFactory = adapterFactory; +var utils = _interopRequireWildcard(require("./utils")); +var chromeShim = _interopRequireWildcard(require("./chrome/chrome_shim")); +var firefoxShim = _interopRequireWildcard(require("./firefox/firefox_shim")); +var safariShim = _interopRequireWildcard(require("./safari/safari_shim")); +var commonShim = _interopRequireWildcard(require("./common_shim")); +var sdp = _interopRequireWildcard(require("sdp")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ + +// Browser shims. + +// Shimming starts here. +function adapterFactory() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + window = _ref.window; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + shimChrome: true, + shimFirefox: true, + shimSafari: true + }; + // Utils. + var logging = utils.log; + var browserDetails = utils.detectBrowser(window); + var adapter = { + browserDetails: browserDetails, + commonShim: commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp: sdp + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + return adapter; +} diff --git a/node_modules/webrtc-adapter/dist/chrome/chrome_shim.js b/node_modules/webrtc-adapter/dist/chrome/chrome_shim.js new file mode 100644 index 0000000..8d1d984 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/chrome_shim.js @@ -0,0 +1,698 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fixNegotiationNeeded = fixNegotiationNeeded; +exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack; +exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf; +exports.shimGetStats = shimGetStats; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimMediaStream = shimMediaStream; +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats; +var utils = _interopRequireWildcard(require("../utils.js")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get: function get() { + return this._ontrack; + }, + set: function set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var _this = this; + if (!this._ontrackpoly) { + this._ontrackpoly = function (e) { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', function (te) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === te.track.id; + }); + } else { + receiver = { + track: te.track + }; + } + var event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(function (track) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === track.id; + }); + } else { + receiver = { + track: track + }; + } + var event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', { + value: { + receiver: e.receiver + } + }); + } + return e; + }); + } +} +function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) { + var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) { + return { + track: track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + var idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this2 = this; + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + _this2._senders.push(shimSenderWithDtmf(_this2, track)); + }); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + var sender = _this3._senders.find(function (s) { + return s.track === track; + }); + if (sender) { + // remove sender + _this3._senders.splice(_this3._senders.indexOf(sender), 1); + } + }); + }; + } else if (_typeof(window) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this4 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this4; + }); + return senders; + }; + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get: function get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} +function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _this5 = this; + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + var fixChromeStats_ = function fixChromeStats_(response) { + var standardReport = {}; + var reports = response.result(); + reports.forEach(function (report) { + var standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(function (name) { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + return standardReport; + }; + + // shim getStats with maplike support + var makeMapStats = function makeMapStats(stats) { + return new Map(Object.keys(stats).map(function (key) { + return [key, stats[key]]; + })); + }; + if (arguments.length >= 2) { + var successCallbackWrapper_ = function successCallbackWrapper_(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + return origGetStats.apply(this, [successCallbackWrapper_, selector]); + } + + // promise-support + return new Promise(function (resolve, reject) { + origGetStats.apply(_this5, [function (response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} +function shimSenderReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this6 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this6; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + var sender = this; + return this._pc.getStats().then(function (result) { + return ( + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true) + ); + }); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this7 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this7; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + var receiver = this; + return this._pc.getStats().then(function (result) { + return utils.filterStats(result, receiver.track, false); + }); + }; + } + if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) { + var track = arguments[0]; + var sender; + var receiver; + var err; + this.getSenders().forEach(function (s) { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(function (r) { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || sender && receiver) { + return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this8 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams).map(function (streamId) { + return _this8._shimmedLocalStreams[streamId][0]; + }); + }; + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + var sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this9 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this9.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + var existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + var newSenders = this.getSenders().filter(function (newSender) { + return existingSenders.indexOf(newSender) === -1; + }); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this10 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(function (streamId) { + var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + _this10._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (_this10._shimmedLocalStreams[streamId].length === 1) { + delete _this10._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this11 = this; + var nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(function (stream) { + return _this11._reverseStreams[stream.id]; + }); + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this12 = this; + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this12.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + var newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + origRemoveStream.apply(this, [this._streams[stream.id] || stream]); + delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id]; + delete this._streams[stream.id]; + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var _this13 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + var streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || !streams[0].getTracks().find(function (t) { + return t === track; + })) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError'); + } + var alreadyExists = this.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + var oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(function () { + _this13.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + var newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(function (s) { + return s.track === track; + }); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + function replaceExternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + var _this14 = this; + var args = arguments; + var isLegacyCall = arguments.length && typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [function (description) { + var desc = replaceInternalStreamId(_this14, description); + args[0].apply(null, [desc]); + }, function (err) { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2]]); + } + return nativeMethod.apply(this, arguments).then(function (description) { + return replaceInternalStreamId(_this14, description); + }); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', { + get: function get() { + var description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this15 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + var isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + var stream; + Object.keys(this._streams).forEach(function (streamid) { + var hasTrack = _this15._streams[streamid].getTracks().find(function (track) { + return sender.track === track; + }); + if (hasTrack) { + stream = _this15._streams[streamid]; + } + }); + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} +function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) { + var pc = e.target; + if (browserDetails.version < 72 || pc.getConfiguration && pc.getConfiguration().sdpSemantics === 'plan-b') { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} diff --git a/node_modules/webrtc-adapter/dist/chrome/getdisplaymedia.js b/node_modules/webrtc-adapter/dist/chrome/getdisplaymedia.js new file mode 100644 index 0000000..6ee7586 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/getdisplaymedia.js @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + return getSourceId(constraints).then(function (sourceId) { + var widthSpecified = constraints.video && constraints.video.width; + var heightSpecified = constraints.video && constraints.video.height; + var frameRateSpecified = constraints.video && constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} diff --git a/node_modules/webrtc-adapter/dist/chrome/getusermedia.js b/node_modules/webrtc-adapter/dist/chrome/getusermedia.js new file mode 100644 index 0000000..80e2547 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/getusermedia.js @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logging = utils.log; +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + if (!navigator.mediaDevices) { + return; + } + var constraintsToChrome_ = function constraintsToChrome_(c) { + if (_typeof(c) !== 'object' || c.mandatory || c.optional) { + return c; + } + var cc = {}; + Object.keys(c).forEach(function (key) { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + var r = _typeof(c[key]) === 'object' ? c[key] : { + ideal: c[key] + }; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + var oldname_ = function oldname_(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return name === 'deviceId' ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + var oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(function (mix) { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + var shimConstraints_ = function shimConstraints_(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && _typeof(constraints.audio) === 'object') { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && _typeof(constraints.video) === 'object') { + // Shim facingMode for mobile & surface pro. + var face = constraints.video.facingMode; + face = face && (_typeof(face) === 'object' ? face : { + ideal: face + }); + var getSupportedFacingModeLies = browserDetails.version < 66; + if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + var matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices().then(function (devices) { + devices = devices.filter(function (d) { + return d.kind === 'videoinput'; + }); + var dev = devices.find(function (d) { + return matches.some(function (match) { + return d.label.toLowerCase().includes(match); + }); + }); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + + if (dev) { + constraints.video.deviceId = face.exact ? { + exact: dev.deviceId + } : { + ideal: dev.deviceId + }; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + var shimError_ = function shimError_(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString: function toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) { + shimConstraints_(constraints, function (c) { + navigator.webkitGetUserMedia(c, onSuccess, function (e) { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (cs) { + return shimConstraints_(cs, function (c) { + return origGetUserMedia(c).then(function (stream) { + if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(function (track) { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, function (e) { + return Promise.reject(shimError_(e)); + }); + }); + }; + } +} diff --git a/node_modules/webrtc-adapter/dist/chrome/selectaudiooutput.js b/node_modules/webrtc-adapter/dist/chrome/selectaudiooutput.js new file mode 100644 index 0000000..9e577e4 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/chrome/selectaudiooutput.js @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2022 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimSelectAudioOutput = shimSelectAudioOutput; +function shimSelectAudioOutput(window) { + // Polyfillying only makes sense when setSinkId is available + // and the function is not already there. + if (!('HTMLMediaElement' in window)) { + return; + } + if (!('setSinkId' in window.HTMLMediaElement.prototype)) { + return; + } + if (!(window.navigator && window.navigator.mediaDevices)) { + return; + } + if (!window.navigator.mediaDevices.enumerateDevices) { + return; + } + if (window.navigator.mediaDevices.selectAudioOutput) { + return; + } + window.navigator.mediaDevices.selectAudioOutput = function () { + return window.navigator.mediaDevices.enumerateDevices().then(function (devices) { + return devices.filter(function (d) { + return d.kind === 'audiooutput'; + }); + }); + }; +} diff --git a/node_modules/webrtc-adapter/dist/common_shim.js b/node_modules/webrtc-adapter/dist/common_shim.js new file mode 100644 index 0000000..1214fa0 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/common_shim.js @@ -0,0 +1,436 @@ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeExtmapAllowMixed = removeExtmapAllowMixed; +exports.shimAddIceCandidateNullOrEmpty = shimAddIceCandidateNullOrEmpty; +exports.shimConnectionState = shimConnectionState; +exports.shimMaxMessageSize = shimMaxMessageSize; +exports.shimParameterlessSetLocalDescription = shimParameterlessSetLocalDescription; +exports.shimRTCIceCandidate = shimRTCIceCandidate; +exports.shimRTCIceCandidateRelayProtocol = shimRTCIceCandidateRelayProtocol; +exports.shimSendThrowTypeError = shimSendThrowTypeError; +var _sdp = _interopRequireDefault(require("sdp")); +var utils = _interopRequireWildcard(require("./utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) { + return; + } + var NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (_typeof(args) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + var nativeCandidate = new NativeRTCIceCandidate(args); + var parsedCandidate = _sdp["default"].parseCandidate(args.candidate); + for (var key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, { + value: parsedCandidate[key] + }); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} +function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'relayProtocol' in window.RTCIceCandidate.prototype) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + var parsedCandidate = _sdp["default"].parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp' + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} +function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + var sctpInDescription = function sctpInDescription(description) { + if (!description || !description.sdp) { + return false; + } + var sections = _sdp["default"].splitSections(description.sdp); + sections.shift(); + return sections.some(function (mediaSection) { + var mLine = _sdp["default"].parseMLine(mediaSection); + return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) { + // TODO: Is there a better solution for detecting Firefox? + var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + var version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + var canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + var maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' && browserDetails.version === 57) { + maxMessageSize = 65535; + } + var match = _sdp["default"].matchPrefix(description.sdp, 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + var _this$getConfiguratio = this.getConfiguration(), + sdpSemantics = _this$getConfiguratio.sdpSemantics; + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true + }); + } + } + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + var isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + var canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + var maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + var sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get: function get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + return origSetRemoteDescription.apply(this, arguments); + }; +} +function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + var origDataChannelSend = dc.send; + dc.send = function send() { + var data = arguments[0]; + var length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() { + var dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) { + wrapDcSend(e.channel, e.target); + return e; + }); +} + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +function shimConnectionState(window) { + if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + var proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get: function get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get: function get() { + return this._onconnectionstatechange || null; + }, + set: function set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) { + var origMethod = proto[method]; + proto[method] = function () { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = function (e) { + var pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + var newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} +function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + var sdp = desc.sdp.split('\n').filter(function (line) { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp: sdp + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} +function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if ((browserDetails.browser === 'chrome' && browserDetails.version < 78 || browserDetails.browser === 'firefox' && browserDetails.version < 68 || browserDetails.browser === 'safari') && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + var _this = this; + var desc = arguments[0] || {}; + if (_typeof(desc) !== 'object' || desc.type && desc.sdp) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = { + type: desc.type, + sdp: desc.sdp + }; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || desc.type !== 'offer' && desc.type !== 'answer') { + return nativeSetLocalDescription.apply(this, [desc]); + } + var func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this).then(function (d) { + return nativeSetLocalDescription.apply(_this, [d]); + }); + }; +} diff --git a/node_modules/webrtc-adapter/dist/firefox/firefox_shim.js b/node_modules/webrtc-adapter/dist/firefox/firefox_shim.js new file mode 100644 index 0000000..44c4c38 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/firefox/firefox_shim.js @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAddTransceiver = shimAddTransceiver; +exports.shimCreateAnswer = shimCreateAnswer; +exports.shimCreateOffer = shimCreateOffer; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetParameters = shimGetParameters; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimRTCDataChannel = shimRTCDataChannel; +exports.shimReceiverGetStats = shimReceiverGetStats; +exports.shimRemoveStream = shimRemoveStream; +exports.shimSenderGetStats = shimSenderGetStats; +var utils = _interopRequireWildcard(require("../utils")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimPeerConnection(window, browserDetails) { + if (_typeof(window) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + var modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + var nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + return nativeGetStats.apply(this, [selector || null]).then(function (stats) { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(function (stat) { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach(function (stat, i) { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }).then(onSucc, onErr); + }; +} +function shimSenderGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map()); + }; +} +function shimReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this2 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this2; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} +function shimRemoveStream(window) { + if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(function (sender) { + if (sender.track && stream.getTracks().includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; +} +function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} +function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + var sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = _toConsumableArray(sendEncodings); + var shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach(function (encodingParam) { + if ('rid' in encodingParam) { + var ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + var transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + var sender = transceiver.sender; + var params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + params.encodings.length === 1 && Object.keys(params.encodings[0]).length === 0) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params).then(function () { + delete sender.sendEncodings; + })["catch"](function () { + delete sender.sendEncodings; + })); + } + } + return transceiver; + }; + } +} +function shimGetParameters(window) { + if (!(_typeof(window) === 'object' && window.RTCRtpSender)) { + return; + } + var origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = function getParameters() { + var params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} +function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + var _arguments2 = arguments, + _this4 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateOffer.apply(_this4, _arguments2); + })["finally"](function () { + _this4.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + var _arguments3 = arguments, + _this5 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateAnswer.apply(_this5, _arguments3); + })["finally"](function () { + _this5.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} diff --git a/node_modules/webrtc-adapter/dist/firefox/getdisplaymedia.js b/node_modules/webrtc-adapter/dist/firefox/getdisplaymedia.js new file mode 100644 index 0000000..bd2caaa --- /dev/null +++ b/node_modules/webrtc-adapter/dist/firefox/getdisplaymedia.js @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = { + mediaSource: preferredMediaSource + }; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} diff --git a/node_modules/webrtc-adapter/dist/firefox/getusermedia.js b/node_modules/webrtc-adapter/dist/firefox/getusermedia.js new file mode 100644 index 0000000..eac0dc4 --- /dev/null +++ b/node_modules/webrtc-adapter/dist/firefox/getusermedia.js @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + var MediaStreamTrack = window && window.MediaStreamTrack; + navigator.getUserMedia = function (constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (c) { + if (_typeof(c) === 'object' && _typeof(c.audio) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + var nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function () { + var obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function (c) { + if (this.kind === 'audio' && _typeof(c) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} diff --git a/node_modules/webrtc-adapter/dist/safari/safari_shim.js b/node_modules/webrtc-adapter/dist/safari/safari_shim.js new file mode 100644 index 0000000..9d841ee --- /dev/null +++ b/node_modules/webrtc-adapter/dist/safari/safari_shim.js @@ -0,0 +1,346 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAudioContext = shimAudioContext; +exports.shimCallbacksAPI = shimCallbacksAPI; +exports.shimConstraints = shimConstraints; +exports.shimCreateOfferLegacy = shimCreateOfferLegacy; +exports.shimGetUserMedia = shimGetUserMedia; +exports.shimLocalStreamsAPI = shimLocalStreamsAPI; +exports.shimRTCIceServerUrls = shimRTCIceServerUrls; +exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI; +exports.shimTrackEventTransceiver = shimTrackEventTransceiver; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimLocalStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + var _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this = this; + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + stream.getVideoTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track) { + var _this2 = this; + for (var _len = arguments.length, streams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + streams[_key - 1] = arguments[_key]; + } + if (streams) { + streams.forEach(function (stream) { + if (!_this2._localStreams) { + _this2._localStreams = [stream]; + } else if (!_this2._localStreams.includes(stream)) { + _this2._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + if (!this._localStreams) { + this._localStreams = []; + } + var index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + var tracks = stream.getTracks(); + this.getSenders().forEach(function (sender) { + if (tracks.includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; + } +} +function shimRemoteStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get: function get() { + return this._onaddstream; + }, + set: function set(f) { + var _this4 = this; + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!_this4._remoteStreams) { + _this4._remoteStreams = []; + } + if (_this4._remoteStreams.includes(stream)) { + return; + } + _this4._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + _this4.dispatchEvent(event); + }); + }); + } + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} +function shimCallbacksAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + var prototype = window.RTCPeerConnection.prototype; + var origCreateOffer = prototype.createOffer; + var origCreateAnswer = prototype.createAnswer; + var setLocalDescription = prototype.setLocalDescription; + var setRemoteDescription = prototype.setRemoteDescription; + var addIceCandidate = prototype.addIceCandidate; + prototype.createOffer = function createOffer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.createAnswer = function createAnswer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + var withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + withCallback = function withCallback(candidate, successCallback, failureCallback) { + var promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} +function shimGetUserMedia(window) { + var navigator = window && window.navigator; + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + var mediaDevices = navigator.mediaDevices; + var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = function (constraints) { + return _getUserMedia(shimConstraints(constraints)); + }; + } + if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb); + }.bind(navigator); + } +} +function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, constraints, { + video: utils.compactObject(constraints.video) + }); + } + return constraints; +} +function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + var OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + var newIceServers = []; + for (var i = 0; i < pcConfig.iceServers.length; i++) { + var server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get: function get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} +function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimCreateOfferLegacy(window) { + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio; + } + var audioTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'audio'; + }); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) { + this.addTransceiver('audio', { + direction: 'recvonly' + }); + } + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo; + } + var videoTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'video'; + }); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) { + this.addTransceiver('video', { + direction: 'recvonly' + }); + } + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimAudioContext(window) { + if (_typeof(window) !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} diff --git a/node_modules/webrtc-adapter/dist/utils.js b/node_modules/webrtc-adapter/dist/utils.js new file mode 100644 index 0000000..578a34d --- /dev/null +++ b/node_modules/webrtc-adapter/dist/utils.js @@ -0,0 +1,260 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.compactObject = compactObject; +exports.deprecated = deprecated; +exports.detectBrowser = detectBrowser; +exports.disableLog = disableLog; +exports.disableWarnings = disableWarnings; +exports.extractVersion = extractVersion; +exports.filterStats = filterStats; +exports.log = log; +exports.walkStats = walkStats; +exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logDisabled_ = true; +var deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +function extractVersion(uastring, expr, pos) { + var match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + var proto = window.RTCPeerConnection.prototype; + var nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + var wrappedCallback = function wrappedCallback(e) { + var modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]); + }; + var nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + var unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap]["delete"](cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]); + }; + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get: function get() { + return this['_on' + eventNameToWrap]; + }, + set: function set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} +function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + logDisabled_ = bool; + return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} +function log() { + if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +function detectBrowser(window) { + // Returned result object. + var result = { + browser: null, + version: null + }; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + var navigator = window.navigator; + if (navigator.mozGetUserMedia) { + // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { + // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { + // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +function compactObject(data) { + if (!isObject(data)) { + return data; + } + return Object.keys(data).reduce(function (accumulator, key) { + var isObj = isObject(data[key]); + var value = isObj ? compactObject(data[key]) : data[key]; + var isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, _defineProperty({}, key, value)); + }, {}); +} + +/* iterates the stats graph recursively. */ +function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(function (name) { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(function (id) { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +function filterStats(result, track, outbound) { + var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + var filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + var trackStats = []; + result.forEach(function (value) { + if (value.type === 'track' && value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(function (trackStat) { + result.forEach(function (stats) { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} diff --git a/node_modules/webrtc-adapter/index.d.ts b/node_modules/webrtc-adapter/index.d.ts new file mode 100644 index 0000000..0fd704f --- /dev/null +++ b/node_modules/webrtc-adapter/index.d.ts @@ -0,0 +1,59 @@ +declare module "webrtc-adapter" { + interface IBrowserDetails { + browser: string; + version?: number; + supportsUnifiedPlan?: boolean; + } + + interface ICommonShim { + shimRTCIceCandidate(window: Window): void; + shimMaxMessageSize(window: Window): void; + shimSendThrowTypeError(window: Window): void; + shimConnectionState(window: Window): void; + removeAllowExtmapMixed(window: Window): void; + } + + interface IChromeShim { + shimMediaStream(window: Window): void; + shimOnTrack(window: Window): void; + shimGetSendersWithDtmf(window: Window): void; + shimGetStats(window: Window): void; + shimSenderReceiverGetStats(window: Window): void; + shimAddTrackRemoveTrackWithNative(window: Window): void; + shimAddTrackRemoveTrack(window: Window): void; + shimPeerConnection(window: Window): void; + fixNegotiationNeeded(window: Window): void; + } + + interface IFirefoxShim { + shimOnTrack(window: Window): void; + shimPeerConnection(window: Window): void; + shimSenderGetStats(window: Window): void; + shimReceiverGetStats(window: Window): void; + shimRemoveStream(window: Window): void; + shimRTCDataChannel(window: Window): void; + } + + interface ISafariShim { + shimLocalStreamsAPI(window: Window): void; + shimRemoteStreamsAPI(window: Window): void; + shimCallbacksAPI(window: Window): void; + shimGetUserMedia(window: Window): void; + shimConstraints(constraints: MediaStreamConstraints): void; + shimRTCIceServerUrls(window: Window): void; + shimTrackEventTransceiver(window: Window): void; + shimCreateOfferLegacy(window: Window): void; + } + + export interface IAdapter { + browserDetails: IBrowserDetails; + commonShim: ICommonShim; + browserShim: IChromeShim | IFirefoxShim | ISafariShim | undefined; + extractVersion(uastring: string, expr: string, pos: number): number; + disableLog(disable: boolean): void; + disableWarnings(disable: boolean): void; + } + + const adapter: IAdapter; + export default adapter; +} diff --git a/node_modules/webrtc-adapter/out/adapter.js b/node_modules/webrtc-adapter/out/adapter.js new file mode 100644 index 0000000..ce2d6a8 --- /dev/null +++ b/node_modules/webrtc-adapter/out/adapter.js @@ -0,0 +1,3364 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.adapter = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}, + window = _ref.window; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + shimChrome: true, + shimFirefox: true, + shimSafari: true + }; + // Utils. + var logging = utils.log; + var browserDetails = utils.detectBrowser(window); + var adapter = { + browserDetails: browserDetails, + commonShim: commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp: sdp + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + return adapter; +} + +},{"./chrome/chrome_shim":3,"./common_shim":6,"./firefox/firefox_shim":7,"./safari/safari_shim":10,"./utils":11,"sdp":12}],3:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fixNegotiationNeeded = fixNegotiationNeeded; +exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack; +exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf; +exports.shimGetStats = shimGetStats; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimMediaStream = shimMediaStream; +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats; +var utils = _interopRequireWildcard(require("../utils.js")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get: function get() { + return this._ontrack; + }, + set: function set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var _this = this; + if (!this._ontrackpoly) { + this._ontrackpoly = function (e) { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', function (te) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === te.track.id; + }); + } else { + receiver = { + track: te.track + }; + } + var event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(function (track) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === track.id; + }); + } else { + receiver = { + track: track + }; + } + var event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', { + value: { + receiver: e.receiver + } + }); + } + return e; + }); + } +} +function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) { + var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) { + return { + track: track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + var idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this2 = this; + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + _this2._senders.push(shimSenderWithDtmf(_this2, track)); + }); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + var sender = _this3._senders.find(function (s) { + return s.track === track; + }); + if (sender) { + // remove sender + _this3._senders.splice(_this3._senders.indexOf(sender), 1); + } + }); + }; + } else if (_typeof(window) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this4 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this4; + }); + return senders; + }; + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get: function get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} +function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _this5 = this; + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + var fixChromeStats_ = function fixChromeStats_(response) { + var standardReport = {}; + var reports = response.result(); + reports.forEach(function (report) { + var standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(function (name) { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + return standardReport; + }; + + // shim getStats with maplike support + var makeMapStats = function makeMapStats(stats) { + return new Map(Object.keys(stats).map(function (key) { + return [key, stats[key]]; + })); + }; + if (arguments.length >= 2) { + var successCallbackWrapper_ = function successCallbackWrapper_(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + return origGetStats.apply(this, [successCallbackWrapper_, selector]); + } + + // promise-support + return new Promise(function (resolve, reject) { + origGetStats.apply(_this5, [function (response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} +function shimSenderReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this6 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this6; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + var sender = this; + return this._pc.getStats().then(function (result) { + return ( + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true) + ); + }); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this7 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this7; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + var receiver = this; + return this._pc.getStats().then(function (result) { + return utils.filterStats(result, receiver.track, false); + }); + }; + } + if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) { + var track = arguments[0]; + var sender; + var receiver; + var err; + this.getSenders().forEach(function (s) { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(function (r) { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || sender && receiver) { + return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this8 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams).map(function (streamId) { + return _this8._shimmedLocalStreams[streamId][0]; + }); + }; + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + var sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this9 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this9.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + var existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + var newSenders = this.getSenders().filter(function (newSender) { + return existingSenders.indexOf(newSender) === -1; + }); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this10 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(function (streamId) { + var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + _this10._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (_this10._shimmedLocalStreams[streamId].length === 1) { + delete _this10._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this11 = this; + var nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(function (stream) { + return _this11._reverseStreams[stream.id]; + }); + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this12 = this; + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this12.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + var newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + origRemoveStream.apply(this, [this._streams[stream.id] || stream]); + delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id]; + delete this._streams[stream.id]; + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var _this13 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + var streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || !streams[0].getTracks().find(function (t) { + return t === track; + })) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError'); + } + var alreadyExists = this.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + var oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(function () { + _this13.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + var newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(function (s) { + return s.track === track; + }); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + function replaceExternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + var _this14 = this; + var args = arguments; + var isLegacyCall = arguments.length && typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [function (description) { + var desc = replaceInternalStreamId(_this14, description); + args[0].apply(null, [desc]); + }, function (err) { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2]]); + } + return nativeMethod.apply(this, arguments).then(function (description) { + return replaceInternalStreamId(_this14, description); + }); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', { + get: function get() { + var description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this15 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + var isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + var stream; + Object.keys(this._streams).forEach(function (streamid) { + var hasTrack = _this15._streams[streamid].getTracks().find(function (track) { + return sender.track === track; + }); + if (hasTrack) { + stream = _this15._streams[streamid]; + } + }); + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} +function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) { + var pc = e.target; + if (browserDetails.version < 72 || pc.getConfiguration && pc.getConfiguration().sdpSemantics === 'plan-b') { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} + +},{"../utils.js":11,"./getdisplaymedia":4,"./getusermedia":5}],4:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + return getSourceId(constraints).then(function (sourceId) { + var widthSpecified = constraints.video && constraints.video.width; + var heightSpecified = constraints.video && constraints.video.height; + var frameRateSpecified = constraints.video && constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} + +},{}],5:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logging = utils.log; +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + if (!navigator.mediaDevices) { + return; + } + var constraintsToChrome_ = function constraintsToChrome_(c) { + if (_typeof(c) !== 'object' || c.mandatory || c.optional) { + return c; + } + var cc = {}; + Object.keys(c).forEach(function (key) { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + var r = _typeof(c[key]) === 'object' ? c[key] : { + ideal: c[key] + }; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + var oldname_ = function oldname_(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return name === 'deviceId' ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + var oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(function (mix) { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + var shimConstraints_ = function shimConstraints_(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && _typeof(constraints.audio) === 'object') { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && _typeof(constraints.video) === 'object') { + // Shim facingMode for mobile & surface pro. + var face = constraints.video.facingMode; + face = face && (_typeof(face) === 'object' ? face : { + ideal: face + }); + var getSupportedFacingModeLies = browserDetails.version < 66; + if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + var matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices().then(function (devices) { + devices = devices.filter(function (d) { + return d.kind === 'videoinput'; + }); + var dev = devices.find(function (d) { + return matches.some(function (match) { + return d.label.toLowerCase().includes(match); + }); + }); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + + if (dev) { + constraints.video.deviceId = face.exact ? { + exact: dev.deviceId + } : { + ideal: dev.deviceId + }; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + var shimError_ = function shimError_(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString: function toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) { + shimConstraints_(constraints, function (c) { + navigator.webkitGetUserMedia(c, onSuccess, function (e) { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (cs) { + return shimConstraints_(cs, function (c) { + return origGetUserMedia(c).then(function (stream) { + if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(function (track) { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, function (e) { + return Promise.reject(shimError_(e)); + }); + }); + }; + } +} + +},{"../utils.js":11}],6:[function(require,module,exports){ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeExtmapAllowMixed = removeExtmapAllowMixed; +exports.shimAddIceCandidateNullOrEmpty = shimAddIceCandidateNullOrEmpty; +exports.shimConnectionState = shimConnectionState; +exports.shimMaxMessageSize = shimMaxMessageSize; +exports.shimParameterlessSetLocalDescription = shimParameterlessSetLocalDescription; +exports.shimRTCIceCandidate = shimRTCIceCandidate; +exports.shimRTCIceCandidateRelayProtocol = shimRTCIceCandidateRelayProtocol; +exports.shimSendThrowTypeError = shimSendThrowTypeError; +var _sdp = _interopRequireDefault(require("sdp")); +var utils = _interopRequireWildcard(require("./utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) { + return; + } + var NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (_typeof(args) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + var nativeCandidate = new NativeRTCIceCandidate(args); + var parsedCandidate = _sdp["default"].parseCandidate(args.candidate); + for (var key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, { + value: parsedCandidate[key] + }); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} +function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'relayProtocol' in window.RTCIceCandidate.prototype) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + var parsedCandidate = _sdp["default"].parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp' + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} +function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + var sctpInDescription = function sctpInDescription(description) { + if (!description || !description.sdp) { + return false; + } + var sections = _sdp["default"].splitSections(description.sdp); + sections.shift(); + return sections.some(function (mediaSection) { + var mLine = _sdp["default"].parseMLine(mediaSection); + return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) { + // TODO: Is there a better solution for detecting Firefox? + var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + var version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + var canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + var maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' && browserDetails.version === 57) { + maxMessageSize = 65535; + } + var match = _sdp["default"].matchPrefix(description.sdp, 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + var _this$getConfiguratio = this.getConfiguration(), + sdpSemantics = _this$getConfiguratio.sdpSemantics; + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true + }); + } + } + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + var isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + var canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + var maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + var sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get: function get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + return origSetRemoteDescription.apply(this, arguments); + }; +} +function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + var origDataChannelSend = dc.send; + dc.send = function send() { + var data = arguments[0]; + var length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() { + var dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) { + wrapDcSend(e.channel, e.target); + return e; + }); +} + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +function shimConnectionState(window) { + if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + var proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get: function get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get: function get() { + return this._onconnectionstatechange || null; + }, + set: function set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) { + var origMethod = proto[method]; + proto[method] = function () { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = function (e) { + var pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + var newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} +function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + var sdp = desc.sdp.split('\n').filter(function (line) { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp: sdp + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} +function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if ((browserDetails.browser === 'chrome' && browserDetails.version < 78 || browserDetails.browser === 'firefox' && browserDetails.version < 68 || browserDetails.browser === 'safari') && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + var _this = this; + var desc = arguments[0] || {}; + if (_typeof(desc) !== 'object' || desc.type && desc.sdp) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = { + type: desc.type, + sdp: desc.sdp + }; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || desc.type !== 'offer' && desc.type !== 'answer') { + return nativeSetLocalDescription.apply(this, [desc]); + } + var func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this).then(function (d) { + return nativeSetLocalDescription.apply(_this, [d]); + }); + }; +} + +},{"./utils":11,"sdp":12}],7:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAddTransceiver = shimAddTransceiver; +exports.shimCreateAnswer = shimCreateAnswer; +exports.shimCreateOffer = shimCreateOffer; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetParameters = shimGetParameters; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimRTCDataChannel = shimRTCDataChannel; +exports.shimReceiverGetStats = shimReceiverGetStats; +exports.shimRemoveStream = shimRemoveStream; +exports.shimSenderGetStats = shimSenderGetStats; +var utils = _interopRequireWildcard(require("../utils")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimPeerConnection(window, browserDetails) { + if (_typeof(window) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + var modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + var nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + return nativeGetStats.apply(this, [selector || null]).then(function (stats) { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(function (stat) { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach(function (stat, i) { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }).then(onSucc, onErr); + }; +} +function shimSenderGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map()); + }; +} +function shimReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this2 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this2; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} +function shimRemoveStream(window) { + if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(function (sender) { + if (sender.track && stream.getTracks().includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; +} +function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} +function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + var sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = _toConsumableArray(sendEncodings); + var shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach(function (encodingParam) { + if ('rid' in encodingParam) { + var ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + var transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + var sender = transceiver.sender; + var params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + params.encodings.length === 1 && Object.keys(params.encodings[0]).length === 0) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params).then(function () { + delete sender.sendEncodings; + })["catch"](function () { + delete sender.sendEncodings; + })); + } + } + return transceiver; + }; + } +} +function shimGetParameters(window) { + if (!(_typeof(window) === 'object' && window.RTCRtpSender)) { + return; + } + var origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = function getParameters() { + var params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} +function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + var _arguments2 = arguments, + _this4 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateOffer.apply(_this4, _arguments2); + })["finally"](function () { + _this4.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + var _arguments3 = arguments, + _this5 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateAnswer.apply(_this5, _arguments3); + })["finally"](function () { + _this5.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} + +},{"../utils":11,"./getdisplaymedia":8,"./getusermedia":9}],8:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = { + mediaSource: preferredMediaSource + }; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} + +},{}],9:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + var MediaStreamTrack = window && window.MediaStreamTrack; + navigator.getUserMedia = function (constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (c) { + if (_typeof(c) === 'object' && _typeof(c.audio) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + var nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function () { + var obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function (c) { + if (this.kind === 'audio' && _typeof(c) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} + +},{"../utils":11}],10:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAudioContext = shimAudioContext; +exports.shimCallbacksAPI = shimCallbacksAPI; +exports.shimConstraints = shimConstraints; +exports.shimCreateOfferLegacy = shimCreateOfferLegacy; +exports.shimGetUserMedia = shimGetUserMedia; +exports.shimLocalStreamsAPI = shimLocalStreamsAPI; +exports.shimRTCIceServerUrls = shimRTCIceServerUrls; +exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI; +exports.shimTrackEventTransceiver = shimTrackEventTransceiver; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimLocalStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + var _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this = this; + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + stream.getVideoTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track) { + var _this2 = this; + for (var _len = arguments.length, streams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + streams[_key - 1] = arguments[_key]; + } + if (streams) { + streams.forEach(function (stream) { + if (!_this2._localStreams) { + _this2._localStreams = [stream]; + } else if (!_this2._localStreams.includes(stream)) { + _this2._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + if (!this._localStreams) { + this._localStreams = []; + } + var index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + var tracks = stream.getTracks(); + this.getSenders().forEach(function (sender) { + if (tracks.includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; + } +} +function shimRemoteStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get: function get() { + return this._onaddstream; + }, + set: function set(f) { + var _this4 = this; + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!_this4._remoteStreams) { + _this4._remoteStreams = []; + } + if (_this4._remoteStreams.includes(stream)) { + return; + } + _this4._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + _this4.dispatchEvent(event); + }); + }); + } + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} +function shimCallbacksAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + var prototype = window.RTCPeerConnection.prototype; + var origCreateOffer = prototype.createOffer; + var origCreateAnswer = prototype.createAnswer; + var setLocalDescription = prototype.setLocalDescription; + var setRemoteDescription = prototype.setRemoteDescription; + var addIceCandidate = prototype.addIceCandidate; + prototype.createOffer = function createOffer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.createAnswer = function createAnswer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + var withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + withCallback = function withCallback(candidate, successCallback, failureCallback) { + var promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} +function shimGetUserMedia(window) { + var navigator = window && window.navigator; + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + var mediaDevices = navigator.mediaDevices; + var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = function (constraints) { + return _getUserMedia(shimConstraints(constraints)); + }; + } + if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb); + }.bind(navigator); + } +} +function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, constraints, { + video: utils.compactObject(constraints.video) + }); + } + return constraints; +} +function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + var OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + var newIceServers = []; + for (var i = 0; i < pcConfig.iceServers.length; i++) { + var server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get: function get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} +function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimCreateOfferLegacy(window) { + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio; + } + var audioTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'audio'; + }); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) { + this.addTransceiver('audio', { + direction: 'recvonly' + }); + } + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo; + } + var videoTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'video'; + }); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) { + this.addTransceiver('video', { + direction: 'recvonly' + }); + } + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimAudioContext(window) { + if (_typeof(window) !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} + +},{"../utils":11}],11:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.compactObject = compactObject; +exports.deprecated = deprecated; +exports.detectBrowser = detectBrowser; +exports.disableLog = disableLog; +exports.disableWarnings = disableWarnings; +exports.extractVersion = extractVersion; +exports.filterStats = filterStats; +exports.log = log; +exports.walkStats = walkStats; +exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logDisabled_ = true; +var deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +function extractVersion(uastring, expr, pos) { + var match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + var proto = window.RTCPeerConnection.prototype; + var nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + var wrappedCallback = function wrappedCallback(e) { + var modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]); + }; + var nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + var unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap]["delete"](cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]); + }; + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get: function get() { + return this['_on' + eventNameToWrap]; + }, + set: function set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} +function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + logDisabled_ = bool; + return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} +function log() { + if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +function detectBrowser(window) { + // Returned result object. + var result = { + browser: null, + version: null + }; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + var navigator = window.navigator; + if (navigator.mozGetUserMedia) { + // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { + // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { + // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +function compactObject(data) { + if (!isObject(data)) { + return data; + } + return Object.keys(data).reduce(function (accumulator, key) { + var isObj = isObject(data[key]); + var value = isObj ? compactObject(data[key]) : data[key]; + var isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, _defineProperty({}, key, value)); + }, {}); +} + +/* iterates the stats graph recursively. */ +function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(function (name) { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(function (id) { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +function filterStats(result, track, outbound) { + var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + var filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + var trackStats = []; + result.forEach(function (value) { + if (value.type === 'track' && value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(function (trackStat) { + result.forEach(function (stats) { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} + +},{}],12:[function(require,module,exports){ +/* eslint-env node */ +'use strict'; + +// SDP helpers. + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function () { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function (blob) { + return blob.trim().split('\n').map(function (line) { + return line.trim(); + }); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function (blob) { + var parts = blob.split('\nm='); + return parts.map(function (part, index) { + return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; + }); +}; + +// Returns the session description. +SDPUtils.getDescription = function (blob) { + var sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function (blob) { + var sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function (blob, prefix) { + return SDPUtils.splitLines(blob).filter(function (line) { + return line.indexOf(prefix) === 0; + }); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function (line) { + var parts = void 0; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + var candidate = { + foundation: parts[0], + component: { 1: 'rtp', 2: 'rtcp' }[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7] + }; + + for (var i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: + // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function (candidate) { + var sdp = []; + sdp.push(candidate.foundation); + + var component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + var type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function (line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function (line) { + var parts = line.substring(9).split(' '); + var parsed = { + payloadType: parseInt(parts.shift(), 10) // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function (codec) { + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + var channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function (line) { + var parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' ') + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function (headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + (headerExtension.direction && headerExtension.direction !== 'sendrecv' ? '/' + headerExtension.direction : '') + ' ' + headerExtension.uri + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function (line) { + var parsed = {}; + var kv = void 0; + var parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (var j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function (codec) { + var line = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + var params = []; + Object.keys(codec.parameters).forEach(function (param) { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function (line) { + var parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' ') + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function (codec) { + var lines = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(function (fb) { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function (line) { + var sp = line.indexOf(' '); + var parts = { + ssrc: parseInt(line.substring(7, sp), 10) + }; + var colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function (line) { + var parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(function (ssrc) { + return parseInt(ssrc, 10); + }) + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function (mediaSection) { + var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function (line) { + var parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase() // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint) + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function (params, setupType) { + var sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(function (fp) { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function (line) { + var parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3) + }; +}; + +SDPUtils.writeCryptoLine = function (parameters) { + return 'a=crypto:' + parameters.tag + ' ' + parameters.cryptoSuite + ' ' + (_typeof(parameters.keyParams) === 'object' ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) : parameters.keyParams) + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function (keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + var parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined + }; +}; + +SDPUtils.writeCryptoKeyParams = function (keyParams) { + return keyParams.keyMethod + ':' + keyParams.keySalt + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + (keyParams.mkiValue && keyParams.mkiLength ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function (mediaSection, sessionpart) { + var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-ufrag:')[0]; + var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10) + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function (params) { + var sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function (mediaSection) { + var description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [] + }; + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + description.profile = mline[2]; + for (var i = 3; i < mline.length; i++) { + // find all codecs from mline[3..] + var pt = mline[i]; + var rtpmapline = SDPUtils.matchPrefix(mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + var codec = SDPUtils.parseRtpMap(rtpmapline); + var fmtps = SDPUtils.matchPrefix(mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:' + pt + ' ').map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: + // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function (line) { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + var wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ').map(SDPUtils.parseRtcpFb); + description.codecs.forEach(function (codec) { + wildcardRtcpFb.forEach(function (fb) { + var duplicate = codec.rtcpFeedback.find(function (existingFeedback) { + return existingFeedback.type === fb.type && existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function (kind, caps) { + var sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(function (codec) { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(function (codec) { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + var maxptime = 0; + caps.codecs.forEach(function (codec) { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(function (extension) { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function (mediaSection) { + var encodingParameters = []; + var description = SDPUtils.parseRtpParameters(mediaSection); + var hasRed = description.fecMechanisms.indexOf('RED') !== -1; + var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (parts) { + return parts.attribute === 'cname'; + }); + var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + var secondarySsrc = void 0; + + var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID').map(function (line) { + var parts = line.substring(17).split(' '); + return parts.map(function (part) { + return parseInt(part, 10); + }); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(function (codec) { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + var encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10) + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = { ssrc: secondarySsrc }; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red' + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 - 50 * 40 * 8; + } else { + bandwidth = undefined; + } + encodingParameters.forEach(function (params) { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function (mediaSection) { + var rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (obj) { + return obj.attribute === 'cname'; + })[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function (rtcpParameters) { + var sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function (mediaSection) { + var parts = void 0; + var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return { stream: parts[0], track: parts[1] }; + } + var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (msidParts) { + return msidParts.attribute === 'msid'; + }); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return { stream: parts[0], track: parts[1] }; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function (mediaSection) { + var mline = SDPUtils.parseMLine(mediaSection); + var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + var maxMessageSize = void 0; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize: maxMessageSize + }; + } + var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + var parts = sctpMapLines[0].substring(10).split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize: maxMessageSize + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function (media, sctp) { + var output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctp-port:' + sctp.port + '\r\n']; + } else { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n']; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function () { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function (sessId, sessVer, sessUser) { + var sessionId = void 0; + var version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + var user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + 'o=' + user + ' ' + sessionId + ' ' + version + ' IN IP4 127.0.0.1\r\n' + 's=-\r\n' + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function (mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + var lines = SDPUtils.splitLines(mediaSection); + for (var i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function (mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' ') + }; +}; + +SDPUtils.parseOLine = function (mediaSection) { + var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + var parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5] + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function (blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + var lines = SDPUtils.splitLines(blob); + for (var i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object') { + module.exports = SDPUtils; +} +},{}]},{},[1])(1) +}); diff --git a/node_modules/webrtc-adapter/out/adapter_no_global.js b/node_modules/webrtc-adapter/out/adapter_no_global.js new file mode 100644 index 0000000..dd390fb --- /dev/null +++ b/node_modules/webrtc-adapter/out/adapter_no_global.js @@ -0,0 +1,3363 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}, + window = _ref.window; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { + shimChrome: true, + shimFirefox: true, + shimSafari: true + }; + // Utils. + var logging = utils.log; + var browserDetails = utils.detectBrowser(window); + var adapter = { + browserDetails: browserDetails, + commonShim: commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp: sdp + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + return adapter; +} + +},{"./chrome/chrome_shim":3,"./common_shim":6,"./firefox/firefox_shim":7,"./safari/safari_shim":10,"./utils":11,"sdp":12}],3:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fixNegotiationNeeded = fixNegotiationNeeded; +exports.shimAddTrackRemoveTrack = shimAddTrackRemoveTrack; +exports.shimAddTrackRemoveTrackWithNative = shimAddTrackRemoveTrackWithNative; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetSendersWithDtmf = shimGetSendersWithDtmf; +exports.shimGetStats = shimGetStats; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimMediaStream = shimMediaStream; +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimSenderReceiverGetStats = shimSenderReceiverGetStats; +var utils = _interopRequireWildcard(require("../utils.js")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('ontrack' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get: function get() { + return this._ontrack; + }, + set: function set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var _this = this; + if (!this._ontrackpoly) { + this._ontrackpoly = function (e) { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', function (te) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === te.track.id; + }); + } else { + receiver = { + track: te.track + }; + } + var event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(function (track) { + var receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = _this.getReceivers().find(function (r) { + return r.track && r.track.id === track.id; + }); + } else { + receiver = { + track: track + }; + } + var event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = { + receiver: receiver + }; + event.streams = [e.stream]; + _this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', { + value: { + receiver: e.receiver + } + }); + } + return e; + }); + } +} +function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (_typeof(window) === 'object' && window.RTCPeerConnection && !('getSenders' in window.RTCPeerConnection.prototype) && 'createDTMFSender' in window.RTCPeerConnection.prototype) { + var shimSenderWithDtmf = function shimSenderWithDtmf(pc, track) { + return { + track: track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + var idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this2 = this; + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + _this2._senders.push(shimSenderWithDtmf(_this2, track)); + }); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + stream.getTracks().forEach(function (track) { + var sender = _this3._senders.find(function (s) { + return s.track === track; + }); + if (sender) { + // remove sender + _this3._senders.splice(_this3._senders.indexOf(sender), 1); + } + }); + }; + } else if (_typeof(window) === 'object' && window.RTCPeerConnection && 'getSenders' in window.RTCPeerConnection.prototype && 'createDTMFSender' in window.RTCPeerConnection.prototype && window.RTCRtpSender && !('dtmf' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this4 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this4; + }); + return senders; + }; + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get: function get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} +function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _this5 = this; + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + var fixChromeStats_ = function fixChromeStats_(response) { + var standardReport = {}; + var reports = response.result(); + reports.forEach(function (report) { + var standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(function (name) { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + return standardReport; + }; + + // shim getStats with maplike support + var makeMapStats = function makeMapStats(stats) { + return new Map(Object.keys(stats).map(function (key) { + return [key, stats[key]]; + })); + }; + if (arguments.length >= 2) { + var successCallbackWrapper_ = function successCallbackWrapper_(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + return origGetStats.apply(this, [successCallbackWrapper_, selector]); + } + + // promise-support + return new Promise(function (resolve, reject) { + origGetStats.apply(_this5, [function (response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} +function shimSenderReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this6 = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this6; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + var sender = this; + return this._pc.getStats().then(function (result) { + return ( + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true) + ); + }); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this7 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this7; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + var receiver = this; + return this._pc.getStats().then(function (result) { + return utils.filterStats(result, receiver.track, false); + }); + }; + } + if (!('getStats' in window.RTCRtpSender.prototype && 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + var origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && arguments[0] instanceof window.MediaStreamTrack) { + var track = arguments[0]; + var sender; + var receiver; + var err; + this.getSenders().forEach(function (s) { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(function (r) { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || sender && receiver) { + return Promise.reject(new DOMException('There are more than one sender or receiver for the track.', 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException('There is no sender or receiver for the track.', 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this8 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams).map(function (streamId) { + return _this8._shimmedLocalStreams[streamId][0]; + }); + }; + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + var sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this9 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this9.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + var existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + var newSenders = this.getSenders().filter(function (newSender) { + return existingSenders.indexOf(newSender) === -1; + }); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + var origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this10 = this; + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(function (streamId) { + var idx = _this10._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + _this10._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (_this10._shimmedLocalStreams[streamId].length === 1) { + delete _this10._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} +function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + var origGetLocalStreams = window.RTCPeerConnection.prototype.getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + var _this11 = this; + var nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(function (stream) { + return _this11._reverseStreams[stream.id]; + }); + }; + var origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this12 = this; + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + stream.getTracks().forEach(function (track) { + var alreadyExists = _this12.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + var newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + var origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + origRemoveStream.apply(this, [this._streams[stream.id] || stream]); + delete this._reverseStreams[this._streams[stream.id] ? this._streams[stream.id].id : stream.id]; + delete this._streams[stream.id]; + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track, stream) { + var _this13 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + var streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || !streams[0].getTracks().find(function (t) { + return t === track; + })) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException('The adapter.js addTrack polyfill only supports a single ' + ' stream which is associated with the specified track.', 'NotSupportedError'); + } + var alreadyExists = this.getSenders().find(function (s) { + return s.track === track; + }); + if (alreadyExists) { + throw new DOMException('Track already exists.', 'InvalidAccessError'); + } + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + var oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(function () { + _this13.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + var newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(function (s) { + return s.track === track; + }); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + function replaceExternalStreamId(pc, description) { + var sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(function (internalId) { + var externalStream = pc._reverseStreams[internalId]; + var internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp: sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + var _this14 = this; + var args = arguments; + var isLegacyCall = arguments.length && typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [function (description) { + var desc = replaceInternalStreamId(_this14, description); + args[0].apply(null, [desc]); + }, function (err) { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2]]); + } + return nativeMethod.apply(this, arguments).then(function (description) { + return replaceInternalStreamId(_this14, description); + }); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + var origSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + var origLocalDescription = Object.getOwnPropertyDescriptor(window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, 'localDescription', { + get: function get() { + var description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + window.RTCPeerConnection.prototype.removeTrack = function removeTrack(sender) { + var _this15 = this; + if (this.signalingState === 'closed') { + throw new DOMException('The RTCPeerConnection\'s signalingState is \'closed\'.', 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + var isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + var stream; + Object.keys(this._streams).forEach(function (streamid) { + var hasTrack = _this15._streams[streamid].getTracks().find(function (track) { + return sender.track === track; + }); + if (hasTrack) { + stream = _this15._streams[streamid]; + } + }); + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} +function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', function (e) { + var pc = e.target; + if (browserDetails.version < 72 || pc.getConfiguration && pc.getConfiguration().sdpSemantics === 'plan-b') { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} + +},{"../utils.js":11,"./getdisplaymedia":4,"./getusermedia":5}],4:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + return getSourceId(constraints).then(function (sourceId) { + var widthSpecified = constraints.video && constraints.video.width; + var heightSpecified = constraints.video && constraints.video.height; + var frameRateSpecified = constraints.video && constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} + +},{}],5:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils.js")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logging = utils.log; +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + if (!navigator.mediaDevices) { + return; + } + var constraintsToChrome_ = function constraintsToChrome_(c) { + if (_typeof(c) !== 'object' || c.mandatory || c.optional) { + return c; + } + var cc = {}; + Object.keys(c).forEach(function (key) { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + var r = _typeof(c[key]) === 'object' ? c[key] : { + ideal: c[key] + }; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + var oldname_ = function oldname_(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return name === 'deviceId' ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + var oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(function (mix) { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + var shimConstraints_ = function shimConstraints_(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && _typeof(constraints.audio) === 'object') { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && _typeof(constraints.video) === 'object') { + // Shim facingMode for mobile & surface pro. + var face = constraints.video.facingMode; + face = face && (_typeof(face) === 'object' ? face : { + ideal: face + }); + var getSupportedFacingModeLies = browserDetails.version < 66; + if (face && (face.exact === 'user' || face.exact === 'environment' || face.ideal === 'user' || face.ideal === 'environment') && !(navigator.mediaDevices.getSupportedConstraints && navigator.mediaDevices.getSupportedConstraints().facingMode && !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + var matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices().then(function (devices) { + devices = devices.filter(function (d) { + return d.kind === 'videoinput'; + }); + var dev = devices.find(function (d) { + return matches.some(function (match) { + return d.label.toLowerCase().includes(match); + }); + }); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + + if (dev) { + constraints.video.deviceId = face.exact ? { + exact: dev.deviceId + } : { + ideal: dev.deviceId + }; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + var shimError_ = function shimError_(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString: function toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + var getUserMedia_ = function getUserMedia_(constraints, onSuccess, onError) { + shimConstraints_(constraints, function (c) { + navigator.webkitGetUserMedia(c, onSuccess, function (e) { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + var origGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (cs) { + return shimConstraints_(cs, function (c) { + return origGetUserMedia(c).then(function (stream) { + if (c.audio && !stream.getAudioTracks().length || c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(function (track) { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, function (e) { + return Promise.reject(shimError_(e)); + }); + }); + }; + } +} + +},{"../utils.js":11}],6:[function(require,module,exports){ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeExtmapAllowMixed = removeExtmapAllowMixed; +exports.shimAddIceCandidateNullOrEmpty = shimAddIceCandidateNullOrEmpty; +exports.shimConnectionState = shimConnectionState; +exports.shimMaxMessageSize = shimMaxMessageSize; +exports.shimParameterlessSetLocalDescription = shimParameterlessSetLocalDescription; +exports.shimRTCIceCandidate = shimRTCIceCandidate; +exports.shimRTCIceCandidateRelayProtocol = shimRTCIceCandidateRelayProtocol; +exports.shimSendThrowTypeError = shimSendThrowTypeError; +var _sdp = _interopRequireDefault(require("sdp")); +var utils = _interopRequireWildcard(require("./utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'foundation' in window.RTCIceCandidate.prototype) { + return; + } + var NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (_typeof(args) === 'object' && args.candidate && args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + var nativeCandidate = new NativeRTCIceCandidate(args); + var parsedCandidate = _sdp["default"].parseCandidate(args.candidate); + for (var key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, { + value: parsedCandidate[key] + }); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} +function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || window.RTCIceCandidate && 'relayProtocol' in window.RTCIceCandidate.prototype) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', function (e) { + if (e.candidate) { + var parsedCandidate = _sdp["default"].parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp' + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} +function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + var sctpInDescription = function sctpInDescription(description) { + if (!description || !description.sdp) { + return false; + } + var sections = _sdp["default"].splitSections(description.sdp); + sections.shift(); + return sections.some(function (mediaSection) { + var mLine = _sdp["default"].parseMLine(mediaSection); + return mLine && mLine.kind === 'application' && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + var getRemoteFirefoxVersion = function getRemoteFirefoxVersion(description) { + // TODO: Is there a better solution for detecting Firefox? + var match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + var version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + var getCanSendMaxMessageSize = function getCanSendMaxMessageSize(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + var canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + var getMaxMessageSize = function getMaxMessageSize(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + var maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' && browserDetails.version === 57) { + maxMessageSize = 65535; + } + var match = _sdp["default"].matchPrefix(description.sdp, 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + var _this$getConfiguratio = this.getConfiguration(), + sdpSemantics = _this$getConfiguratio.sdpSemantics; + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get: function get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true + }); + } + } + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + var isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + var canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + var remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + var maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + var sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get: function get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + return origSetRemoteDescription.apply(this, arguments); + }; +} +function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + var origDataChannelSend = dc.send; + dc.send = function send() { + var data = arguments[0]; + var length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + var origCreateDataChannel = window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = function createDataChannel() { + var dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', function (e) { + wrapDcSend(e.channel, e.target); + return e; + }); +} + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +function shimConnectionState(window) { + if (!window.RTCPeerConnection || 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + var proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get: function get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get: function get() { + return this._onconnectionstatechange || null; + }, + set: function set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + ['setLocalDescription', 'setRemoteDescription'].forEach(function (method) { + var origMethod = proto[method]; + proto[method] = function () { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = function (e) { + var pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + var newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} +function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + var nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + var sdp = desc.sdp.split('\n').filter(function (line) { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp: sdp + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} +function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeAddIceCandidate = window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if ((browserDetails.browser === 'chrome' && browserDetails.version < 78 || browserDetails.browser === 'firefox' && browserDetails.version < 68 || browserDetails.browser === 'safari') && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + var nativeSetLocalDescription = window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() { + var _this = this; + var desc = arguments[0] || {}; + if (_typeof(desc) !== 'object' || desc.type && desc.sdp) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = { + type: desc.type, + sdp: desc.sdp + }; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || desc.type !== 'offer' && desc.type !== 'answer') { + return nativeSetLocalDescription.apply(this, [desc]); + } + var func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this).then(function (d) { + return nativeSetLocalDescription.apply(_this, [d]); + }); + }; +} + +},{"./utils":11,"sdp":12}],7:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAddTransceiver = shimAddTransceiver; +exports.shimCreateAnswer = shimCreateAnswer; +exports.shimCreateOffer = shimCreateOffer; +Object.defineProperty(exports, "shimGetDisplayMedia", { + enumerable: true, + get: function get() { + return _getdisplaymedia.shimGetDisplayMedia; + } +}); +exports.shimGetParameters = shimGetParameters; +Object.defineProperty(exports, "shimGetUserMedia", { + enumerable: true, + get: function get() { + return _getusermedia.shimGetUserMedia; + } +}); +exports.shimOnTrack = shimOnTrack; +exports.shimPeerConnection = shimPeerConnection; +exports.shimRTCDataChannel = shimRTCDataChannel; +exports.shimReceiverGetStats = shimReceiverGetStats; +exports.shimRemoveStream = shimRemoveStream; +exports.shimSenderGetStats = shimSenderGetStats; +var utils = _interopRequireWildcard(require("../utils")); +var _getusermedia = require("./getusermedia"); +var _getdisplaymedia = require("./getdisplaymedia"); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimOnTrack(window) { + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimPeerConnection(window, browserDetails) { + if (_typeof(window) !== 'object' || !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'].forEach(function (method) { + var nativeMethod = window.RTCPeerConnection.prototype[method]; + var methodObj = _defineProperty({}, method, function () { + arguments[0] = new (method === 'addIceCandidate' ? window.RTCIceCandidate : window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }); + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + var modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + var nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + var _arguments = Array.prototype.slice.call(arguments), + selector = _arguments[0], + onSucc = _arguments[1], + onErr = _arguments[2]; + return nativeGetStats.apply(this, [selector || null]).then(function (stats) { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(function (stat) { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach(function (stat, i) { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }).then(onSucc, onErr); + }; +} +function shimSenderGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + var origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + var _this = this; + var senders = origGetSenders.apply(this, []); + senders.forEach(function (sender) { + return sender._pc = _this; + }); + return senders; + }; + } + var origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + var sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : Promise.resolve(new Map()); + }; +} +function shimReceiverGetStats(window) { + if (!(_typeof(window) === 'object' && window.RTCPeerConnection && window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + var origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + var _this2 = this; + var receivers = origGetReceivers.apply(this, []); + receivers.forEach(function (receiver) { + return receiver._pc = _this2; + }); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', function (e) { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} +function shimRemoveStream(window) { + if (!window.RTCPeerConnection || 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(function (sender) { + if (sender.track && stream.getTracks().includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; +} +function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} +function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + var sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = _toConsumableArray(sendEncodings); + var shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach(function (encodingParam) { + if ('rid' in encodingParam) { + var ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + var transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + var sender = transceiver.sender; + var params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + params.encodings.length === 1 && Object.keys(params.encodings[0]).length === 0) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params).then(function () { + delete sender.sendEncodings; + })["catch"](function () { + delete sender.sendEncodings; + })); + } + } + return transceiver; + }; + } +} +function shimGetParameters(window) { + if (!(_typeof(window) === 'object' && window.RTCRtpSender)) { + return; + } + var origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = function getParameters() { + var params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} +function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + var _arguments2 = arguments, + _this4 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateOffer.apply(_this4, _arguments2); + })["finally"](function () { + _this4.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(_typeof(window) === 'object' && window.RTCPeerConnection)) { + return; + } + var origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + var _arguments3 = arguments, + _this5 = this; + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises).then(function () { + return origCreateAnswer.apply(_this5, _arguments3); + })["finally"](function () { + _this5.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} + +},{"../utils":11,"./getdisplaymedia":8,"./getusermedia":9}],8:[function(require,module,exports){ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetDisplayMedia = shimGetDisplayMedia; +function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!window.navigator.mediaDevices) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + var err = new DOMException('getDisplayMedia without video ' + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = { + mediaSource: preferredMediaSource + }; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} + +},{}],9:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimGetUserMedia = shimGetUserMedia; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimGetUserMedia(window, browserDetails) { + var navigator = window && window.navigator; + var MediaStreamTrack = window && window.MediaStreamTrack; + navigator.getUserMedia = function (constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + var remap = function remap(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function (c) { + if (_typeof(c) === 'object' && _typeof(c.audio) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + var nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function () { + var obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function (c) { + if (this.kind === 'audio' && _typeof(c) === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} + +},{"../utils":11}],10:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shimAudioContext = shimAudioContext; +exports.shimCallbacksAPI = shimCallbacksAPI; +exports.shimConstraints = shimConstraints; +exports.shimCreateOfferLegacy = shimCreateOfferLegacy; +exports.shimGetUserMedia = shimGetUserMedia; +exports.shimLocalStreamsAPI = shimLocalStreamsAPI; +exports.shimRTCIceServerUrls = shimRTCIceServerUrls; +exports.shimRemoteStreamsAPI = shimRemoteStreamsAPI; +exports.shimTrackEventTransceiver = shimTrackEventTransceiver; +var utils = _interopRequireWildcard(require("../utils")); +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function shimLocalStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + var _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + var _this = this; + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + stream.getVideoTracks().forEach(function (track) { + return _addTrack.call(_this, track, stream); + }); + }; + window.RTCPeerConnection.prototype.addTrack = function addTrack(track) { + var _this2 = this; + for (var _len = arguments.length, streams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + streams[_key - 1] = arguments[_key]; + } + if (streams) { + streams.forEach(function (stream) { + if (!_this2._localStreams) { + _this2._localStreams = [stream]; + } else if (!_this2._localStreams.includes(stream)) { + _this2._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = function removeStream(stream) { + var _this3 = this; + if (!this._localStreams) { + this._localStreams = []; + } + var index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + var tracks = stream.getTracks(); + this.getSenders().forEach(function (sender) { + if (tracks.includes(sender.track)) { + _this3.removeTrack(sender); + } + }); + }; + } +} +function shimRemoteStreamsAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get: function get() { + return this._onaddstream; + }, + set: function set(f) { + var _this4 = this; + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!_this4._remoteStreams) { + _this4._remoteStreams = []; + } + if (_this4._remoteStreams.includes(stream)) { + return; + } + _this4._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + _this4.dispatchEvent(event); + }); + }); + } + }); + var origSetRemoteDescription = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = function setRemoteDescription() { + var pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function (e) { + e.streams.forEach(function (stream) { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + var event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} +function shimCallbacksAPI(window) { + if (_typeof(window) !== 'object' || !window.RTCPeerConnection) { + return; + } + var prototype = window.RTCPeerConnection.prototype; + var origCreateOffer = prototype.createOffer; + var origCreateAnswer = prototype.createAnswer; + var setLocalDescription = prototype.setLocalDescription; + var setRemoteDescription = prototype.setRemoteDescription; + var addIceCandidate = prototype.addIceCandidate; + prototype.createOffer = function createOffer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.createAnswer = function createAnswer(successCallback, failureCallback) { + var options = arguments.length >= 2 ? arguments[2] : arguments[0]; + var promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + var withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + withCallback = function withCallback(description, successCallback, failureCallback) { + var promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + withCallback = function withCallback(candidate, successCallback, failureCallback) { + var promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} +function shimGetUserMedia(window) { + var navigator = window && window.navigator; + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + var mediaDevices = navigator.mediaDevices; + var _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = function (constraints) { + return _getUserMedia(shimConstraints(constraints)); + }; + } + if (!navigator.getUserMedia && navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints).then(cb, errcb); + }.bind(navigator); + } +} +function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, constraints, { + video: utils.compactObject(constraints.video) + }); + } + return constraints; +} +function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + var OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + var newIceServers = []; + for (var i = 0; i < pcConfig.iceServers.length; i++) { + var server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get: function get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} +function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (_typeof(window) === 'object' && window.RTCTrackEvent && 'receiver' in window.RTCTrackEvent.prototype && !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get: function get() { + return { + receiver: this.receiver + }; + } + }); + } +} +function shimCreateOfferLegacy(window) { + var origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = !!offerOptions.offerToReceiveAudio; + } + var audioTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'audio'; + }); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && !audioTransceiver) { + this.addTransceiver('audio', { + direction: 'recvonly' + }); + } + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = !!offerOptions.offerToReceiveVideo; + } + var videoTransceiver = this.getTransceivers().find(function (transceiver) { + return transceiver.receiver.track.kind === 'video'; + }); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && !videoTransceiver) { + this.addTransceiver('video', { + direction: 'recvonly' + }); + } + } + return origCreateOffer.apply(this, arguments); + }; +} +function shimAudioContext(window) { + if (_typeof(window) !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} + +},{"../utils":11}],11:[function(require,module,exports){ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.compactObject = compactObject; +exports.deprecated = deprecated; +exports.detectBrowser = detectBrowser; +exports.disableLog = disableLog; +exports.disableWarnings = disableWarnings; +exports.extractVersion = extractVersion; +exports.filterStats = filterStats; +exports.log = log; +exports.walkStats = walkStats; +exports.wrapPeerConnectionEvent = wrapPeerConnectionEvent; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +var logDisabled_ = true; +var deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +function extractVersion(uastring, expr, pos) { + var match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + var proto = window.RTCPeerConnection.prototype; + var nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + var wrappedCallback = function wrappedCallback(e) { + var modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, wrappedCallback]); + }; + var nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function (nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + var unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap]["delete"](cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, unwrappedCb]); + }; + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get: function get() { + return this['_on' + eventNameToWrap]; + }, + set: function set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} +function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + logDisabled_ = bool; + return bool ? 'adapter.js logging disabled' : 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + _typeof(bool) + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} +function log() { + if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +function detectBrowser(window) { + // Returned result object. + var result = { + browser: null, + version: null + }; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + var navigator = window.navigator; + if (navigator.mozGetUserMedia) { + // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || window.isSecureContext === false && window.webkitRTCPeerConnection) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { + // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { + // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +function compactObject(data) { + if (!isObject(data)) { + return data; + } + return Object.keys(data).reduce(function (accumulator, key) { + var isObj = isObject(data[key]); + var value = isObj ? compactObject(data[key]) : data[key]; + var isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, _defineProperty({}, key, value)); + }, {}); +} + +/* iterates the stats graph recursively. */ +function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(function (name) { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(function (id) { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +function filterStats(result, track, outbound) { + var streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + var filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + var trackStats = []; + result.forEach(function (value) { + if (value.type === 'track' && value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(function (trackStat) { + result.forEach(function (stats) { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} + +},{}],12:[function(require,module,exports){ +/* eslint-env node */ +'use strict'; + +// SDP helpers. + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var SDPUtils = {}; + +// Generate an alphanumeric identifier for cname or mids. +// TODO: use UUIDs instead? https://gist.github.com/jed/982883 +SDPUtils.generateIdentifier = function () { + return Math.random().toString(36).substring(2, 12); +}; + +// The RTCP CNAME used by all peerconnections from the same JS. +SDPUtils.localCName = SDPUtils.generateIdentifier(); + +// Splits SDP into lines, dealing with both CRLF and LF. +SDPUtils.splitLines = function (blob) { + return blob.trim().split('\n').map(function (line) { + return line.trim(); + }); +}; +// Splits SDP into sessionpart and mediasections. Ensures CRLF. +SDPUtils.splitSections = function (blob) { + var parts = blob.split('\nm='); + return parts.map(function (part, index) { + return (index > 0 ? 'm=' + part : part).trim() + '\r\n'; + }); +}; + +// Returns the session description. +SDPUtils.getDescription = function (blob) { + var sections = SDPUtils.splitSections(blob); + return sections && sections[0]; +}; + +// Returns the individual media sections. +SDPUtils.getMediaSections = function (blob) { + var sections = SDPUtils.splitSections(blob); + sections.shift(); + return sections; +}; + +// Returns lines that start with a certain prefix. +SDPUtils.matchPrefix = function (blob, prefix) { + return SDPUtils.splitLines(blob).filter(function (line) { + return line.indexOf(prefix) === 0; + }); +}; + +// Parses an ICE candidate line. Sample input: +// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8 +// rport 55996" +// Input can be prefixed with a=. +SDPUtils.parseCandidate = function (line) { + var parts = void 0; + // Parse both variants. + if (line.indexOf('a=candidate:') === 0) { + parts = line.substring(12).split(' '); + } else { + parts = line.substring(10).split(' '); + } + + var candidate = { + foundation: parts[0], + component: { 1: 'rtp', 2: 'rtcp' }[parts[1]] || parts[1], + protocol: parts[2].toLowerCase(), + priority: parseInt(parts[3], 10), + ip: parts[4], + address: parts[4], // address is an alias for ip. + port: parseInt(parts[5], 10), + // skip parts[6] == 'typ' + type: parts[7] + }; + + for (var i = 8; i < parts.length; i += 2) { + switch (parts[i]) { + case 'raddr': + candidate.relatedAddress = parts[i + 1]; + break; + case 'rport': + candidate.relatedPort = parseInt(parts[i + 1], 10); + break; + case 'tcptype': + candidate.tcpType = parts[i + 1]; + break; + case 'ufrag': + candidate.ufrag = parts[i + 1]; // for backward compatibility. + candidate.usernameFragment = parts[i + 1]; + break; + default: + // extension handling, in particular ufrag. Don't overwrite. + if (candidate[parts[i]] === undefined) { + candidate[parts[i]] = parts[i + 1]; + } + break; + } + } + return candidate; +}; + +// Translates a candidate object into SDP candidate attribute. +// This does not include the a= prefix! +SDPUtils.writeCandidate = function (candidate) { + var sdp = []; + sdp.push(candidate.foundation); + + var component = candidate.component; + if (component === 'rtp') { + sdp.push(1); + } else if (component === 'rtcp') { + sdp.push(2); + } else { + sdp.push(component); + } + sdp.push(candidate.protocol.toUpperCase()); + sdp.push(candidate.priority); + sdp.push(candidate.address || candidate.ip); + sdp.push(candidate.port); + + var type = candidate.type; + sdp.push('typ'); + sdp.push(type); + if (type !== 'host' && candidate.relatedAddress && candidate.relatedPort) { + sdp.push('raddr'); + sdp.push(candidate.relatedAddress); + sdp.push('rport'); + sdp.push(candidate.relatedPort); + } + if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') { + sdp.push('tcptype'); + sdp.push(candidate.tcpType); + } + if (candidate.usernameFragment || candidate.ufrag) { + sdp.push('ufrag'); + sdp.push(candidate.usernameFragment || candidate.ufrag); + } + return 'candidate:' + sdp.join(' '); +}; + +// Parses an ice-options line, returns an array of option tags. +// Sample input: +// a=ice-options:foo bar +SDPUtils.parseIceOptions = function (line) { + return line.substring(14).split(' '); +}; + +// Parses a rtpmap line, returns RTCRtpCoddecParameters. Sample input: +// a=rtpmap:111 opus/48000/2 +SDPUtils.parseRtpMap = function (line) { + var parts = line.substring(9).split(' '); + var parsed = { + payloadType: parseInt(parts.shift(), 10) // was: id + }; + + parts = parts[0].split('/'); + + parsed.name = parts[0]; + parsed.clockRate = parseInt(parts[1], 10); // was: clockrate + parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1; + // legacy alias, got renamed back to channels in ORTC. + parsed.numChannels = parsed.channels; + return parsed; +}; + +// Generates a rtpmap line from RTCRtpCodecCapability or +// RTCRtpCodecParameters. +SDPUtils.writeRtpMap = function (codec) { + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + var channels = codec.channels || codec.numChannels || 1; + return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate + (channels !== 1 ? '/' + channels : '') + '\r\n'; +}; + +// Parses a extmap line (headerextension from RFC 5285). Sample input: +// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset +// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset +SDPUtils.parseExtmap = function (line) { + var parts = line.substring(9).split(' '); + return { + id: parseInt(parts[0], 10), + direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv', + uri: parts[1], + attributes: parts.slice(2).join(' ') + }; +}; + +// Generates an extmap line from RTCRtpHeaderExtensionParameters or +// RTCRtpHeaderExtension. +SDPUtils.writeExtmap = function (headerExtension) { + return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) + (headerExtension.direction && headerExtension.direction !== 'sendrecv' ? '/' + headerExtension.direction : '') + ' ' + headerExtension.uri + (headerExtension.attributes ? ' ' + headerExtension.attributes : '') + '\r\n'; +}; + +// Parses a fmtp line, returns dictionary. Sample input: +// a=fmtp:96 vbr=on;cng=on +// Also deals with vbr=on; cng=on +SDPUtils.parseFmtp = function (line) { + var parsed = {}; + var kv = void 0; + var parts = line.substring(line.indexOf(' ') + 1).split(';'); + for (var j = 0; j < parts.length; j++) { + kv = parts[j].trim().split('='); + parsed[kv[0].trim()] = kv[1]; + } + return parsed; +}; + +// Generates a fmtp line from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeFmtp = function (codec) { + var line = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.parameters && Object.keys(codec.parameters).length) { + var params = []; + Object.keys(codec.parameters).forEach(function (param) { + if (codec.parameters[param] !== undefined) { + params.push(param + '=' + codec.parameters[param]); + } else { + params.push(param); + } + }); + line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\r\n'; + } + return line; +}; + +// Parses a rtcp-fb line, returns RTCPRtcpFeedback object. Sample input: +// a=rtcp-fb:98 nack rpsi +SDPUtils.parseRtcpFb = function (line) { + var parts = line.substring(line.indexOf(' ') + 1).split(' '); + return { + type: parts.shift(), + parameter: parts.join(' ') + }; +}; + +// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters. +SDPUtils.writeRtcpFb = function (codec) { + var lines = ''; + var pt = codec.payloadType; + if (codec.preferredPayloadType !== undefined) { + pt = codec.preferredPayloadType; + } + if (codec.rtcpFeedback && codec.rtcpFeedback.length) { + // FIXME: special handling for trr-int? + codec.rtcpFeedback.forEach(function (fb) { + lines += 'a=rtcp-fb:' + pt + ' ' + fb.type + (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') + '\r\n'; + }); + } + return lines; +}; + +// Parses a RFC 5576 ssrc media attribute. Sample input: +// a=ssrc:3735928559 cname:something +SDPUtils.parseSsrcMedia = function (line) { + var sp = line.indexOf(' '); + var parts = { + ssrc: parseInt(line.substring(7, sp), 10) + }; + var colon = line.indexOf(':', sp); + if (colon > -1) { + parts.attribute = line.substring(sp + 1, colon); + parts.value = line.substring(colon + 1); + } else { + parts.attribute = line.substring(sp + 1); + } + return parts; +}; + +// Parse a ssrc-group line (see RFC 5576). Sample input: +// a=ssrc-group:semantics 12 34 +SDPUtils.parseSsrcGroup = function (line) { + var parts = line.substring(13).split(' '); + return { + semantics: parts.shift(), + ssrcs: parts.map(function (ssrc) { + return parseInt(ssrc, 10); + }) + }; +}; + +// Extracts the MID (RFC 5888) from a media section. +// Returns the MID or undefined if no mid line was found. +SDPUtils.getMid = function (mediaSection) { + var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0]; + if (mid) { + return mid.substring(6); + } +}; + +// Parses a fingerprint line for DTLS-SRTP. +SDPUtils.parseFingerprint = function (line) { + var parts = line.substring(14).split(' '); + return { + algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge. + value: parts[1].toUpperCase() // the definition is upper-case in RFC 4572. + }; +}; + +// Extracts DTLS parameters from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the fingerprint line as input. See also getIceParameters. +SDPUtils.getDtlsParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=fingerprint:'); + // Note: a=setup line is ignored since we use the 'auto' role in Edge. + return { + role: 'auto', + fingerprints: lines.map(SDPUtils.parseFingerprint) + }; +}; + +// Serializes DTLS parameters to SDP. +SDPUtils.writeDtlsParameters = function (params, setupType) { + var sdp = 'a=setup:' + setupType + '\r\n'; + params.fingerprints.forEach(function (fp) { + sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\r\n'; + }); + return sdp; +}; + +// Parses a=crypto lines into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members +SDPUtils.parseCryptoLine = function (line) { + var parts = line.substring(9).split(' '); + return { + tag: parseInt(parts[0], 10), + cryptoSuite: parts[1], + keyParams: parts[2], + sessionParams: parts.slice(3) + }; +}; + +SDPUtils.writeCryptoLine = function (parameters) { + return 'a=crypto:' + parameters.tag + ' ' + parameters.cryptoSuite + ' ' + (_typeof(parameters.keyParams) === 'object' ? SDPUtils.writeCryptoKeyParams(parameters.keyParams) : parameters.keyParams) + (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') + '\r\n'; +}; + +// Parses the crypto key parameters into +// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam* +SDPUtils.parseCryptoKeyParams = function (keyParams) { + if (keyParams.indexOf('inline:') !== 0) { + return null; + } + var parts = keyParams.substring(7).split('|'); + return { + keyMethod: 'inline', + keySalt: parts[0], + lifeTime: parts[1], + mkiValue: parts[2] ? parts[2].split(':')[0] : undefined, + mkiLength: parts[2] ? parts[2].split(':')[1] : undefined + }; +}; + +SDPUtils.writeCryptoKeyParams = function (keyParams) { + return keyParams.keyMethod + ':' + keyParams.keySalt + (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') + (keyParams.mkiValue && keyParams.mkiLength ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength : ''); +}; + +// Extracts all SDES parameters. +SDPUtils.getCryptoParameters = function (mediaSection, sessionpart) { + var lines = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=crypto:'); + return lines.map(SDPUtils.parseCryptoLine); +}; + +// Parses ICE information from SDP media section or sessionpart. +// FIXME: for consistency with other functions this should only +// get the ice-ufrag and ice-pwd lines as input. +SDPUtils.getIceParameters = function (mediaSection, sessionpart) { + var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-ufrag:')[0]; + var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart, 'a=ice-pwd:')[0]; + if (!(ufrag && pwd)) { + return null; + } + return { + usernameFragment: ufrag.substring(12), + password: pwd.substring(10) + }; +}; + +// Serializes ICE parameters to SDP. +SDPUtils.writeIceParameters = function (params) { + var sdp = 'a=ice-ufrag:' + params.usernameFragment + '\r\n' + 'a=ice-pwd:' + params.password + '\r\n'; + if (params.iceLite) { + sdp += 'a=ice-lite\r\n'; + } + return sdp; +}; + +// Parses the SDP media section and returns RTCRtpParameters. +SDPUtils.parseRtpParameters = function (mediaSection) { + var description = { + codecs: [], + headerExtensions: [], + fecMechanisms: [], + rtcp: [] + }; + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + description.profile = mline[2]; + for (var i = 3; i < mline.length; i++) { + // find all codecs from mline[3..] + var pt = mline[i]; + var rtpmapline = SDPUtils.matchPrefix(mediaSection, 'a=rtpmap:' + pt + ' ')[0]; + if (rtpmapline) { + var codec = SDPUtils.parseRtpMap(rtpmapline); + var fmtps = SDPUtils.matchPrefix(mediaSection, 'a=fmtp:' + pt + ' '); + // Only the first a=fmtp: is considered. + codec.parameters = fmtps.length ? SDPUtils.parseFmtp(fmtps[0]) : {}; + codec.rtcpFeedback = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:' + pt + ' ').map(SDPUtils.parseRtcpFb); + description.codecs.push(codec); + // parse FEC mechanisms from rtpmap lines. + switch (codec.name.toUpperCase()) { + case 'RED': + case 'ULPFEC': + description.fecMechanisms.push(codec.name.toUpperCase()); + break; + default: + // only RED and ULPFEC are recognized as FEC mechanisms. + break; + } + } + } + SDPUtils.matchPrefix(mediaSection, 'a=extmap:').forEach(function (line) { + description.headerExtensions.push(SDPUtils.parseExtmap(line)); + }); + var wildcardRtcpFb = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-fb:* ').map(SDPUtils.parseRtcpFb); + description.codecs.forEach(function (codec) { + wildcardRtcpFb.forEach(function (fb) { + var duplicate = codec.rtcpFeedback.find(function (existingFeedback) { + return existingFeedback.type === fb.type && existingFeedback.parameter === fb.parameter; + }); + if (!duplicate) { + codec.rtcpFeedback.push(fb); + } + }); + }); + // FIXME: parse rtcp. + return description; +}; + +// Generates parts of the SDP media section describing the capabilities / +// parameters. +SDPUtils.writeRtpDescription = function (kind, caps) { + var sdp = ''; + + // Build the mline. + sdp += 'm=' + kind + ' '; + sdp += caps.codecs.length > 0 ? '9' : '0'; // reject if no codecs. + sdp += ' ' + (caps.profile || 'UDP/TLS/RTP/SAVPF') + ' '; + sdp += caps.codecs.map(function (codec) { + if (codec.preferredPayloadType !== undefined) { + return codec.preferredPayloadType; + } + return codec.payloadType; + }).join(' ') + '\r\n'; + + sdp += 'c=IN IP4 0.0.0.0\r\n'; + sdp += 'a=rtcp:9 IN IP4 0.0.0.0\r\n'; + + // Add a=rtpmap lines for each codec. Also fmtp and rtcp-fb. + caps.codecs.forEach(function (codec) { + sdp += SDPUtils.writeRtpMap(codec); + sdp += SDPUtils.writeFmtp(codec); + sdp += SDPUtils.writeRtcpFb(codec); + }); + var maxptime = 0; + caps.codecs.forEach(function (codec) { + if (codec.maxptime > maxptime) { + maxptime = codec.maxptime; + } + }); + if (maxptime > 0) { + sdp += 'a=maxptime:' + maxptime + '\r\n'; + } + + if (caps.headerExtensions) { + caps.headerExtensions.forEach(function (extension) { + sdp += SDPUtils.writeExtmap(extension); + }); + } + // FIXME: write fecMechanisms. + return sdp; +}; + +// Parses the SDP media section and returns an array of +// RTCRtpEncodingParameters. +SDPUtils.parseRtpEncodingParameters = function (mediaSection) { + var encodingParameters = []; + var description = SDPUtils.parseRtpParameters(mediaSection); + var hasRed = description.fecMechanisms.indexOf('RED') !== -1; + var hasUlpfec = description.fecMechanisms.indexOf('ULPFEC') !== -1; + + // filter a=ssrc:... cname:, ignore PlanB-msid + var ssrcs = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (parts) { + return parts.attribute === 'cname'; + }); + var primarySsrc = ssrcs.length > 0 && ssrcs[0].ssrc; + var secondarySsrc = void 0; + + var flows = SDPUtils.matchPrefix(mediaSection, 'a=ssrc-group:FID').map(function (line) { + var parts = line.substring(17).split(' '); + return parts.map(function (part) { + return parseInt(part, 10); + }); + }); + if (flows.length > 0 && flows[0].length > 1 && flows[0][0] === primarySsrc) { + secondarySsrc = flows[0][1]; + } + + description.codecs.forEach(function (codec) { + if (codec.name.toUpperCase() === 'RTX' && codec.parameters.apt) { + var encParam = { + ssrc: primarySsrc, + codecPayloadType: parseInt(codec.parameters.apt, 10) + }; + if (primarySsrc && secondarySsrc) { + encParam.rtx = { ssrc: secondarySsrc }; + } + encodingParameters.push(encParam); + if (hasRed) { + encParam = JSON.parse(JSON.stringify(encParam)); + encParam.fec = { + ssrc: primarySsrc, + mechanism: hasUlpfec ? 'red+ulpfec' : 'red' + }; + encodingParameters.push(encParam); + } + } + }); + if (encodingParameters.length === 0 && primarySsrc) { + encodingParameters.push({ + ssrc: primarySsrc + }); + } + + // we support both b=AS and b=TIAS but interpret AS as TIAS. + var bandwidth = SDPUtils.matchPrefix(mediaSection, 'b='); + if (bandwidth.length) { + if (bandwidth[0].indexOf('b=TIAS:') === 0) { + bandwidth = parseInt(bandwidth[0].substring(7), 10); + } else if (bandwidth[0].indexOf('b=AS:') === 0) { + // use formula from JSEP to convert b=AS to TIAS value. + bandwidth = parseInt(bandwidth[0].substring(5), 10) * 1000 * 0.95 - 50 * 40 * 8; + } else { + bandwidth = undefined; + } + encodingParameters.forEach(function (params) { + params.maxBitrate = bandwidth; + }); + } + return encodingParameters; +}; + +// parses http://draft.ortc.org/#rtcrtcpparameters* +SDPUtils.parseRtcpParameters = function (mediaSection) { + var rtcpParameters = {}; + + // Gets the first SSRC. Note that with RTX there might be multiple + // SSRCs. + var remoteSsrc = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (obj) { + return obj.attribute === 'cname'; + })[0]; + if (remoteSsrc) { + rtcpParameters.cname = remoteSsrc.value; + rtcpParameters.ssrc = remoteSsrc.ssrc; + } + + // Edge uses the compound attribute instead of reducedSize + // compound is !reducedSize + var rsize = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-rsize'); + rtcpParameters.reducedSize = rsize.length > 0; + rtcpParameters.compound = rsize.length === 0; + + // parses the rtcp-mux attrіbute. + // Note that Edge does not support unmuxed RTCP. + var mux = SDPUtils.matchPrefix(mediaSection, 'a=rtcp-mux'); + rtcpParameters.mux = mux.length > 0; + + return rtcpParameters; +}; + +SDPUtils.writeRtcpParameters = function (rtcpParameters) { + var sdp = ''; + if (rtcpParameters.reducedSize) { + sdp += 'a=rtcp-rsize\r\n'; + } + if (rtcpParameters.mux) { + sdp += 'a=rtcp-mux\r\n'; + } + if (rtcpParameters.ssrc !== undefined && rtcpParameters.cname) { + sdp += 'a=ssrc:' + rtcpParameters.ssrc + ' cname:' + rtcpParameters.cname + '\r\n'; + } + return sdp; +}; + +// parses either a=msid: or a=ssrc:... msid lines and returns +// the id of the MediaStream and MediaStreamTrack. +SDPUtils.parseMsid = function (mediaSection) { + var parts = void 0; + var spec = SDPUtils.matchPrefix(mediaSection, 'a=msid:'); + if (spec.length === 1) { + parts = spec[0].substring(7).split(' '); + return { stream: parts[0], track: parts[1] }; + } + var planB = SDPUtils.matchPrefix(mediaSection, 'a=ssrc:').map(function (line) { + return SDPUtils.parseSsrcMedia(line); + }).filter(function (msidParts) { + return msidParts.attribute === 'msid'; + }); + if (planB.length > 0) { + parts = planB[0].value.split(' '); + return { stream: parts[0], track: parts[1] }; + } +}; + +// SCTP +// parses draft-ietf-mmusic-sctp-sdp-26 first and falls back +// to draft-ietf-mmusic-sctp-sdp-05 +SDPUtils.parseSctpDescription = function (mediaSection) { + var mline = SDPUtils.parseMLine(mediaSection); + var maxSizeLine = SDPUtils.matchPrefix(mediaSection, 'a=max-message-size:'); + var maxMessageSize = void 0; + if (maxSizeLine.length > 0) { + maxMessageSize = parseInt(maxSizeLine[0].substring(19), 10); + } + if (isNaN(maxMessageSize)) { + maxMessageSize = 65536; + } + var sctpPort = SDPUtils.matchPrefix(mediaSection, 'a=sctp-port:'); + if (sctpPort.length > 0) { + return { + port: parseInt(sctpPort[0].substring(12), 10), + protocol: mline.fmt, + maxMessageSize: maxMessageSize + }; + } + var sctpMapLines = SDPUtils.matchPrefix(mediaSection, 'a=sctpmap:'); + if (sctpMapLines.length > 0) { + var parts = sctpMapLines[0].substring(10).split(' '); + return { + port: parseInt(parts[0], 10), + protocol: parts[1], + maxMessageSize: maxMessageSize + }; + } +}; + +// SCTP +// outputs the draft-ietf-mmusic-sctp-sdp-26 version that all browsers +// support by now receiving in this format, unless we originally parsed +// as the draft-ietf-mmusic-sctp-sdp-05 format (indicated by the m-line +// protocol of DTLS/SCTP -- without UDP/ or TCP/) +SDPUtils.writeSctpDescription = function (media, sctp) { + var output = []; + if (media.protocol !== 'DTLS/SCTP') { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.protocol + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctp-port:' + sctp.port + '\r\n']; + } else { + output = ['m=' + media.kind + ' 9 ' + media.protocol + ' ' + sctp.port + '\r\n', 'c=IN IP4 0.0.0.0\r\n', 'a=sctpmap:' + sctp.port + ' ' + sctp.protocol + ' 65535\r\n']; + } + if (sctp.maxMessageSize !== undefined) { + output.push('a=max-message-size:' + sctp.maxMessageSize + '\r\n'); + } + return output.join(''); +}; + +// Generate a session ID for SDP. +// https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-5.2.1 +// recommends using a cryptographically random +ve 64-bit value +// but right now this should be acceptable and within the right range +SDPUtils.generateSessionId = function () { + return Math.random().toString().substr(2, 22); +}; + +// Write boiler plate for start of SDP +// sessId argument is optional - if not supplied it will +// be generated randomly +// sessVersion is optional and defaults to 2 +// sessUser is optional and defaults to 'thisisadapterortc' +SDPUtils.writeSessionBoilerplate = function (sessId, sessVer, sessUser) { + var sessionId = void 0; + var version = sessVer !== undefined ? sessVer : 2; + if (sessId) { + sessionId = sessId; + } else { + sessionId = SDPUtils.generateSessionId(); + } + var user = sessUser || 'thisisadapterortc'; + // FIXME: sess-id should be an NTP timestamp. + return 'v=0\r\n' + 'o=' + user + ' ' + sessionId + ' ' + version + ' IN IP4 127.0.0.1\r\n' + 's=-\r\n' + 't=0 0\r\n'; +}; + +// Gets the direction from the mediaSection or the sessionpart. +SDPUtils.getDirection = function (mediaSection, sessionpart) { + // Look for sendrecv, sendonly, recvonly, inactive, default to sendrecv. + var lines = SDPUtils.splitLines(mediaSection); + for (var i = 0; i < lines.length; i++) { + switch (lines[i]) { + case 'a=sendrecv': + case 'a=sendonly': + case 'a=recvonly': + case 'a=inactive': + return lines[i].substring(2); + default: + // FIXME: What should happen here? + } + } + if (sessionpart) { + return SDPUtils.getDirection(sessionpart); + } + return 'sendrecv'; +}; + +SDPUtils.getKind = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var mline = lines[0].split(' '); + return mline[0].substring(2); +}; + +SDPUtils.isRejected = function (mediaSection) { + return mediaSection.split(' ', 2)[1] === '0'; +}; + +SDPUtils.parseMLine = function (mediaSection) { + var lines = SDPUtils.splitLines(mediaSection); + var parts = lines[0].substring(2).split(' '); + return { + kind: parts[0], + port: parseInt(parts[1], 10), + protocol: parts[2], + fmt: parts.slice(3).join(' ') + }; +}; + +SDPUtils.parseOLine = function (mediaSection) { + var line = SDPUtils.matchPrefix(mediaSection, 'o=')[0]; + var parts = line.substring(2).split(' '); + return { + username: parts[0], + sessionId: parts[1], + sessionVersion: parseInt(parts[2], 10), + netType: parts[3], + addressType: parts[4], + address: parts[5] + }; +}; + +// a very naive interpretation of a valid SDP. +SDPUtils.isValidSDP = function (blob) { + if (typeof blob !== 'string' || blob.length === 0) { + return false; + } + var lines = SDPUtils.splitLines(blob); + for (var i = 0; i < lines.length; i++) { + if (lines[i].length < 2 || lines[i].charAt(1) !== '=') { + return false; + } + // TODO: check the modifier a bit more. + } + return true; +}; + +// Expose public methods. +if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object') { + module.exports = SDPUtils; +} +},{}]},{},[1]); diff --git a/node_modules/webrtc-adapter/out/esbuild.js b/node_modules/webrtc-adapter/out/esbuild.js new file mode 100644 index 0000000..0f8320a --- /dev/null +++ b/node_modules/webrtc-adapter/out/esbuild.js @@ -0,0 +1,35 @@ +"use strict";(()=>{var P=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var x=P(E=>{"use strict";Object.defineProperty(E,"__esModule",{value:!0});var J=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};E.extractVersion=F;E.wrapPeerConnectionEvent=Te;E.disableLog=Pe;E.disableWarnings=_e;E.log=Ee;E.deprecated=Me;E.detectBrowser=be;E.compactObject=ee;E.walkStats=N;E.filterStats=ke;function Re(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Z=!0,w=!0;function F(e,t,r){var n=e.match(t);return n&&n.length>=r&&parseInt(n[r],10)}function Te(e,t,r){if(!!e.RTCPeerConnection){var n=e.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(u,c){if(u!==t)return i.apply(this,arguments);var p=function(o){var d=r(o);d&&(c.handleEvent?c.handleEvent(d):c(d))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(c,p),i.apply(this,[u,p])};var a=n.removeEventListener;n.removeEventListener=function(u,c){if(u!==t||!this._eventMap||!this._eventMap[t])return a.apply(this,arguments);if(!this._eventMap[t].has(c))return a.apply(this,arguments);var p=this._eventMap[t].get(c);return this._eventMap[t].delete(c),this._eventMap[t].size===0&&delete this._eventMap[t],Object.keys(this._eventMap).length===0&&delete this._eventMap,a.apply(this,[u,p])},Object.defineProperty(n,"on"+t,{get:function(){return this["_on"+t]},set:function(c){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),c&&this.addEventListener(t,this["_on"+t]=c)},enumerable:!0,configurable:!0})}}function Pe(e){return typeof e!="boolean"?new Error("Argument type: "+(typeof e>"u"?"undefined":J(e))+". Please use a boolean."):(Z=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function _e(e){return typeof e!="boolean"?new Error("Argument type: "+(typeof e>"u"?"undefined":J(e))+". Please use a boolean."):(w=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Ee(){if((typeof window>"u"?"undefined":J(window))==="object"){if(Z)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Me(e,t){!w||console.warn(e+" is deprecated, please use "+t+" instead.")}function be(e){var t={browser:null,version:null};if(typeof e>"u"||!e.navigator)return t.browser="Not a browser.",t;var r=e.navigator;if(r.mozGetUserMedia)t.browser="firefox",t.version=F(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||e.isSecureContext===!1&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=F(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(e.RTCPeerConnection&&r.userAgent.match(/AppleWebKit\/(\d+)\./))t.browser="safari",t.version=F(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype;else return t.browser="Not a supported browser.",t;return t}function Q(e){return Object.prototype.toString.call(e)==="[object Object]"}function ee(e){return Q(e)?Object.keys(e).reduce(function(t,r){var n=Q(e[r]),i=n?ee(e[r]):e[r],a=n&&!Object.keys(i).length;return i===void 0||a?t:Object.assign(t,Re({},r,i))},{}):e}function N(e,t,r){!t||r.has(t.id)||(r.set(t.id,t),Object.keys(t).forEach(function(n){n.endsWith("Id")?N(e,e.get(t[n]),r):n.endsWith("Ids")&&t[n].forEach(function(i){N(e,e.get(i),r)})}))}function ke(e,t,r){var n=r?"outbound-rtp":"inbound-rtp",i=new Map;if(t===null)return i;var a=[];return e.forEach(function(u){u.type==="track"&&u.trackIdentifier===t.id&&a.push(u)}),a.forEach(function(u){e.forEach(function(c){c.type===n&&c.trackId===u.id&&N(e,c,i)})}),i}});var re=P(j=>{"use strict";Object.defineProperty(j,"__esModule",{value:!0});var I=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};j.shimGetUserMedia=Ie;var xe=x(),De=Oe(xe);function Oe(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}var te=De.log;function Ie(e,t){var r=e&&e.navigator;if(!!r.mediaDevices){var n=function(s){if((typeof s>"u"?"undefined":I(s))!=="object"||s.mandatory||s.optional)return s;var o={};return Object.keys(s).forEach(function(d){if(!(d==="require"||d==="advanced"||d==="mediaSource")){var m=I(s[d])==="object"?s[d]:{ideal:s[d]};m.exact!==void 0&&typeof m.exact=="number"&&(m.min=m.max=m.exact);var l=function(y,g){return y?y+g.charAt(0).toUpperCase()+g.slice(1):g==="deviceId"?"sourceId":g};if(m.ideal!==void 0){o.optional=o.optional||[];var v={};typeof m.ideal=="number"?(v[l("min",d)]=m.ideal,o.optional.push(v),v={},v[l("max",d)]=m.ideal,o.optional.push(v)):(v[l("",d)]=m.ideal,o.optional.push(v))}m.exact!==void 0&&typeof m.exact!="number"?(o.mandatory=o.mandatory||{},o.mandatory[l("",d)]=m.exact):["min","max"].forEach(function(h){m[h]!==void 0&&(o.mandatory=o.mandatory||{},o.mandatory[l(h,d)]=m[h])})}}),s.advanced&&(o.optional=(o.optional||[]).concat(s.advanced)),o},i=function(s,o){if(t.version>=61)return o(s);if(s=JSON.parse(JSON.stringify(s)),s&&I(s.audio)==="object"){var d=function(y,g,U){g in y&&!(U in y)&&(y[U]=y[g],delete y[g])};s=JSON.parse(JSON.stringify(s)),d(s.audio,"autoGainControl","googAutoGainControl"),d(s.audio,"noiseSuppression","googNoiseSuppression"),s.audio=n(s.audio)}if(s&&I(s.video)==="object"){var m=s.video.facingMode;m=m&&((typeof m>"u"?"undefined":I(m))==="object"?m:{ideal:m});var l=t.version<66;if(m&&(m.exact==="user"||m.exact==="environment"||m.ideal==="user"||m.ideal==="environment")&&!(r.mediaDevices.getSupportedConstraints&&r.mediaDevices.getSupportedConstraints().facingMode&&!l)){delete s.video.facingMode;var v=void 0;if(m.exact==="environment"||m.ideal==="environment"?v=["back","rear"]:(m.exact==="user"||m.ideal==="user")&&(v=["front"]),v)return r.mediaDevices.enumerateDevices().then(function(h){h=h.filter(function(g){return g.kind==="videoinput"});var y=h.find(function(g){return v.some(function(U){return g.label.toLowerCase().includes(U)})});return!y&&h.length&&v.includes("back")&&(y=h[h.length-1]),y&&(s.video.deviceId=m.exact?{exact:y.deviceId}:{ideal:y.deviceId}),s.video=n(s.video),te("chrome: "+JSON.stringify(s)),o(s)})}s.video=n(s.video)}return te("chrome: "+JSON.stringify(s)),o(s)},a=function(s){return t.version>=64?s:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[s.name]||s.name,message:s.message,constraint:s.constraint||s.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},u=function(s,o,d){i(s,function(m){r.webkitGetUserMedia(m,o,function(l){d&&d(a(l))})})};if(r.getUserMedia=u.bind(r),r.mediaDevices.getUserMedia){var c=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(p){return i(p,function(s){return c(s).then(function(o){if(s.audio&&!o.getAudioTracks().length||s.video&&!o.getVideoTracks().length)throw o.getTracks().forEach(function(d){d.stop()}),new DOMException("","NotFoundError");return o},function(o){return Promise.reject(a(o))})})}}}}});var ne=P(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.shimGetDisplayMedia=Le;function Le(e,t){if(!(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices)&&!!e.navigator.mediaDevices){if(typeof t!="function"){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}e.navigator.mediaDevices.getDisplayMedia=function(n){return t(n).then(function(i){var a=n.video&&n.video.width,u=n.video&&n.video.height,c=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:i,maxFrameRate:c||3}},a&&(n.video.mandatory.maxWidth=a),u&&(n.video.mandatory.maxHeight=u),e.navigator.mediaDevices.getUserMedia(n)})}}}});var ie=P(K=>{"use strict";Object.defineProperty(K,"__esModule",{value:!0});K.shimSelectAudioOutput=Ae;function Ae(e){"HTMLMediaElement"in e&&"setSinkId"in e.HTMLMediaElement.prototype&&(!(e.navigator&&e.navigator.mediaDevices)||!e.navigator.mediaDevices.enumerateDevices||e.navigator.mediaDevices.selectAudioOutput||(e.navigator.mediaDevices.selectAudioOutput=function(){return e.navigator.mediaDevices.enumerateDevices().then(function(t){return t.filter(function(r){return r.kind==="audiooutput"})})}))}});var oe=P(S=>{"use strict";Object.defineProperty(S,"__esModule",{value:!0});S.shimSelectAudioOutput=S.shimGetDisplayMedia=S.shimGetUserMedia=void 0;var z=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ge=re();Object.defineProperty(S,"shimGetUserMedia",{enumerable:!0,get:function(){return Ge.shimGetUserMedia}});var Ue=ne();Object.defineProperty(S,"shimGetDisplayMedia",{enumerable:!0,get:function(){return Ue.shimGetDisplayMedia}});var Fe=ie();Object.defineProperty(S,"shimSelectAudioOutput",{enumerable:!0,get:function(){return Fe.shimSelectAudioOutput}});S.shimMediaStream=qe;S.shimOnTrack=Ve;S.shimGetSendersWithDtmf=Je;S.shimGetStats=je;S.shimSenderReceiverGetStats=Be;S.shimAddTrackRemoveTrackWithNative=se;S.shimAddTrackRemoveTrack=Ke;S.shimPeerConnection=We;S.fixNegotiationNeeded=He;var Ne=x(),L=ze(Ne);function ze(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function ae(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function qe(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Ve(e){if((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(n){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=n)},enumerable:!0,configurable:!0});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return this._ontrackpoly||(this._ontrackpoly=function(i){i.stream.addEventListener("addtrack",function(a){var u=void 0;e.RTCPeerConnection.prototype.getReceivers?u=n.getReceivers().find(function(p){return p.track&&p.track.id===a.track.id}):u={track:a.track};var c=new Event("track");c.track=a.track,c.receiver=u,c.transceiver={receiver:u},c.streams=[i.stream],n.dispatchEvent(c)}),i.stream.getTracks().forEach(function(a){var u=void 0;e.RTCPeerConnection.prototype.getReceivers?u=n.getReceivers().find(function(p){return p.track&&p.track.id===a.id}):u={track:a};var c=new Event("track");c.track=a,c.receiver=u,c.transceiver={receiver:u},c.streams=[i.stream],n.dispatchEvent(c)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else L.wrapPeerConnectionEvent(e,"track",function(r){return r.transceiver||Object.defineProperty(r,"transceiver",{value:{receiver:r.receiver}}),r})}function Je(e){if((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var t=function(p,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=p.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:p}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(p,s){var o=r.apply(this,arguments);return o||(o=t(this,p),this._senders.push(o)),o};var n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(p){n.apply(this,arguments);var s=this._senders.indexOf(p);s!==-1&&this._senders.splice(s,1)}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(p){var s=this;this._senders=this._senders||[],i.apply(this,[p]),p.getTracks().forEach(function(o){s._senders.push(t(s,o))})};var a=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(p){var s=this;this._senders=this._senders||[],a.apply(this,[p]),p.getTracks().forEach(function(o){var d=s._senders.find(function(m){return m.track===o});d&&s._senders.splice(s._senders.indexOf(d),1)})}}else if((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){var u=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var p=this,s=u.apply(this,[]);return s.forEach(function(o){return o._pc=p}),s},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function je(e){if(!!e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var n=this,i=Array.prototype.slice.call(arguments),a=i[0],u=i[1],c=i[2];if(arguments.length>0&&typeof a=="function")return t.apply(this,arguments);if(t.length===0&&(arguments.length===0||typeof a!="function"))return t.apply(this,[]);var p=function(m){var l={},v=m.result();return v.forEach(function(h){var y={id:h.id,timestamp:h.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[h.type]||h.type};h.names().forEach(function(g){y[g]=h.stat(g)}),l[y.id]=y}),l},s=function(m){return new Map(Object.keys(m).map(function(l){return[l,m[l]]}))};if(arguments.length>=2){var o=function(m){u(s(p(m)))};return t.apply(this,[o,a])}return new Promise(function(d,m){t.apply(n,[function(l){d(s(p(l)))},m])}).then(u,c)}}}function Be(e){if(!!((typeof e>"u"?"undefined":z(e))==="object"&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver)){if(!("getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var u=this,c=t.apply(this,[]);return c.forEach(function(p){return p._pc=u}),c});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var u=r.apply(this,arguments);return u._pc=this,u}),e.RTCRtpSender.prototype.getStats=function(){var u=this;return this._pc.getStats().then(function(c){return L.filterStats(c,u.track,!0)})}}if(!("getStats"in e.RTCRtpReceiver.prototype)){var n=e.RTCPeerConnection.prototype.getReceivers;n&&(e.RTCPeerConnection.prototype.getReceivers=function(){var u=this,c=n.apply(this,[]);return c.forEach(function(p){return p._pc=u}),c}),L.wrapPeerConnectionEvent(e,"track",function(a){return a.receiver._pc=a.srcElement,a}),e.RTCRtpReceiver.prototype.getStats=function(){var u=this;return this._pc.getStats().then(function(c){return L.filterStats(c,u.track,!1)})}}if("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype){var i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){var u=arguments[0],c=void 0,p=void 0,s=void 0;return this.getSenders().forEach(function(o){o.track===u&&(c?s=!0:c=o)}),this.getReceivers().forEach(function(o){return o.track===u&&(p?s=!0:p=o),o.track===u}),s||c&&p?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):c?c.getStats():p?p.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}}}function se(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var u=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(c){return u._shimmedLocalStreams[c][0]})};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(u,c){if(!c)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var p=t.apply(this,arguments);return this._shimmedLocalStreams[c.id]?this._shimmedLocalStreams[c.id].indexOf(p)===-1&&this._shimmedLocalStreams[c.id].push(p):this._shimmedLocalStreams[c.id]=[c,p],p};var r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(u){var c=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},u.getTracks().forEach(function(o){var d=c.getSenders().find(function(m){return m.track===o});if(d)throw new DOMException("Track already exists.","InvalidAccessError")});var p=this.getSenders();r.apply(this,arguments);var s=this.getSenders().filter(function(o){return p.indexOf(o)===-1});this._shimmedLocalStreams[u.id]=[u].concat(s)};var n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(u){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[u.id],n.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(u){var c=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},u&&Object.keys(this._shimmedLocalStreams).forEach(function(p){var s=c._shimmedLocalStreams[p].indexOf(u);s!==-1&&c._shimmedLocalStreams[p].splice(s,1),c._shimmedLocalStreams[p].length===1&&delete c._shimmedLocalStreams[p]}),i.apply(this,arguments)}}function Ke(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return se(e);var r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var o=this,d=r.apply(this);return this._reverseStreams=this._reverseStreams||{},d.map(function(m){return o._reverseStreams[m.id]})};var n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(o){var d=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},o.getTracks().forEach(function(l){var v=d.getSenders().find(function(h){return h.track===l});if(v)throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[o.id]){var m=new e.MediaStream(o.getTracks());this._streams[o.id]=m,this._reverseStreams[m.id]=o,o=m}n.apply(this,[o])};var i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(o){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[o.id]||o]),delete this._reverseStreams[this._streams[o.id]?this._streams[o.id].id:o.id],delete this._streams[o.id]},e.RTCPeerConnection.prototype.addTrack=function(o,d){var m=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var l=[].slice.call(arguments,1);if(l.length!==1||!l[0].getTracks().find(function(g){return g===o}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");var v=this.getSenders().find(function(g){return g.track===o});if(v)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var h=this._streams[d.id];if(h)h.addTrack(o),Promise.resolve().then(function(){m.dispatchEvent(new Event("negotiationneeded"))});else{var y=new e.MediaStream([o]);this._streams[d.id]=y,this._reverseStreams[y.id]=d,this.addStream(y)}return this.getSenders().find(function(g){return g.track===o})};function a(s,o){var d=o.sdp;return Object.keys(s._reverseStreams||[]).forEach(function(m){var l=s._reverseStreams[m],v=s._streams[l.id];d=d.replace(new RegExp(v.id,"g"),l.id)}),new RTCSessionDescription({type:o.type,sdp:d})}function u(s,o){var d=o.sdp;return Object.keys(s._reverseStreams||[]).forEach(function(m){var l=s._reverseStreams[m],v=s._streams[l.id];d=d.replace(new RegExp(l.id,"g"),v.id)}),new RTCSessionDescription({type:o.type,sdp:d})}["createOffer","createAnswer"].forEach(function(s){var o=e.RTCPeerConnection.prototype[s],d=ae({},s,function(){var m=this,l=arguments,v=arguments.length&&typeof arguments[0]=="function";return v?o.apply(this,[function(h){var y=a(m,h);l[0].apply(null,[y])},function(h){l[1]&&l[1].apply(null,h)},arguments[2]]):o.apply(this,arguments).then(function(h){return a(m,h)})});e.RTCPeerConnection.prototype[s]=d[s]});var c=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?c.apply(this,arguments):(arguments[0]=u(this,arguments[0]),c.apply(this,arguments))};var p=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var o=p.get.apply(this);return o.type===""?o:a(this,o)}}),e.RTCPeerConnection.prototype.removeTrack=function(o){var d=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!o._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");var m=o._pc===this;if(!m)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};var l=void 0;Object.keys(this._streams).forEach(function(v){var h=d._streams[v].getTracks().find(function(y){return o.track===y});h&&(l=d._streams[v])}),l&&(l.getTracks().length===1?this.removeStream(this._reverseStreams[l.id]):l.removeTrack(o.track),this.dispatchEvent(new Event("negotiationneeded")))}}function We(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),!!e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(r){var n=e.RTCPeerConnection.prototype[r],i=ae({},r,function(){return arguments[0]=new(r==="addIceCandidate"?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)});e.RTCPeerConnection.prototype[r]=i[r]})}function He(e,t){L.wrapPeerConnectionEvent(e,"negotiationneeded",function(r){var n=r.target;if(!((t.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return r})}});var ce=P(H=>{"use strict";Object.defineProperty(H,"__esModule",{value:!0});var W=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};H.shimGetUserMedia=Qe;var Xe=x(),Ye=$e(Xe);function $e(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function Qe(e,t){var r=e&&e.navigator,n=e&&e.MediaStreamTrack;if(r.getUserMedia=function(p,s,o){Ye.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(p).then(s,o)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){var i=function(s,o,d){o in s&&!(d in s)&&(s[d]=s[o],delete s[o])},a=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(p){return(typeof p>"u"?"undefined":W(p))==="object"&&W(p.audio)==="object"&&(p=JSON.parse(JSON.stringify(p)),i(p.audio,"autoGainControl","mozAutoGainControl"),i(p.audio,"noiseSuppression","mozNoiseSuppression")),a(p)},n&&n.prototype.getSettings){var u=n.prototype.getSettings;n.prototype.getSettings=function(){var p=u.apply(this,arguments);return i(p,"mozAutoGainControl","autoGainControl"),i(p,"mozNoiseSuppression","noiseSuppression"),p}}if(n&&n.prototype.applyConstraints){var c=n.prototype.applyConstraints;n.prototype.applyConstraints=function(p){return this.kind==="audio"&&(typeof p>"u"?"undefined":W(p))==="object"&&(p=JSON.parse(JSON.stringify(p)),i(p,"autoGainControl","mozAutoGainControl"),i(p,"noiseSuppression","mozNoiseSuppression")),c.apply(this,[p])}}}}});var ue=P(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.shimGetDisplayMedia=Ze;function Ze(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||!e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){var i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return n.video===!0?n.video={mediaSource:t}:n.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(n)})}});var fe=P(R=>{"use strict";Object.defineProperty(R,"__esModule",{value:!0});R.shimGetDisplayMedia=R.shimGetUserMedia=void 0;var D=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},we=ce();Object.defineProperty(R,"shimGetUserMedia",{enumerable:!0,get:function(){return we.shimGetUserMedia}});var et=ue();Object.defineProperty(R,"shimGetDisplayMedia",{enumerable:!0,get:function(){return et.shimGetDisplayMedia}});R.shimOnTrack=it;R.shimPeerConnection=at;R.shimSenderGetStats=st;R.shimReceiverGetStats=ot;R.shimRemoveStream=ct;R.shimRTCDataChannel=ut;R.shimAddTransceiver=pt;R.shimGetParameters=ft;R.shimCreateOffer=dt;R.shimCreateAnswer=mt;var tt=x(),pe=rt(tt);function rt(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function nt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function it(e){(typeof e>"u"?"undefined":D(e))==="object"&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function at(e,t){if(!((typeof e>"u"?"undefined":D(e))!=="object"||!(e.RTCPeerConnection||e.mozRTCPeerConnection))){!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){var a=e.RTCPeerConnection.prototype[i],u=nt({},i,function(){return arguments[0]=new(i==="addIceCandidate"?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),a.apply(this,arguments)});e.RTCPeerConnection.prototype[i]=u[i]});var r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var a=Array.prototype.slice.call(arguments),u=a[0],c=a[1],p=a[2];return n.apply(this,[u||null]).then(function(s){if(t.version<53&&!c)try{s.forEach(function(o){o.type=r[o.type]||o.type})}catch(o){if(o.name!=="TypeError")throw o;s.forEach(function(d,m){s.set(m,Object.assign({},d,{type:r[d.type]||d.type}))})}return s}).then(c,p)}}}function st(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection&&e.RTCRtpSender)&&!(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var i=this,a=t.apply(this,[]);return a.forEach(function(u){return u._pc=i}),a});var r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){var i=r.apply(this,arguments);return i._pc=this,i}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}}function ot(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection&&e.RTCRtpSender)&&!(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)){var t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){var n=this,i=t.apply(this,[]);return i.forEach(function(a){return a._pc=n}),i}),pe.wrapPeerConnectionEvent(e,"track",function(r){return r.receiver._pc=r.srcElement,r}),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function ct(e){!e.RTCPeerConnection||"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(r){var n=this;pe.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(i){i.track&&r.getTracks().includes(i.track)&&n.removeTrack(i)})})}function ut(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function pt(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var n=arguments[1],i=n&&"sendEncodings"in n;i&&n.sendEncodings.forEach(function(p){if("rid"in p){var s=/^[a-z0-9]{0,16}$/i;if(!s.test(p.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in p&&!(parseFloat(p.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in p&&!(parseFloat(p.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var a=t.apply(this,arguments);if(i){var u=a.sender,c=u.getParameters();(!("encodings"in c)||c.encodings.length===1&&Object.keys(c.encodings[0]).length===0)&&(c.encodings=n.sendEncodings,u.sendEncodings=n.sendEncodings,this.setParametersPromises.push(u.setParameters(c).then(function(){delete u.sendEncodings}).catch(function(){delete u.sendEncodings})))}return a})}}function ft(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCRtpSender)){var t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){var n=t.apply(this,arguments);return"encodings"in n||(n.encodings=[].concat(this.sendEncodings||[{}])),n})}}function dt(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){var n=this,i=arguments;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return t.apply(n,i)}).finally(function(){n.setParametersPromises=[]}):t.apply(this,arguments)}}}function mt(e){if(!!((typeof e>"u"?"undefined":D(e))==="object"&&e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){var n=this,i=arguments;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return t.apply(n,i)}).finally(function(){n.setParametersPromises=[]}):t.apply(this,arguments)}}}});var le=P(M=>{"use strict";Object.defineProperty(M,"__esModule",{value:!0});var A=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};M.shimLocalStreamsAPI=vt;M.shimRemoteStreamsAPI=yt;M.shimCallbacksAPI=gt;M.shimGetUserMedia=Ct;M.shimConstraints=me;M.shimRTCIceServerUrls=St;M.shimTrackEventTransceiver=Rt;M.shimCreateOfferLegacy=Tt;M.shimAudioContext=Pt;var lt=x(),de=ht(lt);function ht(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function vt(e){if(!((typeof e>"u"?"undefined":A(e))!=="object"||!e.RTCPeerConnection)){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(n){var i=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(n)||this._localStreams.push(n),n.getAudioTracks().forEach(function(a){return t.call(i,a,n)}),n.getVideoTracks().forEach(function(a){return t.call(i,a,n)})},e.RTCPeerConnection.prototype.addTrack=function(n){for(var i=this,a=arguments.length,u=Array(a>1?a-1:0),c=1;c"u"?"undefined":A(e))!=="object"||!e.RTCPeerConnection)&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(n){var i=this;this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=n),this.addEventListener("track",this._onaddstreampoly=function(a){a.streams.forEach(function(u){if(i._remoteStreams||(i._remoteStreams=[]),!i._remoteStreams.includes(u)){i._remoteStreams.push(u);var c=new Event("addstream");c.stream=u,i.dispatchEvent(c)}})})}});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(function(a){if(n._remoteStreams||(n._remoteStreams=[]),!(n._remoteStreams.indexOf(a)>=0)){n._remoteStreams.push(a);var u=new Event("addstream");u.stream=a,n.dispatchEvent(u)}})}),t.apply(n,arguments)}}}function gt(e){if(!((typeof e>"u"?"undefined":A(e))!=="object"||!e.RTCPeerConnection)){var t=e.RTCPeerConnection.prototype,r=t.createOffer,n=t.createAnswer,i=t.setLocalDescription,a=t.setRemoteDescription,u=t.addIceCandidate;t.createOffer=function(s,o){var d=arguments.length>=2?arguments[2]:arguments[0],m=r.apply(this,[d]);return o?(m.then(s,o),Promise.resolve()):m},t.createAnswer=function(s,o){var d=arguments.length>=2?arguments[2]:arguments[0],m=n.apply(this,[d]);return o?(m.then(s,o),Promise.resolve()):m};var c=function(s,o,d){var m=i.apply(this,[s]);return d?(m.then(o,d),Promise.resolve()):m};t.setLocalDescription=c,c=function(s,o,d){var m=a.apply(this,[s]);return d?(m.then(o,d),Promise.resolve()):m},t.setRemoteDescription=c,c=function(s,o,d){var m=u.apply(this,[s]);return d?(m.then(o,d),Promise.resolve()):m},t.addIceCandidate=c}}function Ct(e){var t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){var r=t.mediaDevices,n=r.getUserMedia.bind(r);t.mediaDevices.getUserMedia=function(i){return n(me(i))}}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(a,u,c){t.mediaDevices.getUserMedia(a).then(u,c)}.bind(t))}function me(e){return e&&e.video!==void 0?Object.assign({},e,{video:de.compactObject(e.video)}):e}function St(e){if(!!e.RTCPeerConnection){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(n,i){if(n&&n.iceServers){for(var a=[],u=0;u"u"?"undefined":A(e))==="object"&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function Tt(e){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(n){if(n){typeof n.offerToReceiveAudio<"u"&&(n.offerToReceiveAudio=!!n.offerToReceiveAudio);var i=this.getTransceivers().find(function(u){return u.receiver.track.kind==="audio"});n.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):n.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio",{direction:"recvonly"}),typeof n.offerToReceiveVideo<"u"&&(n.offerToReceiveVideo=!!n.offerToReceiveVideo);var a=this.getTransceivers().find(function(u){return u.receiver.track.kind==="video"});n.offerToReceiveVideo===!1&&a?a.direction==="sendrecv"?a.setDirection?a.setDirection("sendonly"):a.direction="sendonly":a.direction==="recvonly"&&(a.setDirection?a.setDirection("inactive"):a.direction="inactive"):n.offerToReceiveVideo===!0&&!a&&this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Pt(e){(typeof e>"u"?"undefined":A(e))!=="object"||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}});var Y=P((rr,q)=>{"use strict";var he=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f={};f.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)};f.localCName=f.generateIdentifier();f.splitLines=function(e){return e.trim().split(` +`).map(function(t){return t.trim()})};f.splitSections=function(e){var t=e.split(` +m=`);return t.map(function(r,n){return(n>0?"m="+r:r).trim()+`\r +`})};f.getDescription=function(e){var t=f.splitSections(e);return t&&t[0]};f.getMediaSections=function(e){var t=f.splitSections(e);return t.shift(),t};f.matchPrefix=function(e,t){return f.splitLines(e).filter(function(r){return r.indexOf(t)===0})};f.parseCandidate=function(e){var t=void 0;e.indexOf("a=candidate:")===0?t=e.substring(12).split(" "):t=e.substring(10).split(" ");for(var r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},n=8;n0?t[0].split("/")[1]:"sendrecv",uri:t[1]}};f.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&e.direction!=="sendrecv"?"/"+e.direction:"")+" "+e.uri+`\r +`};f.parseFmtp=function(e){for(var t={},r=void 0,n=e.substr(e.indexOf(" ")+1).split(";"),i=0;i-1?(r.attribute=e.substr(t+1,n-t-1),r.value=e.substr(n+1)):r.attribute=e.substr(t+1),r};f.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(function(r){return parseInt(r,10)})}};f.getMid=function(e){var t=f.matchPrefix(e,"a=mid:")[0];if(t)return t.substr(6)};f.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}};f.getDtlsParameters=function(e,t){var r=f.matchPrefix(e+t,"a=fingerprint:");return{role:"auto",fingerprints:r.map(f.parseFingerprint)}};f.writeDtlsParameters=function(e,t){var r="a=setup:"+t+`\r +`;return e.fingerprints.forEach(function(n){r+="a=fingerprint:"+n.algorithm+" "+n.value+`\r +`}),r};f.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}};f.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+(he(e.keyParams)==="object"?f.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+`\r +`};f.parseCryptoKeyParams=function(e){if(e.indexOf("inline:")!==0)return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}};f.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")};f.getCryptoParameters=function(e,t){var r=f.matchPrefix(e+t,"a=crypto:");return r.map(f.parseCryptoLine)};f.getIceParameters=function(e,t){var r=f.matchPrefix(e+t,"a=ice-ufrag:")[0],n=f.matchPrefix(e+t,"a=ice-pwd:")[0];return r&&n?{usernameFragment:r.substr(12),password:n.substr(10)}:null};f.writeIceParameters=function(e){var t="a=ice-ufrag:"+e.usernameFragment+`\r +a=ice-pwd:`+e.password+`\r +`;return e.iceLite&&(t+=`a=ice-lite\r +`),t};f.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=f.splitLines(e),n=r[0].split(" "),i=3;i0?"9":"0",r+=" UDP/TLS/RTP/SAVPF ",r+=t.codecs.map(function(i){return i.preferredPayloadType!==void 0?i.preferredPayloadType:i.payloadType}).join(" ")+`\r +`,r+=`c=IN IP4 0.0.0.0\r +`,r+=`a=rtcp:9 IN IP4 0.0.0.0\r +`,t.codecs.forEach(function(i){r+=f.writeRtpMap(i),r+=f.writeFmtp(i),r+=f.writeRtcpFb(i)});var n=0;return t.codecs.forEach(function(i){i.maxptime>n&&(n=i.maxptime)}),n>0&&(r+="a=maxptime:"+n+`\r +`),t.headerExtensions&&t.headerExtensions.forEach(function(i){r+=f.writeExtmap(i)}),r};f.parseRtpEncodingParameters=function(e){var t=[],r=f.parseRtpParameters(e),n=r.fecMechanisms.indexOf("RED")!==-1,i=r.fecMechanisms.indexOf("ULPFEC")!==-1,a=f.matchPrefix(e,"a=ssrc:").map(function(o){return f.parseSsrcMedia(o)}).filter(function(o){return o.attribute==="cname"}),u=a.length>0&&a[0].ssrc,c=void 0,p=f.matchPrefix(e,"a=ssrc-group:FID").map(function(o){var d=o.substr(17).split(" ");return d.map(function(m){return parseInt(m,10)})});p.length>0&&p[0].length>1&&p[0][0]===u&&(c=p[0][1]),r.codecs.forEach(function(o){if(o.name.toUpperCase()==="RTX"&&o.parameters.apt){var d={ssrc:u,codecPayloadType:parseInt(o.parameters.apt,10)};u&&c&&(d.rtx={ssrc:c}),t.push(d),n&&(d=JSON.parse(JSON.stringify(d)),d.fec={ssrc:u,mechanism:i?"red+ulpfec":"red"},t.push(d))}}),t.length===0&&u&&t.push({ssrc:u});var s=f.matchPrefix(e,"b=");return s.length&&(s[0].indexOf("b=TIAS:")===0?s=parseInt(s[0].substr(7),10):s[0].indexOf("b=AS:")===0?s=parseInt(s[0].substr(5),10)*1e3*.95-50*40*8:s=void 0,t.forEach(function(o){o.maxBitrate=s})),t};f.parseRtcpParameters=function(e){var t={},r=f.matchPrefix(e,"a=ssrc:").map(function(a){return f.parseSsrcMedia(a)}).filter(function(a){return a.attribute==="cname"})[0];r&&(t.cname=r.value,t.ssrc=r.ssrc);var n=f.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=n.length>0,t.compound=n.length===0;var i=f.matchPrefix(e,"a=rtcp-mux");return t.mux=i.length>0,t};f.writeRtcpParameters=function(e){var t="";return e.reducedSize&&(t+=`a=rtcp-rsize\r +`),e.mux&&(t+=`a=rtcp-mux\r +`),e.ssrc!==void 0&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+`\r +`),t};f.parseMsid=function(e){var t=void 0,r=f.matchPrefix(e,"a=msid:");if(r.length===1)return t=r[0].substr(7).split(" "),{stream:t[0],track:t[1]};var n=f.matchPrefix(e,"a=ssrc:").map(function(i){return f.parseSsrcMedia(i)}).filter(function(i){return i.attribute==="msid"});if(n.length>0)return t=n[0].value.split(" "),{stream:t[0],track:t[1]}};f.parseSctpDescription=function(e){var t=f.parseMLine(e),r=f.matchPrefix(e,"a=max-message-size:"),n=void 0;r.length>0&&(n=parseInt(r[0].substr(19),10)),isNaN(n)&&(n=65536);var i=f.matchPrefix(e,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substr(12),10),protocol:t.fmt,maxMessageSize:n};var a=f.matchPrefix(e,"a=sctpmap:");if(a.length>0){var u=a[0].substr(10).split(" ");return{port:parseInt(u[0],10),protocol:u[1],maxMessageSize:n}}};f.writeSctpDescription=function(e,t){var r=[];return e.protocol!=="DTLS/SCTP"?r=["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+`\r +`,`c=IN IP4 0.0.0.0\r +`,"a=sctp-port:"+t.port+`\r +`]:r=["m="+e.kind+" 9 "+e.protocol+" "+t.port+`\r +`,`c=IN IP4 0.0.0.0\r +`,"a=sctpmap:"+t.port+" "+t.protocol+` 65535\r +`],t.maxMessageSize!==void 0&&r.push("a=max-message-size:"+t.maxMessageSize+`\r +`),r.join("")};f.generateSessionId=function(){return Math.random().toString().substr(2,21)};f.writeSessionBoilerplate=function(e,t,r){var n=void 0,i=t!==void 0?t:2;e?n=e:n=f.generateSessionId();var a=r||"thisisadapterortc";return`v=0\r +o=`+a+" "+n+" "+i+` IN IP4 127.0.0.1\r +s=-\r +t=0 0\r +`};f.getDirection=function(e,t){for(var r=f.splitLines(e),n=0;n"u"?"undefined":he(q))==="object"&&(q.exports=f)});var ge=P(k=>{"use strict";Object.defineProperty(k,"__esModule",{value:!0});var ve=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};k.shimRTCIceCandidate=kt;k.shimMaxMessageSize=xt;k.shimSendThrowTypeError=Dt;k.shimConnectionState=Ot;k.removeExtmapAllowMixed=It;k.shimAddIceCandidateNullOrEmpty=Lt;k.shimParameterlessSetLocalDescription=At;var _t=Y(),V=bt(_t),Et=x(),ye=Mt(Et);function Mt(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function bt(e){return e&&e.__esModule?e:{default:e}}function kt(e){if(!(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)){var t=e.RTCIceCandidate;e.RTCIceCandidate=function(n){if((typeof n>"u"?"undefined":ve(n))==="object"&&n.candidate&&n.candidate.indexOf("a=")===0&&(n=JSON.parse(JSON.stringify(n)),n.candidate=n.candidate.substr(2)),n.candidate&&n.candidate.length){var i=new t(n),a=V.default.parseCandidate(n.candidate),u=Object.assign(i,a);return u.toJSON=function(){return{candidate:u.candidate,sdpMid:u.sdpMid,sdpMLineIndex:u.sdpMLineIndex,usernameFragment:u.usernameFragment}},u}return new t(n)},e.RTCIceCandidate.prototype=t.prototype,ye.wrapPeerConnectionEvent(e,"icecandidate",function(r){return r.candidate&&Object.defineProperty(r,"candidate",{value:new e.RTCIceCandidate(r.candidate),writable:"false"}),r})}}function xt(e,t){if(!!e.RTCPeerConnection){"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp}});var r=function(p){if(!p||!p.sdp)return!1;var s=V.default.splitSections(p.sdp);return s.shift(),s.some(function(o){var d=V.default.parseMLine(o);return d&&d.kind==="application"&&d.protocol.indexOf("SCTP")!==-1})},n=function(p){var s=p.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(s===null||s.length<2)return-1;var o=parseInt(s[1],10);return o!==o?-1:o},i=function(p){var s=65536;return t.browser==="firefox"&&(t.version<57?p===-1?s=16384:s=2147483637:t.version<60?s=t.version===57?65535:65536:s=2147483637),s},a=function(p,s){var o=65536;t.browser==="firefox"&&t.version===57&&(o=65535);var d=V.default.matchPrefix(p.sdp,"a=max-message-size:");return d.length>0?o=parseInt(d[0].substr(19),10):t.browser==="firefox"&&s!==-1&&(o=2147483637),o},u=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,t.browser==="chrome"&&t.version>=76){var p=this.getConfiguration(),s=p.sdpSemantics;s==="plan-b"&&Object.defineProperty(this,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(r(arguments[0])){var o=n(arguments[0]),d=i(o),m=a(arguments[0],o),l=void 0;d===0&&m===0?l=Number.POSITIVE_INFINITY:d===0||m===0?l=Math.max(d,m):l=Math.min(d,m);var v={};Object.defineProperty(v,"maxMessageSize",{get:function(){return l}}),this._sctp=v}return u.apply(this,arguments)}}}function Dt(e){if(!(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype))return;function t(n,i){var a=n.send;n.send=function(){var c=arguments[0],p=c.length||c.size||c.byteLength;if(n.readyState==="open"&&i.sctp&&p>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return a.apply(n,arguments)}}var r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){var i=r.apply(this,arguments);return t(i,this),i},ye.wrapPeerConnectionEvent(e,"datachannel",function(n){return t(n.channel,n.target),n})}function Ot(e){if(!(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(n){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),n&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=n)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(function(r){var n=t[r];t[r]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=function(i){var a=i.target;if(a._lastConnectionState!==a.connectionState){a._lastConnectionState=a.connectionState;var u=new Event("connectionstatechange",i);a.dispatchEvent(u)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}}function It(e,t){if(!!e.RTCPeerConnection&&!(t.browser==="chrome"&&t.version>=71)&&!(t.browser==="safari"&&t.version>=605)){var r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(i){if(i&&i.sdp&&i.sdp.indexOf(` +a=extmap-allow-mixed`)!==-1){var a=i.sdp.split(` +`).filter(function(u){return u.trim()!=="a=extmap-allow-mixed"}).join(` +`);e.RTCSessionDescription&&i instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:i.type,sdp:a}):i.sdp=a}return r.apply(this,arguments)}}}function Lt(e,t){if(!!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype)){var r=e.RTCPeerConnection.prototype.addIceCandidate;!r||r.length===0||(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(t.browser==="chrome"&&t.version<78||t.browser==="firefox"&&t.version<68||t.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}}function At(e,t){if(!!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype)){var r=e.RTCPeerConnection.prototype.setLocalDescription;!r||r.length===0||(e.RTCPeerConnection.prototype.setLocalDescription=function(){var i=this,a=arguments[0]||{};if((typeof a>"u"?"undefined":ve(a))!=="object"||a.type&&a.sdp)return r.apply(this,arguments);if(a={type:a.type,sdp:a.sdp},!a.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":a.type="offer";break;default:a.type="answer";break}if(a.sdp||a.type!=="offer"&&a.type!=="answer")return r.apply(this,[a]);var u=a.type==="offer"?this.createOffer:this.createAnswer;return u.apply(this).then(function(c){return r.apply(i,[c])})})}}});var Ce=P($=>{"use strict";Object.defineProperty($,"__esModule",{value:!0});$.adapterFactory=Jt;var Gt=x(),G=O(Gt),Ut=oe(),_=O(Ut),Ft=fe(),T=O(Ft),Nt=le(),b=O(Nt),zt=ge(),C=O(zt),qt=Y(),Vt=O(qt);function O(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function Jt(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.window,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},n=G.log,i=G.detectBrowser(t),a={browserDetails:i,commonShim:C,extractVersion:G.extractVersion,disableLog:G.disableLog,disableWarnings:G.disableWarnings,sdp:Vt};switch(i.browser){case"chrome":if(!_||!_.shimPeerConnection||!r.shimChrome)return n("Chrome shim is not included in this adapter release."),a;if(i.version===null)return n("Chrome shim can not determine version, not shimming."),a;n("adapter.js shimming chrome."),a.browserShim=_,C.shimAddIceCandidateNullOrEmpty(t,i),C.shimParameterlessSetLocalDescription(t,i),_.shimGetUserMedia(t,i),_.shimMediaStream(t,i),_.shimPeerConnection(t,i),_.shimOnTrack(t,i),_.shimAddTrackRemoveTrack(t,i),_.shimGetSendersWithDtmf(t,i),_.shimGetStats(t,i),_.shimSenderReceiverGetStats(t,i),_.fixNegotiationNeeded(t,i),_.shimSelectAudioOutput(t,i),C.shimRTCIceCandidate(t,i),C.shimConnectionState(t,i),C.shimMaxMessageSize(t,i),C.shimSendThrowTypeError(t,i),C.removeExtmapAllowMixed(t,i);break;case"firefox":if(!T||!T.shimPeerConnection||!r.shimFirefox)return n("Firefox shim is not included in this adapter release."),a;n("adapter.js shimming firefox."),a.browserShim=T,C.shimAddIceCandidateNullOrEmpty(t,i),C.shimParameterlessSetLocalDescription(t,i),T.shimGetUserMedia(t,i),T.shimPeerConnection(t,i),T.shimOnTrack(t,i),T.shimRemoveStream(t,i),T.shimSenderGetStats(t,i),T.shimReceiverGetStats(t,i),T.shimRTCDataChannel(t,i),T.shimAddTransceiver(t,i),T.shimGetParameters(t,i),T.shimCreateOffer(t,i),T.shimCreateAnswer(t,i),C.shimRTCIceCandidate(t,i),C.shimConnectionState(t,i),C.shimMaxMessageSize(t,i),C.shimSendThrowTypeError(t,i);break;case"safari":if(!b||!r.shimSafari)return n("Safari shim is not included in this adapter release."),a;n("adapter.js shimming safari."),a.browserShim=b,C.shimAddIceCandidateNullOrEmpty(t,i),C.shimParameterlessSetLocalDescription(t,i),b.shimRTCIceServerUrls(t,i),b.shimCreateOfferLegacy(t,i),b.shimCallbacksAPI(t,i),b.shimLocalStreamsAPI(t,i),b.shimRemoteStreamsAPI(t,i),b.shimTrackEventTransceiver(t,i),b.shimGetUserMedia(t,i),b.shimAudioContext(t,i),C.shimRTCIceCandidate(t,i),C.shimMaxMessageSize(t,i),C.shimSendThrowTypeError(t,i),C.removeExtmapAllowMixed(t,i);break;default:n("Unsupported browser!");break}return a}});var Kt=P((ar,Se)=>{var jt=Ce(),Bt=(0,jt.adapterFactory)({window:typeof window>"u"?void 0:window});Se.exports=Bt});"use strict";Kt();})(); diff --git a/node_modules/webrtc-adapter/package.json b/node_modules/webrtc-adapter/package.json new file mode 100644 index 0000000..4215dbc --- /dev/null +++ b/node_modules/webrtc-adapter/package.json @@ -0,0 +1,62 @@ +{ + "name": "webrtc-adapter", + "version": "8.2.3", + "description": "A shim to insulate apps from WebRTC spec changes and browser prefix differences", + "license": "BSD-3-Clause", + "main": "./dist/adapter_core.js", + "types": "./index.d.ts", + "module": "./src/js/adapter_core.js", + "repository": { + "type": "git", + "url": "https://github.com/webrtchacks/adapter.git" + }, + "authors": [ + "The WebRTC project authors (https://www.webrtc.org/)", + "The adapter.js project authors (https://github.com/webrtchacks/adapter/)" + ], + "scripts": { + "preversion": "git stash && npm install && npm update && BROWSER=chrome BVER=stable CI=true npm test && git checkout -B bumpVersion && grunt build && grunt copyForPublish && git add package.json release/* && git commit -m 'Add adapter artifacts' --allow-empty", + "version": "", + "postversion": "export GITTAG=\"echo $(git describe --abbrev=0 --tags | sed 's/^v//')\" && git push --force --set-upstream origin bumpVersion --follow-tags && git checkout gh-pages && git pull && cp out/adapter.js adapter.js && cp adapter.js adapter-`$GITTAG`.js && rm adapter-latest.js && ln -s adapter-`$GITTAG`.js adapter-latest.js && mkdir -p adapter-`$GITTAG`-variants && cp out/adapter.js adapter-`$GITTAG`-variants/ && cp out/adapter_*.js adapter-`$GITTAG`-variants/ && git add adapter.js adapter-latest.js adapter-`$GITTAG`.js adapter-`$GITTAG`-variants && git commit -m `$GITTAG` && git push --set-upstream origin gh-pages && git checkout main", + "prepare": "grunt build", + "prepublishonly": "npm test", + "test": "grunt && mocha test/unit && grunt downloadBrowser && karma start test/karma.conf.js", + "lint-and-unit-tests": "grunt && mocha test/unit", + "e2e-tests": "grunt && grunt downloadBrowser && karma start test/karma.conf.js" + }, + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "npm": ">=3.10.0", + "node": ">=6.0.0" + }, + "devDependencies": { + "@babel/core": "^7.21.0", + "@babel/preset-env": "^7.20.2", + "babel-preset-env": "^1.7.0", + "brfs": "^1.5.0", + "chai": "^3.5.0", + "grunt": "^1.1.0", + "grunt-babel": "^8.0.0", + "grunt-browserify": "^6.0.0", + "grunt-cli": "^1.3.1", + "grunt-contrib-clean": "^1.1.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-eslint": "^24.0.0", + "grunt-shell": "^2.1.0", + "karma": "^6.4.1", + "karma-browserify": "^8.1.0", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^2.2.0", + "karma-firefox-launcher": "^1.3.0", + "karma-mocha": "^2.0.1", + "karma-mocha-reporter": "^2.2.3", + "karma-safari-launcher": "^1.0.0", + "karma-stability-reporter": "^3.0.1", + "mocha": "^10.1.0", + "sinon": "^2.2.0", + "sinon-chai": "^2.14.0", + "travis-multirunner": "^5.0.1" + } +} diff --git a/node_modules/webrtc-adapter/src/js/adapter_core.js b/node_modules/webrtc-adapter/src/js/adapter_core.js new file mode 100644 index 0000000..e24468f --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/adapter_core.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +import {adapterFactory} from './adapter_factory.js'; + +const adapter = + adapterFactory({window: typeof window === 'undefined' ? undefined : window}); +export default adapter; diff --git a/node_modules/webrtc-adapter/src/js/adapter_core5.js b/node_modules/webrtc-adapter/src/js/adapter_core5.js new file mode 100644 index 0000000..941e1a3 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/adapter_core5.js @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ + +'use strict'; + +import {adapterFactory} from './adapter_factory.js'; + +const adapter = + adapterFactory({window: typeof window === 'undefined' ? undefined : window}); +module.exports = adapter; // this is the difference from adapter_core. diff --git a/node_modules/webrtc-adapter/src/js/adapter_factory.js b/node_modules/webrtc-adapter/src/js/adapter_factory.js new file mode 100644 index 0000000..54bdda2 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/adapter_factory.js @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +import * as utils from './utils'; + +// Browser shims. +import * as chromeShim from './chrome/chrome_shim'; +import * as firefoxShim from './firefox/firefox_shim'; +import * as safariShim from './safari/safari_shim'; +import * as commonShim from './common_shim'; +import * as sdp from 'sdp'; + +// Shimming starts here. +export function adapterFactory({window} = {}, options = { + shimChrome: true, + shimFirefox: true, + shimSafari: true, +}) { + // Utils. + const logging = utils.log; + const browserDetails = utils.detectBrowser(window); + + const adapter = { + browserDetails, + commonShim, + extractVersion: utils.extractVersion, + disableLog: utils.disableLog, + disableWarnings: utils.disableWarnings, + // Expose sdp as a convenience. For production apps include directly. + sdp, + }; + + // Shim browser if found. + switch (browserDetails.browser) { + case 'chrome': + if (!chromeShim || !chromeShim.shimPeerConnection || + !options.shimChrome) { + logging('Chrome shim is not included in this adapter release.'); + return adapter; + } + if (browserDetails.version === null) { + logging('Chrome shim can not determine version, not shimming.'); + return adapter; + } + logging('adapter.js shimming chrome.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = chromeShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + + chromeShim.shimGetUserMedia(window, browserDetails); + chromeShim.shimMediaStream(window, browserDetails); + chromeShim.shimPeerConnection(window, browserDetails); + chromeShim.shimOnTrack(window, browserDetails); + chromeShim.shimAddTrackRemoveTrack(window, browserDetails); + chromeShim.shimGetSendersWithDtmf(window, browserDetails); + chromeShim.shimGetStats(window, browserDetails); + chromeShim.shimSenderReceiverGetStats(window, browserDetails); + chromeShim.fixNegotiationNeeded(window, browserDetails); + + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + case 'firefox': + if (!firefoxShim || !firefoxShim.shimPeerConnection || + !options.shimFirefox) { + logging('Firefox shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming firefox.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = firefoxShim; + + // Must be called before shimPeerConnection. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + + firefoxShim.shimGetUserMedia(window, browserDetails); + firefoxShim.shimPeerConnection(window, browserDetails); + firefoxShim.shimOnTrack(window, browserDetails); + firefoxShim.shimRemoveStream(window, browserDetails); + firefoxShim.shimSenderGetStats(window, browserDetails); + firefoxShim.shimReceiverGetStats(window, browserDetails); + firefoxShim.shimRTCDataChannel(window, browserDetails); + firefoxShim.shimAddTransceiver(window, browserDetails); + firefoxShim.shimGetParameters(window, browserDetails); + firefoxShim.shimCreateOffer(window, browserDetails); + firefoxShim.shimCreateAnswer(window, browserDetails); + + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimConnectionState(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + break; + case 'safari': + if (!safariShim || !options.shimSafari) { + logging('Safari shim is not included in this adapter release.'); + return adapter; + } + logging('adapter.js shimming safari.'); + // Export to the adapter global object visible in the browser. + adapter.browserShim = safariShim; + + // Must be called before shimCallbackAPI. + commonShim.shimAddIceCandidateNullOrEmpty(window, browserDetails); + commonShim.shimParameterlessSetLocalDescription(window, browserDetails); + + safariShim.shimRTCIceServerUrls(window, browserDetails); + safariShim.shimCreateOfferLegacy(window, browserDetails); + safariShim.shimCallbacksAPI(window, browserDetails); + safariShim.shimLocalStreamsAPI(window, browserDetails); + safariShim.shimRemoteStreamsAPI(window, browserDetails); + safariShim.shimTrackEventTransceiver(window, browserDetails); + safariShim.shimGetUserMedia(window, browserDetails); + safariShim.shimAudioContext(window, browserDetails); + + commonShim.shimRTCIceCandidate(window, browserDetails); + commonShim.shimRTCIceCandidateRelayProtocol(window, browserDetails); + commonShim.shimMaxMessageSize(window, browserDetails); + commonShim.shimSendThrowTypeError(window, browserDetails); + commonShim.removeExtmapAllowMixed(window, browserDetails); + break; + default: + logging('Unsupported browser!'); + break; + } + + return adapter; +} diff --git a/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js b/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js new file mode 100644 index 0000000..46aee7e --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/chrome/chrome_shim.js @@ -0,0 +1,702 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; +import * as utils from '../utils.js'; + +export {shimGetUserMedia} from './getusermedia'; +export {shimGetDisplayMedia} from './getdisplaymedia'; + +export function shimMediaStream(window) { + window.MediaStream = window.MediaStream || window.webkitMediaStream; +} + +export function shimOnTrack(window) { + if (typeof window === 'object' && window.RTCPeerConnection && !('ontrack' in + window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'ontrack', { + get() { + return this._ontrack; + }, + set(f) { + if (this._ontrack) { + this.removeEventListener('track', this._ontrack); + } + this.addEventListener('track', this._ontrack = f); + }, + enumerable: true, + configurable: true + }); + const origSetRemoteDescription = + window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription() { + if (!this._ontrackpoly) { + this._ontrackpoly = (e) => { + // onaddstream does not fire when a track is added to an existing + // stream. But stream.onaddtrack is implemented so we use that. + e.stream.addEventListener('addtrack', te => { + let receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = this.getReceivers() + .find(r => r.track && r.track.id === te.track.id); + } else { + receiver = {track: te.track}; + } + + const event = new Event('track'); + event.track = te.track; + event.receiver = receiver; + event.transceiver = {receiver}; + event.streams = [e.stream]; + this.dispatchEvent(event); + }); + e.stream.getTracks().forEach(track => { + let receiver; + if (window.RTCPeerConnection.prototype.getReceivers) { + receiver = this.getReceivers() + .find(r => r.track && r.track.id === track.id); + } else { + receiver = {track}; + } + const event = new Event('track'); + event.track = track; + event.receiver = receiver; + event.transceiver = {receiver}; + event.streams = [e.stream]; + this.dispatchEvent(event); + }); + }; + this.addEventListener('addstream', this._ontrackpoly); + } + return origSetRemoteDescription.apply(this, arguments); + }; + } else { + // even if RTCRtpTransceiver is in window, it is only used and + // emitted in unified-plan. Unfortunately this means we need + // to unconditionally wrap the event. + utils.wrapPeerConnectionEvent(window, 'track', e => { + if (!e.transceiver) { + Object.defineProperty(e, 'transceiver', + {value: {receiver: e.receiver}}); + } + return e; + }); + } +} + +export function shimGetSendersWithDtmf(window) { + // Overrides addTrack/removeTrack, depends on shimAddTrackRemoveTrack. + if (typeof window === 'object' && window.RTCPeerConnection && + !('getSenders' in window.RTCPeerConnection.prototype) && + 'createDTMFSender' in window.RTCPeerConnection.prototype) { + const shimSenderWithDtmf = function(pc, track) { + return { + track, + get dtmf() { + if (this._dtmf === undefined) { + if (track.kind === 'audio') { + this._dtmf = pc.createDTMFSender(track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + }, + _pc: pc + }; + }; + + // augment addTrack when getSenders is not available. + if (!window.RTCPeerConnection.prototype.getSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + this._senders = this._senders || []; + return this._senders.slice(); // return a copy of the internal state. + }; + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, stream) { + let sender = origAddTrack.apply(this, arguments); + if (!sender) { + sender = shimSenderWithDtmf(this, track); + this._senders.push(sender); + } + return sender; + }; + + const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = + function removeTrack(sender) { + origRemoveTrack.apply(this, arguments); + const idx = this._senders.indexOf(sender); + if (idx !== -1) { + this._senders.splice(idx, 1); + } + }; + } + const origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + this._senders = this._senders || []; + origAddStream.apply(this, [stream]); + stream.getTracks().forEach(track => { + this._senders.push(shimSenderWithDtmf(this, track)); + }); + }; + + const origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + this._senders = this._senders || []; + origRemoveStream.apply(this, [stream]); + + stream.getTracks().forEach(track => { + const sender = this._senders.find(s => s.track === track); + if (sender) { // remove sender + this._senders.splice(this._senders.indexOf(sender), 1); + } + }); + }; + } else if (typeof window === 'object' && window.RTCPeerConnection && + 'getSenders' in window.RTCPeerConnection.prototype && + 'createDTMFSender' in window.RTCPeerConnection.prototype && + window.RTCRtpSender && + !('dtmf' in window.RTCRtpSender.prototype)) { + const origGetSenders = window.RTCPeerConnection.prototype.getSenders; + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + const senders = origGetSenders.apply(this, []); + senders.forEach(sender => sender._pc = this); + return senders; + }; + + Object.defineProperty(window.RTCRtpSender.prototype, 'dtmf', { + get() { + if (this._dtmf === undefined) { + if (this.track.kind === 'audio') { + this._dtmf = this._pc.createDTMFSender(this.track); + } else { + this._dtmf = null; + } + } + return this._dtmf; + } + }); + } +} + +export function shimGetStats(window) { + if (!window.RTCPeerConnection) { + return; + } + + const origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + const [selector, onSucc, onErr] = arguments; + + // If selector is a function then we are in the old style stats so just + // pass back the original getStats format to avoid breaking old users. + if (arguments.length > 0 && typeof selector === 'function') { + return origGetStats.apply(this, arguments); + } + + // When spec-style getStats is supported, return those when called with + // either no arguments or the selector argument is null. + if (origGetStats.length === 0 && (arguments.length === 0 || + typeof selector !== 'function')) { + return origGetStats.apply(this, []); + } + + const fixChromeStats_ = function(response) { + const standardReport = {}; + const reports = response.result(); + reports.forEach(report => { + const standardStats = { + id: report.id, + timestamp: report.timestamp, + type: { + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }[report.type] || report.type + }; + report.names().forEach(name => { + standardStats[name] = report.stat(name); + }); + standardReport[standardStats.id] = standardStats; + }); + + return standardReport; + }; + + // shim getStats with maplike support + const makeMapStats = function(stats) { + return new Map(Object.keys(stats).map(key => [key, stats[key]])); + }; + + if (arguments.length >= 2) { + const successCallbackWrapper_ = function(response) { + onSucc(makeMapStats(fixChromeStats_(response))); + }; + + return origGetStats.apply(this, [successCallbackWrapper_, + selector]); + } + + // promise-support + return new Promise((resolve, reject) => { + origGetStats.apply(this, [ + function(response) { + resolve(makeMapStats(fixChromeStats_(response))); + }, reject]); + }).then(onSucc, onErr); + }; +} + +export function shimSenderReceiverGetStats(window) { + if (!(typeof window === 'object' && window.RTCPeerConnection && + window.RTCRtpSender && window.RTCRtpReceiver)) { + return; + } + + // shim sender stats. + if (!('getStats' in window.RTCRtpSender.prototype)) { + const origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + const senders = origGetSenders.apply(this, []); + senders.forEach(sender => sender._pc = this); + return senders; + }; + } + + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + const sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + const sender = this; + return this._pc.getStats().then(result => + /* Note: this will include stats of all senders that + * send a track with the same id as sender.track as + * it is not possible to identify the RTCRtpSender. + */ + utils.filterStats(result, sender.track, true)); + }; + } + + // shim receiver stats. + if (!('getStats' in window.RTCRtpReceiver.prototype)) { + const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = + function getReceivers() { + const receivers = origGetReceivers.apply(this, []); + receivers.forEach(receiver => receiver._pc = this); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', e => { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + const receiver = this; + return this._pc.getStats().then(result => + utils.filterStats(result, receiver.track, false)); + }; + } + + if (!('getStats' in window.RTCRtpSender.prototype && + 'getStats' in window.RTCRtpReceiver.prototype)) { + return; + } + + // shim RTCPeerConnection.getStats(track). + const origGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + if (arguments.length > 0 && + arguments[0] instanceof window.MediaStreamTrack) { + const track = arguments[0]; + let sender; + let receiver; + let err; + this.getSenders().forEach(s => { + if (s.track === track) { + if (sender) { + err = true; + } else { + sender = s; + } + } + }); + this.getReceivers().forEach(r => { + if (r.track === track) { + if (receiver) { + err = true; + } else { + receiver = r; + } + } + return r.track === track; + }); + if (err || (sender && receiver)) { + return Promise.reject(new DOMException( + 'There are more than one sender or receiver for the track.', + 'InvalidAccessError')); + } else if (sender) { + return sender.getStats(); + } else if (receiver) { + return receiver.getStats(); + } + return Promise.reject(new DOMException( + 'There is no sender or receiver for the track.', + 'InvalidAccessError')); + } + return origGetStats.apply(this, arguments); + }; +} + +export function shimAddTrackRemoveTrackWithNative(window) { + // shim addTrack/removeTrack with native variants in order to make + // the interactions with legacy getLocalStreams behave as in other browsers. + // Keeps a mapping stream.id => [stream, rtpsenders...] + window.RTCPeerConnection.prototype.getLocalStreams = + function getLocalStreams() { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + return Object.keys(this._shimmedLocalStreams) + .map(streamId => this._shimmedLocalStreams[streamId][0]); + }; + + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, stream) { + if (!stream) { + return origAddTrack.apply(this, arguments); + } + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + + const sender = origAddTrack.apply(this, arguments); + if (!this._shimmedLocalStreams[stream.id]) { + this._shimmedLocalStreams[stream.id] = [stream, sender]; + } else if (this._shimmedLocalStreams[stream.id].indexOf(sender) === -1) { + this._shimmedLocalStreams[stream.id].push(sender); + } + return sender; + }; + + const origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + + stream.getTracks().forEach(track => { + const alreadyExists = this.getSenders().find(s => s.track === track); + if (alreadyExists) { + throw new DOMException('Track already exists.', + 'InvalidAccessError'); + } + }); + const existingSenders = this.getSenders(); + origAddStream.apply(this, arguments); + const newSenders = this.getSenders() + .filter(newSender => existingSenders.indexOf(newSender) === -1); + this._shimmedLocalStreams[stream.id] = [stream].concat(newSenders); + }; + + const origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + delete this._shimmedLocalStreams[stream.id]; + return origRemoveStream.apply(this, arguments); + }; + + const origRemoveTrack = window.RTCPeerConnection.prototype.removeTrack; + window.RTCPeerConnection.prototype.removeTrack = + function removeTrack(sender) { + this._shimmedLocalStreams = this._shimmedLocalStreams || {}; + if (sender) { + Object.keys(this._shimmedLocalStreams).forEach(streamId => { + const idx = this._shimmedLocalStreams[streamId].indexOf(sender); + if (idx !== -1) { + this._shimmedLocalStreams[streamId].splice(idx, 1); + } + if (this._shimmedLocalStreams[streamId].length === 1) { + delete this._shimmedLocalStreams[streamId]; + } + }); + } + return origRemoveTrack.apply(this, arguments); + }; +} + +export function shimAddTrackRemoveTrack(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + // shim addTrack and removeTrack. + if (window.RTCPeerConnection.prototype.addTrack && + browserDetails.version >= 65) { + return shimAddTrackRemoveTrackWithNative(window); + } + + // also shim pc.getLocalStreams when addTrack is shimmed + // to return the original streams. + const origGetLocalStreams = window.RTCPeerConnection.prototype + .getLocalStreams; + window.RTCPeerConnection.prototype.getLocalStreams = + function getLocalStreams() { + const nativeStreams = origGetLocalStreams.apply(this); + this._reverseStreams = this._reverseStreams || {}; + return nativeStreams.map(stream => this._reverseStreams[stream.id]); + }; + + const origAddStream = window.RTCPeerConnection.prototype.addStream; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + + stream.getTracks().forEach(track => { + const alreadyExists = this.getSenders().find(s => s.track === track); + if (alreadyExists) { + throw new DOMException('Track already exists.', + 'InvalidAccessError'); + } + }); + // Add identity mapping for consistency with addTrack. + // Unless this is being used with a stream from addTrack. + if (!this._reverseStreams[stream.id]) { + const newStream = new window.MediaStream(stream.getTracks()); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + stream = newStream; + } + origAddStream.apply(this, [stream]); + }; + + const origRemoveStream = window.RTCPeerConnection.prototype.removeStream; + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + + origRemoveStream.apply(this, [(this._streams[stream.id] || stream)]); + delete this._reverseStreams[(this._streams[stream.id] ? + this._streams[stream.id].id : stream.id)]; + delete this._streams[stream.id]; + }; + + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, stream) { + if (this.signalingState === 'closed') { + throw new DOMException( + 'The RTCPeerConnection\'s signalingState is \'closed\'.', + 'InvalidStateError'); + } + const streams = [].slice.call(arguments, 1); + if (streams.length !== 1 || + !streams[0].getTracks().find(t => t === track)) { + // this is not fully correct but all we can manage without + // [[associated MediaStreams]] internal slot. + throw new DOMException( + 'The adapter.js addTrack polyfill only supports a single ' + + ' stream which is associated with the specified track.', + 'NotSupportedError'); + } + + const alreadyExists = this.getSenders().find(s => s.track === track); + if (alreadyExists) { + throw new DOMException('Track already exists.', + 'InvalidAccessError'); + } + + this._streams = this._streams || {}; + this._reverseStreams = this._reverseStreams || {}; + const oldStream = this._streams[stream.id]; + if (oldStream) { + // this is using odd Chrome behaviour, use with caution: + // https://bugs.chromium.org/p/webrtc/issues/detail?id=7815 + // Note: we rely on the high-level addTrack/dtmf shim to + // create the sender with a dtmf sender. + oldStream.addTrack(track); + + // Trigger ONN async. + Promise.resolve().then(() => { + this.dispatchEvent(new Event('negotiationneeded')); + }); + } else { + const newStream = new window.MediaStream([track]); + this._streams[stream.id] = newStream; + this._reverseStreams[newStream.id] = stream; + this.addStream(newStream); + } + return this.getSenders().find(s => s.track === track); + }; + + // replace the internal stream id with the external one and + // vice versa. + function replaceInternalStreamId(pc, description) { + let sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(internalId => { + const externalStream = pc._reverseStreams[internalId]; + const internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(internalStream.id, 'g'), + externalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp + }); + } + function replaceExternalStreamId(pc, description) { + let sdp = description.sdp; + Object.keys(pc._reverseStreams || []).forEach(internalId => { + const externalStream = pc._reverseStreams[internalId]; + const internalStream = pc._streams[externalStream.id]; + sdp = sdp.replace(new RegExp(externalStream.id, 'g'), + internalStream.id); + }); + return new RTCSessionDescription({ + type: description.type, + sdp + }); + } + ['createOffer', 'createAnswer'].forEach(function(method) { + const nativeMethod = window.RTCPeerConnection.prototype[method]; + const methodObj = {[method]() { + const args = arguments; + const isLegacyCall = arguments.length && + typeof arguments[0] === 'function'; + if (isLegacyCall) { + return nativeMethod.apply(this, [ + (description) => { + const desc = replaceInternalStreamId(this, description); + args[0].apply(null, [desc]); + }, + (err) => { + if (args[1]) { + args[1].apply(null, err); + } + }, arguments[2] + ]); + } + return nativeMethod.apply(this, arguments) + .then(description => replaceInternalStreamId(this, description)); + }}; + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + + const origSetLocalDescription = + window.RTCPeerConnection.prototype.setLocalDescription; + window.RTCPeerConnection.prototype.setLocalDescription = + function setLocalDescription() { + if (!arguments.length || !arguments[0].type) { + return origSetLocalDescription.apply(this, arguments); + } + arguments[0] = replaceExternalStreamId(this, arguments[0]); + return origSetLocalDescription.apply(this, arguments); + }; + + // TODO: mangle getStats: https://w3c.github.io/webrtc-stats/#dom-rtcmediastreamstats-streamidentifier + + const origLocalDescription = Object.getOwnPropertyDescriptor( + window.RTCPeerConnection.prototype, 'localDescription'); + Object.defineProperty(window.RTCPeerConnection.prototype, + 'localDescription', { + get() { + const description = origLocalDescription.get.apply(this); + if (description.type === '') { + return description; + } + return replaceInternalStreamId(this, description); + } + }); + + window.RTCPeerConnection.prototype.removeTrack = + function removeTrack(sender) { + if (this.signalingState === 'closed') { + throw new DOMException( + 'The RTCPeerConnection\'s signalingState is \'closed\'.', + 'InvalidStateError'); + } + // We can not yet check for sender instanceof RTCRtpSender + // since we shim RTPSender. So we check if sender._pc is set. + if (!sender._pc) { + throw new DOMException('Argument 1 of RTCPeerConnection.removeTrack ' + + 'does not implement interface RTCRtpSender.', 'TypeError'); + } + const isLocal = sender._pc === this; + if (!isLocal) { + throw new DOMException('Sender was not created by this connection.', + 'InvalidAccessError'); + } + + // Search for the native stream the senders track belongs to. + this._streams = this._streams || {}; + let stream; + Object.keys(this._streams).forEach(streamid => { + const hasTrack = this._streams[streamid].getTracks() + .find(track => sender.track === track); + if (hasTrack) { + stream = this._streams[streamid]; + } + }); + + if (stream) { + if (stream.getTracks().length === 1) { + // if this is the last track of the stream, remove the stream. This + // takes care of any shimmed _senders. + this.removeStream(this._reverseStreams[stream.id]); + } else { + // relying on the same odd chrome behaviour as above. + stream.removeTrack(sender.track); + } + this.dispatchEvent(new Event('negotiationneeded')); + } + }; +} + +export function shimPeerConnection(window, browserDetails) { + if (!window.RTCPeerConnection && window.webkitRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.webkitRTCPeerConnection; + } + if (!window.RTCPeerConnection) { + return; + } + + // shim implicit creation of RTCSessionDescription/RTCIceCandidate + if (browserDetails.version < 53) { + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] + .forEach(function(method) { + const nativeMethod = window.RTCPeerConnection.prototype[method]; + const methodObj = {[method]() { + arguments[0] = new ((method === 'addIceCandidate') ? + window.RTCIceCandidate : + window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }}; + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } +} + +// Attempt to fix ONN in plan-b mode. +export function fixNegotiationNeeded(window, browserDetails) { + utils.wrapPeerConnectionEvent(window, 'negotiationneeded', e => { + const pc = e.target; + if (browserDetails.version < 72 || (pc.getConfiguration && + pc.getConfiguration().sdpSemantics === 'plan-b')) { + if (pc.signalingState !== 'stable') { + return; + } + } + return e; + }); +} diff --git a/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js b/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js new file mode 100644 index 0000000..1e8f6ec --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/chrome/getdisplaymedia.js @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; +export function shimGetDisplayMedia(window, getSourceId) { + if (window.navigator.mediaDevices && + 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!(window.navigator.mediaDevices)) { + return; + } + // getSourceId is a function that returns a promise resolving with + // the sourceId of the screen/window/tab to be shared. + if (typeof getSourceId !== 'function') { + console.error('shimGetDisplayMedia: getSourceId argument is not ' + + 'a function'); + return; + } + window.navigator.mediaDevices.getDisplayMedia = + function getDisplayMedia(constraints) { + return getSourceId(constraints) + .then(sourceId => { + const widthSpecified = constraints.video && constraints.video.width; + const heightSpecified = constraints.video && + constraints.video.height; + const frameRateSpecified = constraints.video && + constraints.video.frameRate; + constraints.video = { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: sourceId, + maxFrameRate: frameRateSpecified || 3 + } + }; + if (widthSpecified) { + constraints.video.mandatory.maxWidth = widthSpecified; + } + if (heightSpecified) { + constraints.video.mandatory.maxHeight = heightSpecified; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js b/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js new file mode 100644 index 0000000..7b29d20 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/chrome/getusermedia.js @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; +import * as utils from '../utils.js'; +const logging = utils.log; + +export function shimGetUserMedia(window, browserDetails) { + const navigator = window && window.navigator; + + if (!navigator.mediaDevices) { + return; + } + + const constraintsToChrome_ = function(c) { + if (typeof c !== 'object' || c.mandatory || c.optional) { + return c; + } + const cc = {}; + Object.keys(c).forEach(key => { + if (key === 'require' || key === 'advanced' || key === 'mediaSource') { + return; + } + const r = (typeof c[key] === 'object') ? c[key] : {ideal: c[key]}; + if (r.exact !== undefined && typeof r.exact === 'number') { + r.min = r.max = r.exact; + } + const oldname_ = function(prefix, name) { + if (prefix) { + return prefix + name.charAt(0).toUpperCase() + name.slice(1); + } + return (name === 'deviceId') ? 'sourceId' : name; + }; + if (r.ideal !== undefined) { + cc.optional = cc.optional || []; + let oc = {}; + if (typeof r.ideal === 'number') { + oc[oldname_('min', key)] = r.ideal; + cc.optional.push(oc); + oc = {}; + oc[oldname_('max', key)] = r.ideal; + cc.optional.push(oc); + } else { + oc[oldname_('', key)] = r.ideal; + cc.optional.push(oc); + } + } + if (r.exact !== undefined && typeof r.exact !== 'number') { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_('', key)] = r.exact; + } else { + ['min', 'max'].forEach(mix => { + if (r[mix] !== undefined) { + cc.mandatory = cc.mandatory || {}; + cc.mandatory[oldname_(mix, key)] = r[mix]; + } + }); + } + }); + if (c.advanced) { + cc.optional = (cc.optional || []).concat(c.advanced); + } + return cc; + }; + + const shimConstraints_ = function(constraints, func) { + if (browserDetails.version >= 61) { + return func(constraints); + } + constraints = JSON.parse(JSON.stringify(constraints)); + if (constraints && typeof constraints.audio === 'object') { + const remap = function(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + constraints = JSON.parse(JSON.stringify(constraints)); + remap(constraints.audio, 'autoGainControl', 'googAutoGainControl'); + remap(constraints.audio, 'noiseSuppression', 'googNoiseSuppression'); + constraints.audio = constraintsToChrome_(constraints.audio); + } + if (constraints && typeof constraints.video === 'object') { + // Shim facingMode for mobile & surface pro. + let face = constraints.video.facingMode; + face = face && ((typeof face === 'object') ? face : {ideal: face}); + const getSupportedFacingModeLies = browserDetails.version < 66; + + if ((face && (face.exact === 'user' || face.exact === 'environment' || + face.ideal === 'user' || face.ideal === 'environment')) && + !(navigator.mediaDevices.getSupportedConstraints && + navigator.mediaDevices.getSupportedConstraints().facingMode && + !getSupportedFacingModeLies)) { + delete constraints.video.facingMode; + let matches; + if (face.exact === 'environment' || face.ideal === 'environment') { + matches = ['back', 'rear']; + } else if (face.exact === 'user' || face.ideal === 'user') { + matches = ['front']; + } + if (matches) { + // Look for matches in label, or use last cam for back (typical). + return navigator.mediaDevices.enumerateDevices() + .then(devices => { + devices = devices.filter(d => d.kind === 'videoinput'); + let dev = devices.find(d => matches.some(match => + d.label.toLowerCase().includes(match))); + if (!dev && devices.length && matches.includes('back')) { + dev = devices[devices.length - 1]; // more likely the back cam + } + if (dev) { + constraints.video.deviceId = face.exact + ? {exact: dev.deviceId} + : {ideal: dev.deviceId}; + } + constraints.video = constraintsToChrome_(constraints.video); + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }); + } + } + constraints.video = constraintsToChrome_(constraints.video); + } + logging('chrome: ' + JSON.stringify(constraints)); + return func(constraints); + }; + + const shimError_ = function(e) { + if (browserDetails.version >= 64) { + return e; + } + return { + name: { + PermissionDeniedError: 'NotAllowedError', + PermissionDismissedError: 'NotAllowedError', + InvalidStateError: 'NotAllowedError', + DevicesNotFoundError: 'NotFoundError', + ConstraintNotSatisfiedError: 'OverconstrainedError', + TrackStartError: 'NotReadableError', + MediaDeviceFailedDueToShutdown: 'NotAllowedError', + MediaDeviceKillSwitchOn: 'NotAllowedError', + TabCaptureError: 'AbortError', + ScreenCaptureError: 'AbortError', + DeviceCaptureError: 'AbortError' + }[e.name] || e.name, + message: e.message, + constraint: e.constraint || e.constraintName, + toString() { + return this.name + (this.message && ': ') + this.message; + } + }; + }; + + const getUserMedia_ = function(constraints, onSuccess, onError) { + shimConstraints_(constraints, c => { + navigator.webkitGetUserMedia(c, onSuccess, e => { + if (onError) { + onError(shimError_(e)); + } + }); + }); + }; + navigator.getUserMedia = getUserMedia_.bind(navigator); + + // Even though Chrome 45 has navigator.mediaDevices and a getUserMedia + // function which returns a Promise, it does not accept spec-style + // constraints. + if (navigator.mediaDevices.getUserMedia) { + const origGetUserMedia = navigator.mediaDevices.getUserMedia. + bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function(cs) { + return shimConstraints_(cs, c => origGetUserMedia(c).then(stream => { + if (c.audio && !stream.getAudioTracks().length || + c.video && !stream.getVideoTracks().length) { + stream.getTracks().forEach(track => { + track.stop(); + }); + throw new DOMException('', 'NotFoundError'); + } + return stream; + }, e => Promise.reject(shimError_(e)))); + }; + } +} diff --git a/node_modules/webrtc-adapter/src/js/common_shim.js b/node_modules/webrtc-adapter/src/js/common_shim.js new file mode 100644 index 0000000..96d7c8e --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/common_shim.js @@ -0,0 +1,462 @@ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +import SDPUtils from 'sdp'; +import * as utils from './utils'; + +export function shimRTCIceCandidate(window) { + // foundation is arbitrarily chosen as an indicator for full support for + // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface + if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'foundation' in + window.RTCIceCandidate.prototype)) { + return; + } + + const NativeRTCIceCandidate = window.RTCIceCandidate; + window.RTCIceCandidate = function RTCIceCandidate(args) { + // Remove the a= which shouldn't be part of the candidate string. + if (typeof args === 'object' && args.candidate && + args.candidate.indexOf('a=') === 0) { + args = JSON.parse(JSON.stringify(args)); + args.candidate = args.candidate.substring(2); + } + + if (args.candidate && args.candidate.length) { + // Augment the native candidate with the parsed fields. + const nativeCandidate = new NativeRTCIceCandidate(args); + const parsedCandidate = SDPUtils.parseCandidate(args.candidate); + for (const key in parsedCandidate) { + if (!(key in nativeCandidate)) { + Object.defineProperty(nativeCandidate, key, + {value: parsedCandidate[key]}); + } + } + + // Override serializer to not serialize the extra attributes. + nativeCandidate.toJSON = function toJSON() { + return { + candidate: nativeCandidate.candidate, + sdpMid: nativeCandidate.sdpMid, + sdpMLineIndex: nativeCandidate.sdpMLineIndex, + usernameFragment: nativeCandidate.usernameFragment, + }; + }; + return nativeCandidate; + } + return new NativeRTCIceCandidate(args); + }; + window.RTCIceCandidate.prototype = NativeRTCIceCandidate.prototype; + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', e => { + if (e.candidate) { + Object.defineProperty(e, 'candidate', { + value: new window.RTCIceCandidate(e.candidate), + writable: 'false' + }); + } + return e; + }); +} + +export function shimRTCIceCandidateRelayProtocol(window) { + if (!window.RTCIceCandidate || (window.RTCIceCandidate && 'relayProtocol' in + window.RTCIceCandidate.prototype)) { + return; + } + + // Hook up the augmented candidate in onicecandidate and + // addEventListener('icecandidate', ...) + utils.wrapPeerConnectionEvent(window, 'icecandidate', e => { + if (e.candidate) { + const parsedCandidate = SDPUtils.parseCandidate(e.candidate.candidate); + if (parsedCandidate.type === 'relay') { + // This is a libwebrtc-specific mapping of local type preference + // to relayProtocol. + e.candidate.relayProtocol = { + 0: 'tls', + 1: 'tcp', + 2: 'udp', + }[parsedCandidate.priority >> 24]; + } + } + return e; + }); +} + +export function shimMaxMessageSize(window, browserDetails) { + if (!window.RTCPeerConnection) { + return; + } + + if (!('sctp' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'sctp', { + get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + } + }); + } + + const sctpInDescription = function(description) { + if (!description || !description.sdp) { + return false; + } + const sections = SDPUtils.splitSections(description.sdp); + sections.shift(); + return sections.some(mediaSection => { + const mLine = SDPUtils.parseMLine(mediaSection); + return mLine && mLine.kind === 'application' + && mLine.protocol.indexOf('SCTP') !== -1; + }); + }; + + const getRemoteFirefoxVersion = function(description) { + // TODO: Is there a better solution for detecting Firefox? + const match = description.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/); + if (match === null || match.length < 2) { + return -1; + } + const version = parseInt(match[1], 10); + // Test for NaN (yes, this is ugly) + return version !== version ? -1 : version; + }; + + const getCanSendMaxMessageSize = function(remoteIsFirefox) { + // Every implementation we know can send at least 64 KiB. + // Note: Although Chrome is technically able to send up to 256 KiB, the + // data does not reach the other peer reliably. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8419 + let canSendMaxMessageSize = 65536; + if (browserDetails.browser === 'firefox') { + if (browserDetails.version < 57) { + if (remoteIsFirefox === -1) { + // FF < 57 will send in 16 KiB chunks using the deprecated PPID + // fragmentation. + canSendMaxMessageSize = 16384; + } else { + // However, other FF (and RAWRTC) can reassemble PPID-fragmented + // messages. Thus, supporting ~2 GiB when sending. + canSendMaxMessageSize = 2147483637; + } + } else if (browserDetails.version < 60) { + // Currently, all FF >= 57 will reset the remote maximum message size + // to the default value when a data channel is created at a later + // stage. :( + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + canSendMaxMessageSize = + browserDetails.version === 57 ? 65535 : 65536; + } else { + // FF >= 60 supports sending ~2 GiB + canSendMaxMessageSize = 2147483637; + } + } + return canSendMaxMessageSize; + }; + + const getMaxMessageSize = function(description, remoteIsFirefox) { + // Note: 65536 bytes is the default value from the SDP spec. Also, + // every implementation we know supports receiving 65536 bytes. + let maxMessageSize = 65536; + + // FF 57 has a slightly incorrect default remote max message size, so + // we need to adjust it here to avoid a failure when sending. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1425697 + if (browserDetails.browser === 'firefox' + && browserDetails.version === 57) { + maxMessageSize = 65535; + } + + const match = SDPUtils.matchPrefix(description.sdp, + 'a=max-message-size:'); + if (match.length > 0) { + maxMessageSize = parseInt(match[0].substring(19), 10); + } else if (browserDetails.browser === 'firefox' && + remoteIsFirefox !== -1) { + // If the maximum message size is not present in the remote SDP and + // both local and remote are Firefox, the remote peer can receive + // ~2 GiB. + maxMessageSize = 2147483637; + } + return maxMessageSize; + }; + + const origSetRemoteDescription = + window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription() { + this._sctp = null; + // Chrome decided to not expose .sctp in plan-b mode. + // As usual, adapter.js has to do an 'ugly worakaround' + // to cover up the mess. + if (browserDetails.browser === 'chrome' && browserDetails.version >= 76) { + const {sdpSemantics} = this.getConfiguration(); + if (sdpSemantics === 'plan-b') { + Object.defineProperty(this, 'sctp', { + get() { + return typeof this._sctp === 'undefined' ? null : this._sctp; + }, + enumerable: true, + configurable: true, + }); + } + } + + if (sctpInDescription(arguments[0])) { + // Check if the remote is FF. + const isFirefox = getRemoteFirefoxVersion(arguments[0]); + + // Get the maximum message size the local peer is capable of sending + const canSendMMS = getCanSendMaxMessageSize(isFirefox); + + // Get the maximum message size of the remote peer. + const remoteMMS = getMaxMessageSize(arguments[0], isFirefox); + + // Determine final maximum message size + let maxMessageSize; + if (canSendMMS === 0 && remoteMMS === 0) { + maxMessageSize = Number.POSITIVE_INFINITY; + } else if (canSendMMS === 0 || remoteMMS === 0) { + maxMessageSize = Math.max(canSendMMS, remoteMMS); + } else { + maxMessageSize = Math.min(canSendMMS, remoteMMS); + } + + // Create a dummy RTCSctpTransport object and the 'maxMessageSize' + // attribute. + const sctp = {}; + Object.defineProperty(sctp, 'maxMessageSize', { + get() { + return maxMessageSize; + } + }); + this._sctp = sctp; + } + + return origSetRemoteDescription.apply(this, arguments); + }; +} + +export function shimSendThrowTypeError(window) { + if (!(window.RTCPeerConnection && + 'createDataChannel' in window.RTCPeerConnection.prototype)) { + return; + } + + // Note: Although Firefox >= 57 has a native implementation, the maximum + // message size can be reset for all data channels at a later stage. + // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1426831 + + function wrapDcSend(dc, pc) { + const origDataChannelSend = dc.send; + dc.send = function send() { + const data = arguments[0]; + const length = data.length || data.size || data.byteLength; + if (dc.readyState === 'open' && + pc.sctp && length > pc.sctp.maxMessageSize) { + throw new TypeError('Message too large (can send a maximum of ' + + pc.sctp.maxMessageSize + ' bytes)'); + } + return origDataChannelSend.apply(dc, arguments); + }; + } + const origCreateDataChannel = + window.RTCPeerConnection.prototype.createDataChannel; + window.RTCPeerConnection.prototype.createDataChannel = + function createDataChannel() { + const dataChannel = origCreateDataChannel.apply(this, arguments); + wrapDcSend(dataChannel, this); + return dataChannel; + }; + utils.wrapPeerConnectionEvent(window, 'datachannel', e => { + wrapDcSend(e.channel, e.target); + return e; + }); +} + + +/* shims RTCConnectionState by pretending it is the same as iceConnectionState. + * See https://bugs.chromium.org/p/webrtc/issues/detail?id=6145#c12 + * for why this is a valid hack in Chrome. In Firefox it is slightly incorrect + * since DTLS failures would be hidden. See + * https://bugzilla.mozilla.org/show_bug.cgi?id=1265827 + * for the Firefox tracking bug. + */ +export function shimConnectionState(window) { + if (!window.RTCPeerConnection || + 'connectionState' in window.RTCPeerConnection.prototype) { + return; + } + const proto = window.RTCPeerConnection.prototype; + Object.defineProperty(proto, 'connectionState', { + get() { + return { + completed: 'connected', + checking: 'connecting' + }[this.iceConnectionState] || this.iceConnectionState; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(proto, 'onconnectionstatechange', { + get() { + return this._onconnectionstatechange || null; + }, + set(cb) { + if (this._onconnectionstatechange) { + this.removeEventListener('connectionstatechange', + this._onconnectionstatechange); + delete this._onconnectionstatechange; + } + if (cb) { + this.addEventListener('connectionstatechange', + this._onconnectionstatechange = cb); + } + }, + enumerable: true, + configurable: true + }); + + ['setLocalDescription', 'setRemoteDescription'].forEach((method) => { + const origMethod = proto[method]; + proto[method] = function() { + if (!this._connectionstatechangepoly) { + this._connectionstatechangepoly = e => { + const pc = e.target; + if (pc._lastConnectionState !== pc.connectionState) { + pc._lastConnectionState = pc.connectionState; + const newEvent = new Event('connectionstatechange', e); + pc.dispatchEvent(newEvent); + } + return e; + }; + this.addEventListener('iceconnectionstatechange', + this._connectionstatechangepoly); + } + return origMethod.apply(this, arguments); + }; + }); +} + +export function removeExtmapAllowMixed(window, browserDetails) { + /* remove a=extmap-allow-mixed for webrtc.org < M71 */ + if (!window.RTCPeerConnection) { + return; + } + if (browserDetails.browser === 'chrome' && browserDetails.version >= 71) { + return; + } + if (browserDetails.browser === 'safari' && browserDetails.version >= 605) { + return; + } + const nativeSRD = window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription(desc) { + if (desc && desc.sdp && desc.sdp.indexOf('\na=extmap-allow-mixed') !== -1) { + const sdp = desc.sdp.split('\n').filter((line) => { + return line.trim() !== 'a=extmap-allow-mixed'; + }).join('\n'); + // Safari enforces read-only-ness of RTCSessionDescription fields. + if (window.RTCSessionDescription && + desc instanceof window.RTCSessionDescription) { + arguments[0] = new window.RTCSessionDescription({ + type: desc.type, + sdp, + }); + } else { + desc.sdp = sdp; + } + } + return nativeSRD.apply(this, arguments); + }; +} + +export function shimAddIceCandidateNullOrEmpty(window, browserDetails) { + // Support for addIceCandidate(null or undefined) + // as well as addIceCandidate({candidate: "", ...}) + // https://bugs.chromium.org/p/chromium/issues/detail?id=978582 + // Note: must be called before other polyfills which change the signature. + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + const nativeAddIceCandidate = + window.RTCPeerConnection.prototype.addIceCandidate; + if (!nativeAddIceCandidate || nativeAddIceCandidate.length === 0) { + return; + } + window.RTCPeerConnection.prototype.addIceCandidate = + function addIceCandidate() { + if (!arguments[0]) { + if (arguments[1]) { + arguments[1].apply(null); + } + return Promise.resolve(); + } + // Firefox 68+ emits and processes {candidate: "", ...}, ignore + // in older versions. + // Native support for ignoring exists for Chrome M77+. + // Safari ignores as well, exact version unknown but works in the same + // version that also ignores addIceCandidate(null). + if (((browserDetails.browser === 'chrome' && browserDetails.version < 78) + || (browserDetails.browser === 'firefox' + && browserDetails.version < 68) + || (browserDetails.browser === 'safari')) + && arguments[0] && arguments[0].candidate === '') { + return Promise.resolve(); + } + return nativeAddIceCandidate.apply(this, arguments); + }; +} + +// Note: Make sure to call this ahead of APIs that modify +// setLocalDescription.length +export function shimParameterlessSetLocalDescription(window, browserDetails) { + if (!(window.RTCPeerConnection && window.RTCPeerConnection.prototype)) { + return; + } + const nativeSetLocalDescription = + window.RTCPeerConnection.prototype.setLocalDescription; + if (!nativeSetLocalDescription || nativeSetLocalDescription.length === 0) { + return; + } + window.RTCPeerConnection.prototype.setLocalDescription = + function setLocalDescription() { + let desc = arguments[0] || {}; + if (typeof desc !== 'object' || (desc.type && desc.sdp)) { + return nativeSetLocalDescription.apply(this, arguments); + } + // The remaining steps should technically happen when SLD comes off the + // RTCPeerConnection's operations chain (not ahead of going on it), but + // this is too difficult to shim. Instead, this shim only covers the + // common case where the operations chain is empty. This is imperfect, but + // should cover many cases. Rationale: Even if we can't reduce the glare + // window to zero on imperfect implementations, there's value in tapping + // into the perfect negotiation pattern that several browsers support. + desc = {type: desc.type, sdp: desc.sdp}; + if (!desc.type) { + switch (this.signalingState) { + case 'stable': + case 'have-local-offer': + case 'have-remote-pranswer': + desc.type = 'offer'; + break; + default: + desc.type = 'answer'; + break; + } + } + if (desc.sdp || (desc.type !== 'offer' && desc.type !== 'answer')) { + return nativeSetLocalDescription.apply(this, [desc]); + } + const func = desc.type === 'offer' ? this.createOffer : this.createAnswer; + return func.apply(this) + .then(d => nativeSetLocalDescription.apply(this, [d])); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js b/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js new file mode 100644 index 0000000..4b9852b --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/firefox/firefox_shim.js @@ -0,0 +1,300 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +import * as utils from '../utils'; +export {shimGetUserMedia} from './getusermedia'; +export {shimGetDisplayMedia} from './getdisplaymedia'; + +export function shimOnTrack(window) { + if (typeof window === 'object' && window.RTCTrackEvent && + ('receiver' in window.RTCTrackEvent.prototype) && + !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get() { + return {receiver: this.receiver}; + } + }); + } +} + +export function shimPeerConnection(window, browserDetails) { + if (typeof window !== 'object' || + !(window.RTCPeerConnection || window.mozRTCPeerConnection)) { + return; // probably media.peerconnection.enabled=false in about:config + } + if (!window.RTCPeerConnection && window.mozRTCPeerConnection) { + // very basic support for old versions. + window.RTCPeerConnection = window.mozRTCPeerConnection; + } + + if (browserDetails.version < 53) { + // shim away need for obsolete RTCIceCandidate/RTCSessionDescription. + ['setLocalDescription', 'setRemoteDescription', 'addIceCandidate'] + .forEach(function(method) { + const nativeMethod = window.RTCPeerConnection.prototype[method]; + const methodObj = {[method]() { + arguments[0] = new ((method === 'addIceCandidate') ? + window.RTCIceCandidate : + window.RTCSessionDescription)(arguments[0]); + return nativeMethod.apply(this, arguments); + }}; + window.RTCPeerConnection.prototype[method] = methodObj[method]; + }); + } + + const modernStatsTypes = { + inboundrtp: 'inbound-rtp', + outboundrtp: 'outbound-rtp', + candidatepair: 'candidate-pair', + localcandidate: 'local-candidate', + remotecandidate: 'remote-candidate' + }; + + const nativeGetStats = window.RTCPeerConnection.prototype.getStats; + window.RTCPeerConnection.prototype.getStats = function getStats() { + const [selector, onSucc, onErr] = arguments; + return nativeGetStats.apply(this, [selector || null]) + .then(stats => { + if (browserDetails.version < 53 && !onSucc) { + // Shim only promise getStats with spec-hyphens in type names + // Leave callback version alone; misc old uses of forEach before Map + try { + stats.forEach(stat => { + stat.type = modernStatsTypes[stat.type] || stat.type; + }); + } catch (e) { + if (e.name !== 'TypeError') { + throw e; + } + // Avoid TypeError: "type" is read-only, in old versions. 34-43ish + stats.forEach((stat, i) => { + stats.set(i, Object.assign({}, stat, { + type: modernStatsTypes[stat.type] || stat.type + })); + }); + } + } + return stats; + }) + .then(onSucc, onErr); + }; +} + +export function shimSenderGetStats(window) { + if (!(typeof window === 'object' && window.RTCPeerConnection && + window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpSender.prototype) { + return; + } + const origGetSenders = window.RTCPeerConnection.prototype.getSenders; + if (origGetSenders) { + window.RTCPeerConnection.prototype.getSenders = function getSenders() { + const senders = origGetSenders.apply(this, []); + senders.forEach(sender => sender._pc = this); + return senders; + }; + } + + const origAddTrack = window.RTCPeerConnection.prototype.addTrack; + if (origAddTrack) { + window.RTCPeerConnection.prototype.addTrack = function addTrack() { + const sender = origAddTrack.apply(this, arguments); + sender._pc = this; + return sender; + }; + } + window.RTCRtpSender.prototype.getStats = function getStats() { + return this.track ? this._pc.getStats(this.track) : + Promise.resolve(new Map()); + }; +} + +export function shimReceiverGetStats(window) { + if (!(typeof window === 'object' && window.RTCPeerConnection && + window.RTCRtpSender)) { + return; + } + if (window.RTCRtpSender && 'getStats' in window.RTCRtpReceiver.prototype) { + return; + } + const origGetReceivers = window.RTCPeerConnection.prototype.getReceivers; + if (origGetReceivers) { + window.RTCPeerConnection.prototype.getReceivers = function getReceivers() { + const receivers = origGetReceivers.apply(this, []); + receivers.forEach(receiver => receiver._pc = this); + return receivers; + }; + } + utils.wrapPeerConnectionEvent(window, 'track', e => { + e.receiver._pc = e.srcElement; + return e; + }); + window.RTCRtpReceiver.prototype.getStats = function getStats() { + return this._pc.getStats(this.track); + }; +} + +export function shimRemoveStream(window) { + if (!window.RTCPeerConnection || + 'removeStream' in window.RTCPeerConnection.prototype) { + return; + } + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + utils.deprecated('removeStream', 'removeTrack'); + this.getSenders().forEach(sender => { + if (sender.track && stream.getTracks().includes(sender.track)) { + this.removeTrack(sender); + } + }); + }; +} + +export function shimRTCDataChannel(window) { + // rename DataChannel to RTCDataChannel (native fix in FF60): + // https://bugzilla.mozilla.org/show_bug.cgi?id=1173851 + if (window.DataChannel && !window.RTCDataChannel) { + window.RTCDataChannel = window.DataChannel; + } +} + +export function shimAddTransceiver(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(typeof window === 'object' && window.RTCPeerConnection)) { + return; + } + const origAddTransceiver = window.RTCPeerConnection.prototype.addTransceiver; + if (origAddTransceiver) { + window.RTCPeerConnection.prototype.addTransceiver = + function addTransceiver() { + this.setParametersPromises = []; + // WebIDL input coercion and validation + let sendEncodings = arguments[1] && arguments[1].sendEncodings; + if (sendEncodings === undefined) { + sendEncodings = []; + } + sendEncodings = [...sendEncodings]; + const shouldPerformCheck = sendEncodings.length > 0; + if (shouldPerformCheck) { + // If sendEncodings params are provided, validate grammar + sendEncodings.forEach((encodingParam) => { + if ('rid' in encodingParam) { + const ridRegex = /^[a-z0-9]{0,16}$/i; + if (!ridRegex.test(encodingParam.rid)) { + throw new TypeError('Invalid RID value provided.'); + } + } + if ('scaleResolutionDownBy' in encodingParam) { + if (!(parseFloat(encodingParam.scaleResolutionDownBy) >= 1.0)) { + throw new RangeError('scale_resolution_down_by must be >= 1.0'); + } + } + if ('maxFramerate' in encodingParam) { + if (!(parseFloat(encodingParam.maxFramerate) >= 0)) { + throw new RangeError('max_framerate must be >= 0.0'); + } + } + }); + } + const transceiver = origAddTransceiver.apply(this, arguments); + if (shouldPerformCheck) { + // Check if the init options were applied. If not we do this in an + // asynchronous way and save the promise reference in a global object. + // This is an ugly hack, but at the same time is way more robust than + // checking the sender parameters before and after the createOffer + // Also note that after the createoffer we are not 100% sure that + // the params were asynchronously applied so we might miss the + // opportunity to recreate offer. + const {sender} = transceiver; + const params = sender.getParameters(); + if (!('encodings' in params) || + // Avoid being fooled by patched getParameters() below. + (params.encodings.length === 1 && + Object.keys(params.encodings[0]).length === 0)) { + params.encodings = sendEncodings; + sender.sendEncodings = sendEncodings; + this.setParametersPromises.push(sender.setParameters(params) + .then(() => { + delete sender.sendEncodings; + }).catch(() => { + delete sender.sendEncodings; + }) + ); + } + } + return transceiver; + }; + } +} + +export function shimGetParameters(window) { + if (!(typeof window === 'object' && window.RTCRtpSender)) { + return; + } + const origGetParameters = window.RTCRtpSender.prototype.getParameters; + if (origGetParameters) { + window.RTCRtpSender.prototype.getParameters = + function getParameters() { + const params = origGetParameters.apply(this, arguments); + if (!('encodings' in params)) { + params.encodings = [].concat(this.sendEncodings || [{}]); + } + return params; + }; + } +} + +export function shimCreateOffer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(typeof window === 'object' && window.RTCPeerConnection)) { + return; + } + const origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = function createOffer() { + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises) + .then(() => { + return origCreateOffer.apply(this, arguments); + }) + .finally(() => { + this.setParametersPromises = []; + }); + } + return origCreateOffer.apply(this, arguments); + }; +} + +export function shimCreateAnswer(window) { + // https://github.com/webrtcHacks/adapter/issues/998#issuecomment-516921647 + // Firefox ignores the init sendEncodings options passed to addTransceiver + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396918 + if (!(typeof window === 'object' && window.RTCPeerConnection)) { + return; + } + const origCreateAnswer = window.RTCPeerConnection.prototype.createAnswer; + window.RTCPeerConnection.prototype.createAnswer = function createAnswer() { + if (this.setParametersPromises && this.setParametersPromises.length) { + return Promise.all(this.setParametersPromises) + .then(() => { + return origCreateAnswer.apply(this, arguments); + }) + .finally(() => { + this.setParametersPromises = []; + }); + } + return origCreateAnswer.apply(this, arguments); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js b/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js new file mode 100644 index 0000000..0ecce44 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/firefox/getdisplaymedia.js @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2018 The adapter.js project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +export function shimGetDisplayMedia(window, preferredMediaSource) { + if (window.navigator.mediaDevices && + 'getDisplayMedia' in window.navigator.mediaDevices) { + return; + } + if (!(window.navigator.mediaDevices)) { + return; + } + window.navigator.mediaDevices.getDisplayMedia = + function getDisplayMedia(constraints) { + if (!(constraints && constraints.video)) { + const err = new DOMException('getDisplayMedia without video ' + + 'constraints is undefined'); + err.name = 'NotFoundError'; + // from https://heycam.github.io/webidl/#idl-DOMException-error-names + err.code = 8; + return Promise.reject(err); + } + if (constraints.video === true) { + constraints.video = {mediaSource: preferredMediaSource}; + } else { + constraints.video.mediaSource = preferredMediaSource; + } + return window.navigator.mediaDevices.getUserMedia(constraints); + }; +} diff --git a/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js b/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js new file mode 100644 index 0000000..6b7d87b --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/firefox/getusermedia.js @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +import * as utils from '../utils'; + +export function shimGetUserMedia(window, browserDetails) { + const navigator = window && window.navigator; + const MediaStreamTrack = window && window.MediaStreamTrack; + + navigator.getUserMedia = function(constraints, onSuccess, onError) { + // Replace Firefox 44+'s deprecation warning with unprefixed version. + utils.deprecated('navigator.getUserMedia', + 'navigator.mediaDevices.getUserMedia'); + navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError); + }; + + if (!(browserDetails.version > 55 && + 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) { + const remap = function(obj, a, b) { + if (a in obj && !(b in obj)) { + obj[b] = obj[a]; + delete obj[a]; + } + }; + + const nativeGetUserMedia = navigator.mediaDevices.getUserMedia. + bind(navigator.mediaDevices); + navigator.mediaDevices.getUserMedia = function(c) { + if (typeof c === 'object' && typeof c.audio === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c.audio, 'autoGainControl', 'mozAutoGainControl'); + remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeGetUserMedia(c); + }; + + if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) { + const nativeGetSettings = MediaStreamTrack.prototype.getSettings; + MediaStreamTrack.prototype.getSettings = function() { + const obj = nativeGetSettings.apply(this, arguments); + remap(obj, 'mozAutoGainControl', 'autoGainControl'); + remap(obj, 'mozNoiseSuppression', 'noiseSuppression'); + return obj; + }; + } + + if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) { + const nativeApplyConstraints = + MediaStreamTrack.prototype.applyConstraints; + MediaStreamTrack.prototype.applyConstraints = function(c) { + if (this.kind === 'audio' && typeof c === 'object') { + c = JSON.parse(JSON.stringify(c)); + remap(c, 'autoGainControl', 'mozAutoGainControl'); + remap(c, 'noiseSuppression', 'mozNoiseSuppression'); + } + return nativeApplyConstraints.apply(this, [c]); + }; + } + } +} diff --git a/node_modules/webrtc-adapter/src/js/safari/safari_shim.js b/node_modules/webrtc-adapter/src/js/safari/safari_shim.js new file mode 100644 index 0000000..cfd09a3 --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/safari/safari_shim.js @@ -0,0 +1,352 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +'use strict'; +import * as utils from '../utils'; + +export function shimLocalStreamsAPI(window) { + if (typeof window !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getLocalStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getLocalStreams = + function getLocalStreams() { + if (!this._localStreams) { + this._localStreams = []; + } + return this._localStreams; + }; + } + if (!('addStream' in window.RTCPeerConnection.prototype)) { + const _addTrack = window.RTCPeerConnection.prototype.addTrack; + window.RTCPeerConnection.prototype.addStream = function addStream(stream) { + if (!this._localStreams) { + this._localStreams = []; + } + if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + // Try to emulate Chrome's behaviour of adding in audio-video order. + // Safari orders by track id. + stream.getAudioTracks().forEach(track => _addTrack.call(this, track, + stream)); + stream.getVideoTracks().forEach(track => _addTrack.call(this, track, + stream)); + }; + + window.RTCPeerConnection.prototype.addTrack = + function addTrack(track, ...streams) { + if (streams) { + streams.forEach((stream) => { + if (!this._localStreams) { + this._localStreams = [stream]; + } else if (!this._localStreams.includes(stream)) { + this._localStreams.push(stream); + } + }); + } + return _addTrack.apply(this, arguments); + }; + } + if (!('removeStream' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.removeStream = + function removeStream(stream) { + if (!this._localStreams) { + this._localStreams = []; + } + const index = this._localStreams.indexOf(stream); + if (index === -1) { + return; + } + this._localStreams.splice(index, 1); + const tracks = stream.getTracks(); + this.getSenders().forEach(sender => { + if (tracks.includes(sender.track)) { + this.removeTrack(sender); + } + }); + }; + } +} + +export function shimRemoteStreamsAPI(window) { + if (typeof window !== 'object' || !window.RTCPeerConnection) { + return; + } + if (!('getRemoteStreams' in window.RTCPeerConnection.prototype)) { + window.RTCPeerConnection.prototype.getRemoteStreams = + function getRemoteStreams() { + return this._remoteStreams ? this._remoteStreams : []; + }; + } + if (!('onaddstream' in window.RTCPeerConnection.prototype)) { + Object.defineProperty(window.RTCPeerConnection.prototype, 'onaddstream', { + get() { + return this._onaddstream; + }, + set(f) { + if (this._onaddstream) { + this.removeEventListener('addstream', this._onaddstream); + this.removeEventListener('track', this._onaddstreampoly); + } + this.addEventListener('addstream', this._onaddstream = f); + this.addEventListener('track', this._onaddstreampoly = (e) => { + e.streams.forEach(stream => { + if (!this._remoteStreams) { + this._remoteStreams = []; + } + if (this._remoteStreams.includes(stream)) { + return; + } + this._remoteStreams.push(stream); + const event = new Event('addstream'); + event.stream = stream; + this.dispatchEvent(event); + }); + }); + } + }); + const origSetRemoteDescription = + window.RTCPeerConnection.prototype.setRemoteDescription; + window.RTCPeerConnection.prototype.setRemoteDescription = + function setRemoteDescription() { + const pc = this; + if (!this._onaddstreampoly) { + this.addEventListener('track', this._onaddstreampoly = function(e) { + e.streams.forEach(stream => { + if (!pc._remoteStreams) { + pc._remoteStreams = []; + } + if (pc._remoteStreams.indexOf(stream) >= 0) { + return; + } + pc._remoteStreams.push(stream); + const event = new Event('addstream'); + event.stream = stream; + pc.dispatchEvent(event); + }); + }); + } + return origSetRemoteDescription.apply(pc, arguments); + }; + } +} + +export function shimCallbacksAPI(window) { + if (typeof window !== 'object' || !window.RTCPeerConnection) { + return; + } + const prototype = window.RTCPeerConnection.prototype; + const origCreateOffer = prototype.createOffer; + const origCreateAnswer = prototype.createAnswer; + const setLocalDescription = prototype.setLocalDescription; + const setRemoteDescription = prototype.setRemoteDescription; + const addIceCandidate = prototype.addIceCandidate; + + prototype.createOffer = + function createOffer(successCallback, failureCallback) { + const options = (arguments.length >= 2) ? arguments[2] : arguments[0]; + const promise = origCreateOffer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + + prototype.createAnswer = + function createAnswer(successCallback, failureCallback) { + const options = (arguments.length >= 2) ? arguments[2] : arguments[0]; + const promise = origCreateAnswer.apply(this, [options]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + + let withCallback = function(description, successCallback, failureCallback) { + const promise = setLocalDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setLocalDescription = withCallback; + + withCallback = function(description, successCallback, failureCallback) { + const promise = setRemoteDescription.apply(this, [description]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.setRemoteDescription = withCallback; + + withCallback = function(candidate, successCallback, failureCallback) { + const promise = addIceCandidate.apply(this, [candidate]); + if (!failureCallback) { + return promise; + } + promise.then(successCallback, failureCallback); + return Promise.resolve(); + }; + prototype.addIceCandidate = withCallback; +} + +export function shimGetUserMedia(window) { + const navigator = window && window.navigator; + + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + // shim not needed in Safari 12.1 + const mediaDevices = navigator.mediaDevices; + const _getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices); + navigator.mediaDevices.getUserMedia = (constraints) => { + return _getUserMedia(shimConstraints(constraints)); + }; + } + + if (!navigator.getUserMedia && navigator.mediaDevices && + navigator.mediaDevices.getUserMedia) { + navigator.getUserMedia = function getUserMedia(constraints, cb, errcb) { + navigator.mediaDevices.getUserMedia(constraints) + .then(cb, errcb); + }.bind(navigator); + } +} + +export function shimConstraints(constraints) { + if (constraints && constraints.video !== undefined) { + return Object.assign({}, + constraints, + {video: utils.compactObject(constraints.video)} + ); + } + + return constraints; +} + +export function shimRTCIceServerUrls(window) { + if (!window.RTCPeerConnection) { + return; + } + // migrate from non-spec RTCIceServer.url to RTCIceServer.urls + const OrigPeerConnection = window.RTCPeerConnection; + window.RTCPeerConnection = + function RTCPeerConnection(pcConfig, pcConstraints) { + if (pcConfig && pcConfig.iceServers) { + const newIceServers = []; + for (let i = 0; i < pcConfig.iceServers.length; i++) { + let server = pcConfig.iceServers[i]; + if (server.urls === undefined && server.url) { + utils.deprecated('RTCIceServer.url', 'RTCIceServer.urls'); + server = JSON.parse(JSON.stringify(server)); + server.urls = server.url; + delete server.url; + newIceServers.push(server); + } else { + newIceServers.push(pcConfig.iceServers[i]); + } + } + pcConfig.iceServers = newIceServers; + } + return new OrigPeerConnection(pcConfig, pcConstraints); + }; + window.RTCPeerConnection.prototype = OrigPeerConnection.prototype; + // wrap static methods. Currently just generateCertificate. + if ('generateCertificate' in OrigPeerConnection) { + Object.defineProperty(window.RTCPeerConnection, 'generateCertificate', { + get() { + return OrigPeerConnection.generateCertificate; + } + }); + } +} + +export function shimTrackEventTransceiver(window) { + // Add event.transceiver member over deprecated event.receiver + if (typeof window === 'object' && window.RTCTrackEvent && + 'receiver' in window.RTCTrackEvent.prototype && + !('transceiver' in window.RTCTrackEvent.prototype)) { + Object.defineProperty(window.RTCTrackEvent.prototype, 'transceiver', { + get() { + return {receiver: this.receiver}; + } + }); + } +} + +export function shimCreateOfferLegacy(window) { + const origCreateOffer = window.RTCPeerConnection.prototype.createOffer; + window.RTCPeerConnection.prototype.createOffer = + function createOffer(offerOptions) { + if (offerOptions) { + if (typeof offerOptions.offerToReceiveAudio !== 'undefined') { + // support bit values + offerOptions.offerToReceiveAudio = + !!offerOptions.offerToReceiveAudio; + } + const audioTransceiver = this.getTransceivers().find(transceiver => + transceiver.receiver.track.kind === 'audio'); + if (offerOptions.offerToReceiveAudio === false && audioTransceiver) { + if (audioTransceiver.direction === 'sendrecv') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('sendonly'); + } else { + audioTransceiver.direction = 'sendonly'; + } + } else if (audioTransceiver.direction === 'recvonly') { + if (audioTransceiver.setDirection) { + audioTransceiver.setDirection('inactive'); + } else { + audioTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveAudio === true && + !audioTransceiver) { + this.addTransceiver('audio', {direction: 'recvonly'}); + } + + if (typeof offerOptions.offerToReceiveVideo !== 'undefined') { + // support bit values + offerOptions.offerToReceiveVideo = + !!offerOptions.offerToReceiveVideo; + } + const videoTransceiver = this.getTransceivers().find(transceiver => + transceiver.receiver.track.kind === 'video'); + if (offerOptions.offerToReceiveVideo === false && videoTransceiver) { + if (videoTransceiver.direction === 'sendrecv') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('sendonly'); + } else { + videoTransceiver.direction = 'sendonly'; + } + } else if (videoTransceiver.direction === 'recvonly') { + if (videoTransceiver.setDirection) { + videoTransceiver.setDirection('inactive'); + } else { + videoTransceiver.direction = 'inactive'; + } + } + } else if (offerOptions.offerToReceiveVideo === true && + !videoTransceiver) { + this.addTransceiver('video', {direction: 'recvonly'}); + } + } + return origCreateOffer.apply(this, arguments); + }; +} + +export function shimAudioContext(window) { + if (typeof window !== 'object' || window.AudioContext) { + return; + } + window.AudioContext = window.webkitAudioContext; +} + diff --git a/node_modules/webrtc-adapter/src/js/utils.js b/node_modules/webrtc-adapter/src/js/utils.js new file mode 100644 index 0000000..c03f0fa --- /dev/null +++ b/node_modules/webrtc-adapter/src/js/utils.js @@ -0,0 +1,263 @@ +/* + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. + */ +/* eslint-env node */ +'use strict'; + +let logDisabled_ = true; +let deprecationWarnings_ = true; + +/** + * Extract browser version out of the provided user agent string. + * + * @param {!string} uastring userAgent string. + * @param {!string} expr Regular expression used as match criteria. + * @param {!number} pos position in the version string to be returned. + * @return {!number} browser version. + */ +export function extractVersion(uastring, expr, pos) { + const match = uastring.match(expr); + return match && match.length >= pos && parseInt(match[pos], 10); +} + +// Wraps the peerconnection event eventNameToWrap in a function +// which returns the modified event object (or false to prevent +// the event). +export function wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) { + if (!window.RTCPeerConnection) { + return; + } + const proto = window.RTCPeerConnection.prototype; + const nativeAddEventListener = proto.addEventListener; + proto.addEventListener = function(nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap) { + return nativeAddEventListener.apply(this, arguments); + } + const wrappedCallback = (e) => { + const modifiedEvent = wrapper(e); + if (modifiedEvent) { + if (cb.handleEvent) { + cb.handleEvent(modifiedEvent); + } else { + cb(modifiedEvent); + } + } + }; + this._eventMap = this._eventMap || {}; + if (!this._eventMap[eventNameToWrap]) { + this._eventMap[eventNameToWrap] = new Map(); + } + this._eventMap[eventNameToWrap].set(cb, wrappedCallback); + return nativeAddEventListener.apply(this, [nativeEventName, + wrappedCallback]); + }; + + const nativeRemoveEventListener = proto.removeEventListener; + proto.removeEventListener = function(nativeEventName, cb) { + if (nativeEventName !== eventNameToWrap || !this._eventMap + || !this._eventMap[eventNameToWrap]) { + return nativeRemoveEventListener.apply(this, arguments); + } + if (!this._eventMap[eventNameToWrap].has(cb)) { + return nativeRemoveEventListener.apply(this, arguments); + } + const unwrappedCb = this._eventMap[eventNameToWrap].get(cb); + this._eventMap[eventNameToWrap].delete(cb); + if (this._eventMap[eventNameToWrap].size === 0) { + delete this._eventMap[eventNameToWrap]; + } + if (Object.keys(this._eventMap).length === 0) { + delete this._eventMap; + } + return nativeRemoveEventListener.apply(this, [nativeEventName, + unwrappedCb]); + }; + + Object.defineProperty(proto, 'on' + eventNameToWrap, { + get() { + return this['_on' + eventNameToWrap]; + }, + set(cb) { + if (this['_on' + eventNameToWrap]) { + this.removeEventListener(eventNameToWrap, + this['_on' + eventNameToWrap]); + delete this['_on' + eventNameToWrap]; + } + if (cb) { + this.addEventListener(eventNameToWrap, + this['_on' + eventNameToWrap] = cb); + } + }, + enumerable: true, + configurable: true + }); +} + +export function disableLog(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + typeof bool + + '. Please use a boolean.'); + } + logDisabled_ = bool; + return (bool) ? 'adapter.js logging disabled' : + 'adapter.js logging enabled'; +} + +/** + * Disable or enable deprecation warnings + * @param {!boolean} bool set to true to disable warnings. + */ +export function disableWarnings(bool) { + if (typeof bool !== 'boolean') { + return new Error('Argument type: ' + typeof bool + + '. Please use a boolean.'); + } + deprecationWarnings_ = !bool; + return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled'); +} + +export function log() { + if (typeof window === 'object') { + if (logDisabled_) { + return; + } + if (typeof console !== 'undefined' && typeof console.log === 'function') { + console.log.apply(console, arguments); + } + } +} + +/** + * Shows a deprecation warning suggesting the modern and spec-compatible API. + */ +export function deprecated(oldMethod, newMethod) { + if (!deprecationWarnings_) { + return; + } + console.warn(oldMethod + ' is deprecated, please use ' + newMethod + + ' instead.'); +} + +/** + * Browser detector. + * + * @return {object} result containing browser and version + * properties. + */ +export function detectBrowser(window) { + // Returned result object. + const result = {browser: null, version: null}; + + // Fail early if it's not a browser + if (typeof window === 'undefined' || !window.navigator || + !window.navigator.userAgent) { + result.browser = 'Not a browser.'; + return result; + } + + const {navigator} = window; + + if (navigator.mozGetUserMedia) { // Firefox. + result.browser = 'firefox'; + result.version = extractVersion(navigator.userAgent, + /Firefox\/(\d+)\./, 1); + } else if (navigator.webkitGetUserMedia || + (window.isSecureContext === false && window.webkitRTCPeerConnection)) { + // Chrome, Chromium, Webview, Opera. + // Version matches Chrome/WebRTC version. + // Chrome 74 removed webkitGetUserMedia on http as well so we need the + // more complicated fallback to webkitRTCPeerConnection. + result.browser = 'chrome'; + result.version = extractVersion(navigator.userAgent, + /Chrom(e|ium)\/(\d+)\./, 2); + } else if (window.RTCPeerConnection && + navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { // Safari. + result.browser = 'safari'; + result.version = extractVersion(navigator.userAgent, + /AppleWebKit\/(\d+)\./, 1); + result.supportsUnifiedPlan = window.RTCRtpTransceiver && + 'currentDirection' in window.RTCRtpTransceiver.prototype; + } else { // Default fallthrough: not supported. + result.browser = 'Not a supported browser.'; + return result; + } + + return result; +} + +/** + * Checks if something is an object. + * + * @param {*} val The something you want to check. + * @return true if val is an object, false otherwise. + */ +function isObject(val) { + return Object.prototype.toString.call(val) === '[object Object]'; +} + +/** + * Remove all empty objects and undefined values + * from a nested object -- an enhanced and vanilla version + * of Lodash's `compact`. + */ +export function compactObject(data) { + if (!isObject(data)) { + return data; + } + + return Object.keys(data).reduce(function(accumulator, key) { + const isObj = isObject(data[key]); + const value = isObj ? compactObject(data[key]) : data[key]; + const isEmptyObject = isObj && !Object.keys(value).length; + if (value === undefined || isEmptyObject) { + return accumulator; + } + return Object.assign(accumulator, {[key]: value}); + }, {}); +} + +/* iterates the stats graph recursively. */ +export function walkStats(stats, base, resultSet) { + if (!base || resultSet.has(base.id)) { + return; + } + resultSet.set(base.id, base); + Object.keys(base).forEach(name => { + if (name.endsWith('Id')) { + walkStats(stats, stats.get(base[name]), resultSet); + } else if (name.endsWith('Ids')) { + base[name].forEach(id => { + walkStats(stats, stats.get(id), resultSet); + }); + } + }); +} + +/* filter getStats for a sender/receiver track. */ +export function filterStats(result, track, outbound) { + const streamStatsType = outbound ? 'outbound-rtp' : 'inbound-rtp'; + const filteredResult = new Map(); + if (track === null) { + return filteredResult; + } + const trackStats = []; + result.forEach(value => { + if (value.type === 'track' && + value.trackIdentifier === track.id) { + trackStats.push(value); + } + }); + trackStats.forEach(trackStat => { + result.forEach(stats => { + if (stats.type === streamStatsType && stats.trackId === trackStat.id) { + walkStats(result, stats, filteredResult); + } + }); + }); + return filteredResult; +} + diff --git a/node_modules/zxing-wasm/LICENSE b/node_modules/zxing-wasm/LICENSE new file mode 100644 index 0000000..5dd3d5b --- /dev/null +++ b/node_modules/zxing-wasm/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Ze-Zheng Wu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/zxing-wasm/README.md b/node_modules/zxing-wasm/README.md new file mode 100644 index 0000000..38d65ef --- /dev/null +++ b/node_modules/zxing-wasm/README.md @@ -0,0 +1,246 @@ +# zxing-wasm + +[![npm](https://img.shields.io/npm/v/zxing-wasm)](https://www.npmjs.com/package/zxing-wasm/v/latest) [![npm bundle size (scoped)](https://img.shields.io/bundlephobia/minzip/zxing-wasm)](https://www.npmjs.com/package/zxing-wasm/v/latest) [![jsDelivr hits (npm scoped)](https://img.shields.io/jsdelivr/npm/hm/zxing-wasm?color=%23ff5627)](https://cdn.jsdelivr.net/npm/zxing-wasm@latest/) [![Netlify Status](https://api.netlify.com/api/v1/badges/743dfd74-1572-49fb-a758-c1840e174366/deploy-status?branch=main)](https://app.netlify.com/sites/zxing-wasm/deploys) + +[ZXing-C++](https://github.com/zxing-cpp/zxing-cpp) WebAssembly as an ES/CJS module with types. Read or write barcodes in your browser (or other JS runtimes like node)! + +Visit [this online demo](https://zxing-wasm-demo.netlify.app/) to quickly explore its basic functions. It works best on the latest chromium browsers. + +## Build + +```bash +git clone --recurse-submodules https://github.com/Sec-ant/zxing-wasm +cd zxing-wasm +npm i +# install cmake first: +# https://cmake.org/download/ +npm run cmake +# install emscripten first: +# https://emscripten.org/docs/getting_started/downloads.html +npm run build:wasm +npm run build +``` + +## Install + +``` +npm i zxing-wasm +``` + +## Documentation + +https://zxing-wasm.netlify.app/ + +## Demo + +Demo page: https://zxing-wasm-demo.netlify.app/ + +Demo source: https://github.com/Sec-ant/zxing-wasm-demo + +## Usage + +This package exports 3 subpaths: `full`, `reader` and `writer`. You can choose whichever fits your needs. If you use TypeScript, you should set [`moduleResolution`](https://www.typescriptlang.org/docs/handbook/modules/theory.html#module-resolution) to [`bundler`](https://www.typescriptlang.org/docs/handbook/modules/reference.html#bundler), [`node16` or `nodenext`](https://www.typescriptlang.org/docs/handbook/modules/reference.html#node16-nodenext-1) in your `tsconfig.json` file to properly resolve the exported module. + +### `zxing-wasm` or `zxing-wasm/full` + +These 2 subpaths include functions to both read and write barcodes. The wasm binary size is ~1.17 MB. + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, + writeBarcodeToImageFile, +} from "zxing-wasm"; +``` + +or + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, + writeBarcodeToImageFile, +} from "zxing-wasm/full"; +``` + +### `zxing-wasm/reader` + +This subpath only includes functions to read barcodes. The wasm binary size is ~930 KB. + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, +} from "zxing-wasm/reader"; +``` + +### `zxing-wasm/writer` + +This subpath only includes a function to write barcodes. The wasm binary size is ~330 KB. + +```ts +import { writeBarcodeToImageFile } from "zxing-wasm/writer"; +``` + +### IIFE Scripts + +Apart from ES and CJS modules, this package also ships IIFE scripts. The registered global variable is named `ZXingWASM`. + +```html + + + + + + + + +``` + +### [`readBarcodesFromImageFile`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageFile.html) and [`readBarcodesFromImageData`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageData.html) + +These 2 functions are for reading barcodes. + +[`readBarcodesFromImageFile`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageFile.html) accepts an image [`Blob`](https://developer.mozilla.org/docs/Web/API/Blob) or an image [`File`](https://developer.mozilla.org/docs/Web/API/File) as the first input. They're encoded images, e.g. `.png` `.jpg` files. + +[`readBarcodesFromImageData`](https://zxing-wasm.netlify.app/functions/full.readBarcodesFromImageData.html) accepts an [`ImageData`](https://developer.mozilla.org/docs/Web/API/ImageData) as the first input. They're raw pixels that usually acquired from [``](https://developer.mozilla.org/docs/Web/HTML/Element/canvas) or related APIs. + +Both of these 2 functions optionally accept the same second input: [`ReaderOptions`](https://zxing-wasm.netlify.app/interfaces/full.ReaderOptions.html). + +The return result of these 2 functions is a `Promise` of an array of [`ReadResult`](https://zxing-wasm.netlify.app/interfaces/full.ReadResult.html)s. + +e.g. + +```ts +import { + readBarcodesFromImageFile, + readBarcodesFromImageData, + type ReaderOptions, +} from "zxing-wasm/reader"; + +const readerOptions: ReaderOptions = { + tryHarder: true, + formats: ["QRCode"], + maxNumberOfSymbols: 1, +}; + +/** + * Read from image file/blob + */ +const imageFile = await fetch( + "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Hello%20world!", +).then((resp) => resp.blob()); + +const imageFileReadResults = await readBarcodesFromImageFile( + imageFile, + readerOptions, +); + +console.log(imageFileReadResults[0].text); // Hello world! + +/** + * Read from image data + */ +const imageData = await createImageBitmap(imageFile).then((imageBitmap) => { + const { width, height } = imageBitmap; + const context = new OffscreenCanvas(width, height).getContext( + "2d", + ) as OffscreenCanvasRenderingContext2D; + context.drawImage(imageBitmap, 0, 0, width, height); + return context.getImageData(0, 0, width, height); +}); + +const imageDataReadResults = await readBarcodesFromImageData( + imageData, + readerOptions, +); + +console.log(imageDataReadResults[0].text); // Hello world! +``` + +### [`writeBarcodeToImageFile`](https://zxing-wasm.netlify.app/functions/full.writeBarcodeToImageFile.html) + +This function is used to write barcodes. The first argument of this function is a text string to be encoded and the optional second argument is an [`WriterOptions`](https://zxing-wasm.netlify.app/interfaces/full.WriterOptions.html). + +The return result of this function is a `Promise` of a [`WriteResult`](https://zxing-wasm.netlify.app/interfaces/full.WriteResult.html). + +e.g. + +```ts +import { writeBarcodeToImageFile, type WriterOptions } from "zxing-wasm/writer"; + +const writerOptions: WriterOptions = { + format: "QRCode", + width: 150, + height: 150, + margin: 10, + eccLevel: 2, +}; + +const writeOutput = await writeBarcodeToImageFile( + "Hello world!", + writerOptions, +); + +console.log(writeOutput.image); +``` + +## Notes + +When using this package, the `.wasm` binary needs to be served along with the JS glue code. In order to provide a smooth dev experience, the serve path is automatically assigned the [jsDelivr CDN](https://fastly.jsdelivr.net/npm/zxing-wasm/) url upon build. + +If you would like to change the serve path (to one of your local network hosts, some other CDNs, or just Base64 encoded data URIs), please use [`setZXingModuleOverrides`](https://zxing-wasm.netlify.app/functions/full.setZXingModuleOverrides.html) to override the [`locateFile`](https://emscripten.org/docs/api_reference/module.html?highlight=locatefile#Module.locateFile) function in advance. `locateFile` is one of the [Emscripten `Module` attribute hooks](https://emscripten.org/docs/api_reference/module.html?highlight=locatefile#affecting-execution) that can affect the code execution of the `Module` object during its lifecycles. + +e.g. + +```ts +import { setZXingModuleOverrides, writeBarcodeToImageFile } from "zxing-wasm"; + +// override the locateFile function +setZXingModuleOverrides({ + locateFile: (path, prefix) => { + if (path.endsWith(".wasm")) { + return `https://unpkg.com/zxing-wasm@1/dist/full/${path}`; + } + return prefix + path; + }, +}); + +// call read or write functions afterwards +const writeOutput = await writeBarcodeToImageFile("Hello world!"); +``` + +The wasm binary won't be fetched or instantiated unless a [read](#readbarcodesfromimagefile-and-readbarcodesfromimagedata) or [write](#writebarcodetoimagefile) function is firstly called, and will only be instantiated once given the same ([`Object.is`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/is)) [ZXingModuleOverrides](https://zxing-wasm.netlify.app/types/full.ZXingModuleOverrides). If you want to manually trigger the download and instantiation of the wasm binary prior to any read or write functions, you can use [`getZXingModule`](https://zxing-wasm.netlify.app/functions/full.getZXingModule). This function will also return a `Promise` that resolves to a [`ZXingModule`](https://zxing-wasm.netlify.app/types/full.ZXingModule). + +```ts +import { getZXingModule } from "zxing-wasm"; + +/** + * This function will trigger the download and + * instantiation of the wasm binary immediately + */ +const zxingModulePromise1 = getZXingModule(); + +const zxingModulePromise2 = getZXingModule(); + +console.log(zxingModulePromise1 === zxingModulePromise2); // true +``` + +[`getZXingModule`](https://zxing-wasm.netlify.app/functions/full.getZXingModule) can also optionally accept a [`ZXingModuleOverrides`](https://zxing-wasm.netlify.app/types/full.ZXingModuleOverrides.html) argument. + +```ts +import { getZXingModule } from "zxing-wasm"; + +getZXingModule({ + locateFile: (path, prefix) => { + if (path.endsWith(".wasm")) { + return `https://unpkg.com/zxing-wasm@1/dist/full/${path}`; + } + return prefix + path; + }, +}); +``` + +## License + +MIT diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/barcodeFormat.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/barcodeFormat.d.ts new file mode 100644 index 0000000..4d682b6 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/barcodeFormat.d.ts @@ -0,0 +1,21 @@ +export declare const barcodeFormats: readonly ["Aztec", "Codabar", "Code128", "Code39", "Code93", "DataBar", "DataBarExpanded", "DataMatrix", "DXFilmEdge", "EAN-13", "EAN-8", "ITF", "Linear-Codes", "Matrix-Codes", "MaxiCode", "MicroQRCode", "None", "PDF417", "QRCode", "rMQRCode", "UPC-A", "UPC-E"]; +/** + * @internal + */ +export type BarcodeFormat = (typeof barcodeFormats)[number]; +/** + * Barcode formats that can be used in {@link ReaderOptions.formats | `ReaderOptions.formats`} to read barcodes. + */ +export type ReadInputBarcodeFormat = Exclude; +/** + * Barcode formats that can be used in {@link WriterOptions.format | `WriterOptions.format`} to write barcodes. + */ +export type WriteInputBarcodeFormat = Exclude; +/** + * Barcode formats that may be returned in {@link ReadResult.format} in read functions. + */ +export type ReadOutputBarcodeFormat = Exclude; +export declare function formatsToString(formats: BarcodeFormat[]): string; +export declare function formatsFromString(formatString: string): BarcodeFormat[]; +export declare function formatFromString(format: string): BarcodeFormat; +export declare function normalizeFormatString(format: string): string; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/binarizer.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/binarizer.d.ts new file mode 100644 index 0000000..52ee7e9 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/binarizer.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const binarizers: readonly ["LocalAverage", "GlobalHistogram", "FixedThreshold", "BoolCast"]; +export type Binarizer = (typeof binarizers)[number]; +/** + * @internal + */ +export type ZXingBinarizer = Record; +export declare function binarizerToZXingEnum(zxingModule: ZXingModule, binarizer: Binarizer): ZXingEnum; +export declare function zxingEnumToBinarizer(zxingEnum: ZXingEnum): Binarizer; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/characterSet.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/characterSet.d.ts new file mode 100644 index 0000000..35ecb14 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/characterSet.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule, ZXingModuleType } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const characterSets: readonly ["Unknown", "ASCII", "ISO8859_1", "ISO8859_2", "ISO8859_3", "ISO8859_4", "ISO8859_5", "ISO8859_6", "ISO8859_7", "ISO8859_8", "ISO8859_9", "ISO8859_10", "ISO8859_11", "ISO8859_13", "ISO8859_14", "ISO8859_15", "ISO8859_16", "Cp437", "Cp1250", "Cp1251", "Cp1252", "Cp1256", "Shift_JIS", "Big5", "GB2312", "GB18030", "EUC_JP", "EUC_KR", "UTF16BE", "UTF8", "UTF16LE", "UTF32BE", "UTF32LE", "BINARY"]; +export type CharacterSet = (typeof characterSets)[number]; +/** + * @internal + */ +export type ZXingCharacterSet = Record; +export declare function characterSetToZXingEnum(zxingModule: ZXingModule, characterSet: CharacterSet): ZXingEnum; +export declare function zxingEnumToCharacterSet(zxingEnum: ZXingEnum): CharacterSet; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/contentType.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/contentType.d.ts new file mode 100644 index 0000000..9fe9007 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/contentType.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const contentTypes: readonly ["Text", "Binary", "Mixed", "GS1", "ISO15434", "UnknownECI"]; +export type ContentType = (typeof contentTypes)[number]; +/** + * @internal + */ +export type ZXingContentType = Record; +export declare function contentTypeToZXingEnum(zxingModule: ZXingModule, contentType: ContentType): ZXingEnum; +export declare function zxingEnumToContentType(zxingEnum: ZXingEnum): ContentType; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/eanAddOnSymbol.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/eanAddOnSymbol.d.ts new file mode 100644 index 0000000..fb45fd7 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/eanAddOnSymbol.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const eanAddOnSymbols: readonly ["Ignore", "Read", "Require"]; +export type EanAddOnSymbol = (typeof eanAddOnSymbols)[number]; +/** + * @internal + */ +export type ZXingEanAddOnSymbol = Record; +export declare function eanAddOnSymbolToZXingEnum(zxingModule: ZXingModule, eanAddOnSymbol: EanAddOnSymbol): ZXingEnum; +export declare function zxingEnumToEanAddOnSymbol(zxingEnum: ZXingEnum): EanAddOnSymbol; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/eccLevel.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/eccLevel.d.ts new file mode 100644 index 0000000..bbfb1bc --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/eccLevel.d.ts @@ -0,0 +1,4 @@ +export declare const writeInputEccLevels: readonly [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]; +export type WriteInputEccLevel = (typeof writeInputEccLevels)[number]; +export declare const readOutputEccLevels: readonly ["L", "M", "Q", "H"]; +export type ReadOutputEccLevel = (typeof readOutputEccLevels)[number]; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/enum.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/enum.d.ts new file mode 100644 index 0000000..7d42d60 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/enum.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export interface ZXingEnum { + value: number; +} diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/exposedReaderBindings.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/exposedReaderBindings.d.ts new file mode 100644 index 0000000..cc29207 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/exposedReaderBindings.d.ts @@ -0,0 +1,17 @@ +import { type ReaderOptions } from "./index.js"; +export declare const defaultReaderOptions: Required; +export { barcodeFormats, type BarcodeFormat, type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat, binarizers, type ZXingBinarizer, type Binarizer, characterSets, type ZXingCharacterSet, type CharacterSet, contentTypes, type ZXingContentType, type ContentType, type ZXingReaderOptions, type ReaderOptions, eanAddOnSymbols, type ZXingEanAddOnSymbol, type EanAddOnSymbol, readOutputEccLevels, type ReadOutputEccLevel, type ZXingEnum, type ZXingPoint, type ZXingPosition, type Point, type Position, type ZXingReadResult, type ReadResult, textModes, type ZXingTextMode, type TextMode, type ZXingVector, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultReaderOptions` + */ +defaultReaderOptions as defaultDecodeHints, }; +export { +/** + * @deprecated renamed as `ZXingReaderOptions` + */ +type ZXingReaderOptions as ZXingDecodeHints, +/** + * @deprecated renamed as `ReaderOptions` + */ +type ReaderOptions as DecodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/exposedWriterBindings.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/exposedWriterBindings.d.ts new file mode 100644 index 0000000..9254a66 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/exposedWriterBindings.d.ts @@ -0,0 +1,17 @@ +import { type WriterOptions } from "./index.js"; +export declare const defaultWriterOptions: Required; +export { barcodeFormats, type BarcodeFormat, type WriteInputBarcodeFormat, characterSets, type ZXingCharacterSet, type CharacterSet, writeInputEccLevels, type WriteInputEccLevel, type ZXingWriterOptions, type WriterOptions, type ZXingEnum, type ZXingWriteResult, type WriteResult, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultWriterOptions` + */ +defaultWriterOptions as defaultEncodeHints, }; +export { +/** + * @deprecated renamed as `ZXingWriterOptions` + */ +type ZXingWriterOptions as ZXingEncodeHints, +/** + * @deprecated renamed as `WriterOptions` + */ +type WriterOptions as EncodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/index.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/index.d.ts new file mode 100644 index 0000000..0081c44 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/index.d.ts @@ -0,0 +1,14 @@ +export * from "./barcodeFormat.js"; +export * from "./binarizer.js"; +export * from "./characterSet.js"; +export * from "./contentType.js"; +export * from "./readerOptions.js"; +export * from "./eanAddOnSymbol.js"; +export * from "./eccLevel.js"; +export * from "./writerOptions.js"; +export * from "./enum.js"; +export * from "./position.js"; +export * from "./readResult.js"; +export * from "./textMode.js"; +export * from "./vector.js"; +export * from "./writeResult.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/position.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/position.d.ts new file mode 100644 index 0000000..2cbe76c --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/position.d.ts @@ -0,0 +1,55 @@ +/** + * @internal + */ +export interface ZXingPoint { + x: number; + y: number; +} +/** + * @internal + */ +export interface ZXingPosition { + topLeft: ZXingPoint; + topRight: ZXingPoint; + bottomLeft: ZXingPoint; + bottomRight: ZXingPoint; +} +/** + * X, Y coordinates to describe a point. + * + * @property x X coordinate. + * @property y Y coordinate. + * + * @see {@link Position | `Position`} + */ +export interface Point extends ZXingPoint { +} +/** + * Position of the decoded barcode. + */ +export interface Position { + /** + * Top-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topLeft: Point; + /** + * Top-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topRight: Point; + /** + * Bottom-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomLeft: Point; + /** + * Bottom-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomRight: Point; +} diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/readResult.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/readResult.d.ts new file mode 100644 index 0000000..fdee88d --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/readResult.d.ts @@ -0,0 +1,123 @@ +import { ReadOutputBarcodeFormat } from "./barcodeFormat.js"; +import { ReadOutputEccLevel } from "./eccLevel.js"; +import { ContentType } from "./contentType.js"; +import { ZXingPosition, Position } from "./position.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReadResult { + /** + * Whether the barcode is valid. + */ + isValid: boolean; + /** + * Error message (if any). + * + * @see {@link ReaderOptions.returnErrors | `ReaderOptions.returnErrors`} + */ + error: string; + format: string; + /** + * Raw / Standard content without any modifications like character set conversions. + */ + bytes: Uint8Array; + /** + * Raw / Standard content following the ECI protocol. + */ + bytesECI: Uint8Array; + /** + * The {@link ReadResult.bytes | `ReadResult.bytes`} content rendered to unicode / utf8 text + * accoring to specified {@link ReaderOptions.textMode | `ReaderOptions.textMode`}. + */ + text: string; + eccLevel: string; + contentType: ZXingEnum; + /** + * Whether or not an ECI tag was found. + */ + hasECI: boolean; + position: ZXingPosition; + /** + * Orientation of the barcode in degree. + */ + orientation: number; + /** + * Whether the symbol is mirrored (currently only supported by QRCode and DataMatrix). + */ + isMirrored: boolean; + /** + * Whether the symbol is inverted / has reveresed reflectance. + * + * @see {@link ReaderOptions.tryInvert | `ReaderOptions.tryInvert`} + */ + isInverted: boolean; + /** + * Symbology identifier `"]cm"` where `"c"` is the symbology code character, `"m"` the modifier. + */ + symbologyIdentifier: string; + /** + * Number of symbols in a structured append sequence. + * + * If this is not part of a structured append sequence, the returned value is `-1`. + * If it is a structured append symbol but the total number of symbols is unknown, the + * returned value is `0` (see PDF417 if optional "Segment Count" not given). + */ + sequenceSize: number; + /** + * The 0-based index of this symbol in a structured append sequence. + */ + sequenceIndex: number; + /** + * ID to check if a set of symbols belongs to the same structured append sequence. + * + * If the symbology does not support this feature, the returned value is empty (see MaxiCode). + * For QR Code, this is the parity integer converted to a string. + * For PDF417 and DataMatrix, this is the `"fileId"`. + */ + sequenceId: string; + /** + * Set if this is the reader initialisation / programming symbol. + */ + readerInit: boolean; + /** + * Number of lines have been detected with this code (applies only to linear symbologies). + */ + lineCount: number; + /** + * QRCode / DataMatrix / Aztec version or size. + * + * This property will be removed in the future. + * + * @deprecated + */ + version: string; +} +export interface ReadResult extends Omit { + /** + * Format of the barcode, should be one of {@link ReadOutputBarcodeFormat | `ReadOutputBarcodeFormat`}. + * + * Possible values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"None"`, + * `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + */ + format: ReadOutputBarcodeFormat; + /** + * Error correction level of the symbol (empty string if not applicable). + * + * This property may be renamed to `ecLevel` in the future. + */ + eccLevel: ReadOutputEccLevel; + /** + * A hint to the type of the content found. + */ + contentType: ContentType; + /** + * Position of the detected barcode. + */ + position: Position; +} +export declare function zxingReadResultToReadResult(zxingReadResult: ZXingReadResult): ReadResult; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/readerOptions.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/readerOptions.d.ts new file mode 100644 index 0000000..93eda5b --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/readerOptions.d.ts @@ -0,0 +1,204 @@ +import { ZXingModule } from "../core.js"; +import { ReadInputBarcodeFormat } from "./barcodeFormat.js"; +import { Binarizer } from "./binarizer.js"; +import { CharacterSet } from "./characterSet.js"; +import { EanAddOnSymbol } from "./eanAddOnSymbol.js"; +import { TextMode } from "./textMode.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReaderOptions { + formats: string; + /** + * Spend more time to try to find a barcode. Optimize for accuracy, not speed. + * + * @defaultValue `true` + */ + tryHarder: boolean; + /** + * Try detecting code in 90, 180 and 270 degree rotated images. + * + * @defaultValue `true` + */ + tryRotate: boolean; + /** + * Try detecting inverted (reversed reflectance) codes if the format allows for those. + * + * @defaultValue `true` + */ + tryInvert: boolean; + /** + * Try detecting code in downscaled images (depending on image size). + * + * @defaultValue `true` + * @see {@link downscaleFactor | `downscaleFactor`} {@link downscaleThreshold | `downscaleThreshold`} + */ + tryDownscale: boolean; + binarizer: ZXingEnum; + /** + * Set to `true` if the input contains nothing but a single perfectly aligned barcode (usually generated images). + * + * @defaultValue `false` + */ + isPure: boolean; + /** + * Image size ( min(width, height) ) threshold at which to start downscaled scanning + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `500` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleFactor | `downscaleFactor`} + */ + downscaleThreshold: number; + /** + * Scale factor to use during downscaling, meaningful values are `2`, `3` and `4`. + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `3` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleThreshold | `downscaleThreshold`} + */ + downscaleFactor: number; + /** + * The number of scan lines in a linear barcode that have to be equal to accept the result. + * + * @defaultValue `2` + */ + minLineCount: number; + /** + * The maximum number of symbols / barcodes to detect / look for in the image. + * The upper limit of this number is 255. + * + * @defaultValue `255` + */ + maxNumberOfSymbols: number; + /** + * If `true`, the Code-39 reader will try to read extended mode. + * + * @defaultValue `false` + */ + tryCode39ExtendedMode: boolean; + /** + * Assume Code-39 codes employ a check digit and validate it. + * + * @defaultValue `false` + */ + validateCode39CheckSum: boolean; + /** + * Assume ITF codes employ a GS1 check digit and validate it. + * + * @defaultValue `false` + */ + validateITFCheckSum: boolean; + /** + * If `true`, return the start and end chars in a Codabar barcode instead of stripping them. + * + * @defaultValue `false` + */ + returnCodabarStartEnd: boolean; + /** + * If `true`, return the barcodes with errors as well (e.g. checksum errors). + * + * @defaultValue `false` + */ + returnErrors: boolean; + eanAddOnSymbol: ZXingEnum; + textMode: ZXingEnum; + characterSet: ZXingEnum; +} +/** + * Reader options for reading barcodes. + */ +export interface ReaderOptions extends Partial> { + /** + * A set of {@link ReadInputBarcodeFormat | `ReadInputBarcodeFormat`}s that should be searched for. + * An empty list `[]` indicates all supported formats. + * + * Supported values in this list are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, `"Linear-Codes"`, `"Matrix-Codes"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `[]` + */ + formats?: ReadInputBarcodeFormat[]; + /** + * Algorithm to use for the grayscale to binary transformation. + * The difference is how to get to a threshold value T + * which results in a bit value R = L <= T. + * + * - `"LocalAverage"` + * + * T = average of neighboring pixels for matrix and GlobalHistogram for linear + * + * - `"GlobalHistogram"` + * + * T = valley between the 2 largest peaks in the histogram (per line in linear case) + * + * - `"FixedThreshold"` + * + * T = 127 + * + * - `"BoolCast"` + * + * T = 0, fastest possible + * + * @defaultValue `"LocalAverage"` + */ + binarizer?: Binarizer; + /** + * Specify whether to ignore, read or require EAN-2 / 5 add-on symbols while scanning EAN / UPC codes. + * + * - `"Ignore"` + * + * Ignore any Add-On symbol during read / scan + * + * - `"Read"` + * + * Read EAN-2 / EAN-5 Add-On symbol if found + * + * - `"Require"` + * + * Require EAN-2 / EAN-5 Add-On symbol to be present + * + * @defaultValue `"Read"` + */ + eanAddOnSymbol?: EanAddOnSymbol; + /** + * Specifies the `TextMode` that controls the result of {@link ReadResult.text | `ReadResult.text`}. + * + * - `"Plain"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to unicode based on ECI info or guessed character set + * + * - `"ECI"` + * + * Standard content following the ECI protocol with every character set ECI segment transcoded to unicode + * + * - `"HRI"` + * + * Human Readable Interpretation (dependent on the ContentType) + * + * - `"Hex"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to ASCII string of HEX values + * + * - `"Escaped"` + * + * Escape non-graphical characters in angle brackets (e.g. ASCII `29` will be transcoded to `""`) + * + * @defaultValue `"Plain"` + */ + textMode?: TextMode; + /** + * Character set to use (when applicable). + * If this is set to `"Unknown"`, auto-detecting will be used. + * + * @defaultValue `"Unknown"` + */ + characterSet?: CharacterSet; +} +export declare const defaultReaderOptions: Required; +export declare function readerOptionsToZXingReaderOptions(zxingModule: ZXingModule, readerOptions: Required): ZXingReaderOptions; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/textMode.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/textMode.d.ts new file mode 100644 index 0000000..5be28ff --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/textMode.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const textModes: readonly ["Plain", "ECI", "HRI", "Hex", "Escaped"]; +export type TextMode = (typeof textModes)[number]; +/** + * @internal + */ +export type ZXingTextMode = Record; +export declare function textModeToZXingEnum(zxingModule: ZXingModule, textMode: TextMode): ZXingEnum; +export declare function zxingEnumToTextMode(zxingEnum: ZXingEnum): TextMode; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/vector.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/vector.d.ts new file mode 100644 index 0000000..034bd5a --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/vector.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface ZXingVector { + size: () => number; + get: (i: number) => T | undefined; +} diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/writeResult.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/writeResult.d.ts new file mode 100644 index 0000000..ac46b1f --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/writeResult.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export interface ZXingWriteResult { + image: Uint8Array; + /** + * Encoding error. + * If there's no error, this will be an empty string `""`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + error: string; + delete: () => void; +} +export interface WriteResult extends Omit { + /** + * The encoded barcode as an image blob. + * If some error happens, this will be `null`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + image: Blob | null; +} +export declare function zxingWriteResultToWriteResult(zxingWriteResult: ZXingWriteResult): WriteResult; diff --git a/node_modules/zxing-wasm/dist/cjs/bindings/writerOptions.d.ts b/node_modules/zxing-wasm/dist/cjs/bindings/writerOptions.d.ts new file mode 100644 index 0000000..120e2ae --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/bindings/writerOptions.d.ts @@ -0,0 +1,64 @@ +import { ZXingModule } from "../core.js"; +import { WriteInputBarcodeFormat } from "./barcodeFormat.js"; +import { CharacterSet } from "./characterSet.js"; +import { WriteInputEccLevel } from "./eccLevel.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingWriterOptions { + /** + * Width of the barcode. + * + * @defaultValue `200` + */ + width: number; + /** + * Height of the barcode. + * + * @defaultValue `200` + */ + height: number; + format: string; + characterSet: ZXingEnum; + eccLevel: number; + /** + * The minimum number of quiet zone pixels. + * + * @defaultValue `10` + */ + margin: number; +} +/** + * Writer options for writing barcodes. + */ +export interface WriterOptions extends Partial> { + /** + * The format of the barcode to write. + * + * Supported values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataMatrix"`, `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"PDF417"`, `"QRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `"QRCode"` + */ + format?: WriteInputBarcodeFormat; + /** + * Character set to use for encoding the text. + * Used for Aztec, PDF417, and QRCode only. + * + * @defaultValue `"UTF8"` + */ + characterSet?: CharacterSet; + /** + * Error correction level of the symbol. + * Used for Aztec, PDF417, and QRCode only. + * `-1` means auto. + * + * @defaultValue `-1` + */ + eccLevel?: WriteInputEccLevel; +} +export declare const defaultWriterOptions: Required; +export declare function writerOptionsToZXingWriterOptions(zxingModule: ZXingModule, writerOptions: Required): ZXingWriterOptions; diff --git a/node_modules/zxing-wasm/dist/cjs/core-D9FNMpWh.cjs b/node_modules/zxing-wasm/dist/cjs/core-D9FNMpWh.cjs new file mode 100644 index 0000000..3461d7f --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/core-D9FNMpWh.cjs @@ -0,0 +1 @@ +"use strict";const g=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function E(e){return e.join("|")}function T(e){const t=y(e);let r=0,n=g.length-1;for(;r<=n;){const o=Math.floor((r+n)/2),a=g[o],i=y(a);if(i===t)return a;i{const r=e.match(/_(.+?)\.wasm$/);return r?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${r[1]}/${e}`:t+e}};let m=new WeakMap;function f(e,t){var a;const r=m.get(e);if(r!=null&&r.modulePromise&&(t===void 0||Object.is(t,r.moduleOverrides)))return r.modulePromise;const n=(a=t!=null?t:r==null?void 0:r.moduleOverrides)!=null?a:X,o=e({...n});return m.set(e,{moduleOverrides:n,modulePromise:o}),o}function x(){m=new WeakMap}function Z(e,t){m.set(e,{moduleOverrides:t})}async function z(e,t,r=d){const n={...d,...r},o=await f(e),{size:a}=t,i=new Uint8Array(await t.arrayBuffer()),u=o._malloc(a);o.HEAPU8.set(i,u);const l=o.readBarcodesFromImage(u,a,C(o,n));o._free(u);const c=[];for(let s=0;s +import { type ZXingReaderOptions, type ReaderOptions, type ZXingWriterOptions, type WriterOptions, type ZXingReadResult, type ReadResult, type ZXingWriteResult, type ZXingBinarizer, type ZXingCharacterSet, type ZXingContentType, type ZXingEanAddOnSymbol, type ZXingTextMode, type ZXingVector } from "./bindings/index.js"; +export type ZXingModuleType = "reader" | "writer" | "full"; +interface ZXingBaseModule extends EmscriptenModule { + CharacterSet: ZXingCharacterSet; +} +/** + * @internal + */ +export interface ZXingReaderModule extends ZXingBaseModule { + Binarizer: ZXingBinarizer; + ContentType: ZXingContentType; + EanAddOnSymbol: ZXingEanAddOnSymbol; + TextMode: ZXingTextMode; + readBarcodesFromImage(bufferPtr: number, bufferLength: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; + readBarcodesFromPixmap(bufferPtr: number, imgWidth: number, imgHeight: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; +} +/** + * @internal + */ +export interface ZXingWriterModule extends ZXingBaseModule { + writeBarcodeToImage(text: string, zxingWriterOptions: ZXingWriterOptions): ZXingWriteResult; +} +/** + * @internal + */ +export interface ZXingFullModule extends ZXingReaderModule, ZXingWriterModule { +} +export type ZXingModule = T extends "reader" ? ZXingReaderModule : T extends "writer" ? ZXingWriterModule : T extends "full" ? ZXingFullModule : ZXingReaderModule | ZXingWriterModule | ZXingFullModule; +export type ZXingReaderModuleFactory = EmscriptenModuleFactory; +export type ZXingWriterModuleFactory = EmscriptenModuleFactory; +export type ZXingFullModuleFactory = EmscriptenModuleFactory; +export type ZXingModuleFactory = T extends "reader" ? ZXingReaderModuleFactory : T extends "writer" ? ZXingWriterModuleFactory : T extends "full" ? ZXingFullModuleFactory : ZXingReaderModuleFactory | ZXingWriterModuleFactory | ZXingFullModuleFactory; +export type ZXingModuleOverrides = Partial; +export declare function getZXingModuleWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides?: ZXingModuleOverrides): Promise>; +export declare function purgeZXingModule(): void; +export declare function setZXingModuleOverridesWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageDataWithFactory(zxingModuleFactory: ZXingModuleFactory, imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, text: string, writerOptions?: WriterOptions): Promise; +export {}; diff --git a/node_modules/zxing-wasm/dist/cjs/full/index.d.ts b/node_modules/zxing-wasm/dist/cjs/full/index.d.ts new file mode 100644 index 0000000..619c27e --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/full/index.d.ts @@ -0,0 +1,10 @@ +import { type ZXingFullModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions, WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingFullModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/full/index.js b/node_modules/zxing-wasm/dist/cjs/full/index.js new file mode 100644 index 0000000..4565e37 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/full/index.js @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("../core-D9FNMpWh.cjs");var ce=(()=>{var k=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(L={}){var l=L,Ze,fe;l.ready=new Promise((e,r)=>{Ze=e,fe=r});var Ge=Object.assign({},l),qe="./this.program",Je=typeof window=="object",ve=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var H="";function Hr(e){return l.locateFile?l.locateFile(e,H):H+e}var Ee;(Je||ve)&&(ve?H=self.location.href:typeof document<"u"&&document.currentScript&&(H=document.currentScript.src),k&&(H=k),H.indexOf("blob:")!==0?H=H.substr(0,H.replace(/[?#].*/,"").lastIndexOf("/")+1):H="",ve&&(Ee=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),l.print||console.log.bind(console);var Q=l.printErr||console.error.bind(console);Object.assign(l,Ge),Ge=null,l.arguments&&l.arguments,l.thisProgram&&(qe=l.thisProgram),l.quit&&l.quit;var ee;l.wasmBinary&&(ee=l.wasmBinary),typeof WebAssembly!="object"&&pe("no native wasm support detected");var de,Ke=!1,j,W,Z,re,O,m,Qe,er;function rr(){var e=de.buffer;l.HEAP8=j=new Int8Array(e),l.HEAP16=Z=new Int16Array(e),l.HEAPU8=W=new Uint8Array(e),l.HEAPU16=re=new Uint16Array(e),l.HEAP32=O=new Int32Array(e),l.HEAPU32=m=new Uint32Array(e),l.HEAPF32=Qe=new Float32Array(e),l.HEAPF64=er=new Float64Array(e)}var tr=[],nr=[],ir=[];function Ur(){if(l.preRun)for(typeof l.preRun=="function"&&(l.preRun=[l.preRun]);l.preRun.length;)Yr(l.preRun.shift());Se(tr)}function xr(){Se(nr)}function Vr(){if(l.postRun)for(typeof l.postRun=="function"&&(l.postRun=[l.postRun]);l.postRun.length;)Lr(l.postRun.shift());Se(ir)}function Yr(e){tr.unshift(e)}function Br(e){nr.unshift(e)}function Lr(e){ir.unshift(e)}var z=0,te=null;function zr(e){var r;z++,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,z)}function Nr(e){var r;if(z--,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,z),z==0&&te){var t=te;te=null,t()}}function pe(e){var r;(r=l.onAbort)===null||r===void 0||r.call(l,e),e="Aborted("+e+")",Q(e),Ke=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw fe(t),t}var Xr="data:application/octet-stream;base64,",ar=e=>e.startsWith(Xr),G;G="zxing_full.wasm",ar(G)||(G=Hr(G));function or(e){if(e==G&&ee)return new Uint8Array(ee);if(Ee)return Ee(e);throw"both async and sync fetching of the wasm failed"}function Zr(e){return!ee&&(Je||ve)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>or(e)):Promise.resolve().then(()=>or(e))}function sr(e,r,t){return Zr(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{Q(`failed to asynchronously prepare wasm: ${n}`),pe(n)})}function Gr(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!ar(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(n,function(o){return Q(`wasm streaming compile failed: ${o}`),Q("falling back to ArrayBuffer instantiation"),sr(r,t,n)})}):sr(r,t,n)}function qr(){var e={a:Hn};function r(n,i){return F=n.exports,de=F.ja,rr(),_r=F.na,Br(F.ka),Nr(),F}zr();function t(n){r(n.instance)}if(l.instantiateWasm)try{return l.instantiateWasm(e,r)}catch(n){Q(`Module.instantiateWasm callback failed with error: ${n}`),fe(n)}return Gr(ee,G,e,t).catch(fe),{}}var Se=e=>{for(;e.length>0;)e.shift()(l)};l.noExitRuntime;var he=[],ge=0,Jr=e=>{var r=new Re(e);return r.get_caught()||(r.set_caught(!0),ge--),r.set_rethrown(!1),he.push(r),Dr(r.excPtr),r.get_exception_ptr()},V=0,Kr=()=>{$(0,0);var e=he.pop();Rr(e.excPtr),V=0};function Re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){m[this.ptr+4>>2]=r},this.get_type=function(){return m[this.ptr+4>>2]},this.set_destructor=function(r){m[this.ptr+8>>2]=r},this.get_destructor=function(){return m[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,j[this.ptr+12>>0]=r},this.get_caught=function(){return j[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,j[this.ptr+13>>0]=r},this.get_rethrown=function(){return j[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){m[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return m[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Wr(this.get_type());if(r)return m[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Qr=e=>{throw V||(V=e),V},De=e=>{var r=V;if(!r)return le(0),0;var t=new Re(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return le(0),r;for(var i in e){var a=e[i];if(a===0||a===n)break;var o=t.ptr+16;if(Or(a,n,o))return le(a),r}return le(n),r},et=()=>De([]),rt=e=>De([e]),tt=(e,r)=>De([e,r]),nt=()=>{var e=he.pop();e||pe("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(he.push(e),e.set_rethrown(!0),e.set_caught(!1),ge++),V=r,V},it=(e,r,t)=>{var n=new Re(e);throw n.init(r,t),V=e,ge++,V},at=()=>ge,_e={},Oe=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function We(e){return this.fromWireType(O[e>>2])}var q={},N={},ye={},ur,me=e=>{throw new ur(e)},X=(e,r,t)=>{e.forEach(function(s){ye[s]=r});function n(s){var u=t(s);u.length!==e.length&&me("Mismatched type converter count");for(var f=0;f{N.hasOwnProperty(s)?i[u]=N[s]:(a.push(s),q.hasOwnProperty(s)||(q[s]=[]),q[s].push(()=>{i[u]=N[s],++o,o===a.length&&n(i)}))}),a.length===0&&n(i)},ot=e=>{var r=_e[e];delete _e[e];var t=r.rawConstructor,n=r.rawDestructor,i=r.fields,a=i.map(o=>o.getterReturnType).concat(i.map(o=>o.setterArgumentType));X([e],a,o=>{var s={};return i.forEach((u,f)=>{var v=u.fieldName,p=o[f],h=u.getter,g=u.getterContext,P=o[f+i.length],C=u.setter,y=u.setterContext;s[v]={read:R=>p.fromWireType(h(g,R)),write:(R,c)=>{var d=[];C(y,R,P.toWireType(d,c)),Oe(d)}}}),[{name:r.name,fromWireType:u=>{var f={};for(var v in s)f[v]=s[v].read(u);return n(u),f},toWireType:(u,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var p=t();for(v in s)s[v].write(p,f[v]);return u!==null&&u.push(n,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction:n}]})},st=(e,r,t,n,i)=>{},ut=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);lr=e},lr,S=e=>{for(var r="",t=e;W[t];)r+=lr[W[t++]];return r},J,_=e=>{throw new J(e)};function lt(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||_(`type "${n}" must have a positive integer typeid pointer`),N.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;_(`Cannot register type '${n}' twice`)}if(N[e]=r,delete ye[e],q.hasOwnProperty(e)){var i=q[e];delete q[e],i.forEach(a=>a())}}function U(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return lt(e,r,t)}var x=8,ct=(e,r,t,n)=>{r=S(r),U(e,{name:r,fromWireType:function(i){return!!i},toWireType:function(i,a){return a?t:n},argPackAdvance:x,readValueFromPointer:function(i){return this.fromWireType(W[i])},destructorFunction:null})},ft=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),ke=e=>{function r(t){return t.$$.ptrType.registeredClass.name}_(r(e)+" instance already deleted")},Me=!1,cr=e=>{},vt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},fr=e=>{e.count.value-=1;var r=e.count.value===0;r&&vt(e)},vr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=vr(e,r,t.baseClass);return n===null?null:t.downcast(n)},dr={},dt=()=>Object.keys(ae).length,pt=()=>{var e=[];for(var r in ae)ae.hasOwnProperty(r)&&e.push(ae[r]);return e},ne=[],je=()=>{for(;ne.length;){var e=ne.pop();e.$$.deleteScheduled=!1,e.delete()}},ie,ht=e=>{ie=e,ne.length&&ie&&ie(je)},gt=()=>{l.getInheritedInstanceCount=dt,l.getLiveInheritedInstances=pt,l.flushPendingDeletes=je,l.setDelayFunction=ht},ae={},_t=(e,r)=>{for(r===void 0&&_("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},yt=(e,r)=>(r=_t(e,r),ae[r]),$e=(e,r)=>{(!r.ptrType||!r.ptr)&&me("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&me("Both smartPtrType and smartPtr must be specified"),r.count={value:1},oe(Object.create(e,{$$:{value:r,writable:!0}}))};function mt(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=yt(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function i(){return this.isSmartPointer?$e(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):$e(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a=this.registeredClass.getActualType(r),o=dr[a];if(!o)return i.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var u=vr(r,this.registeredClass,s.registeredClass);return u===null?i.call(this):this.isSmartPointer?$e(s.registeredClass.instancePrototype,{ptrType:s,ptr:u,smartPtrType:this,smartPtr:e}):$e(s.registeredClass.instancePrototype,{ptrType:s,ptr:u})}var oe=e=>typeof FinalizationRegistry>"u"?(oe=r=>r,e):(Me=new FinalizationRegistry(r=>{fr(r.$$)}),oe=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var i={$$:t};Me.register(r,i,r)}return r},cr=r=>Me.unregister(r),oe(e)),$t=()=>{Object.assign(be.prototype,{isAliasOf(e){if(!(this instanceof be)||!(e instanceof be))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,i=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)i=n.upcast(i),n=n.baseClass;return r===n&&t===i},clone(){if(this.$$.ptr||ke(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=oe(Object.create(Object.getPrototypeOf(this),{$$:{value:ft(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),cr(this),fr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),ne.push(this),ne.length===1&&ie&&ie(je),this.$$.deleteScheduled=!0,this}})};function be(){}var se=(e,r)=>Object.defineProperty(r,"name",{value:e}),pr=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||_(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},Ie=(e,r,t)=>{l.hasOwnProperty(e)?((t===void 0||l[e].overloadTable!==void 0&&l[e].overloadTable[t]!==void 0)&&_(`Cannot register public name '${e}' twice`),pr(l,e,e),l.hasOwnProperty(t)&&_(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),l[e].overloadTable[t]=r):(l[e]=r,t!==void 0&&(l[e].numArguments=t))},bt=48,wt=57,Tt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=bt&&r<=wt?`_${e}`:e};function Pt(e,r,t,n,i,a,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=i,this.getActualType=a,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var He=(e,r,t)=>{for(;r!==t;)r.upcast||_(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function Ct(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=He(r.$$.ptr,t,this.registeredClass);return n}function At(e,r){var t;if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=He(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&_("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var i=r.clone();t=this.rawShare(t,Y.toHandle(()=>i.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:_("Unsupporting sharing policy")}return t}function Ft(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=He(r.$$.ptr,t,this.registeredClass);return n}function hr(e){return this.fromWireType(m[e>>2])}var Et=()=>{Object.assign(we.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:x,readValueFromPointer:hr,deleteObject(e){e!==null&&e.delete()},fromWireType:mt})};function we(e,r,t,n,i,a,o,s,u,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=i,this.pointeeType=a,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=f,this.rawDestructor=v,!i&&r.baseClass===void 0?n?(this.toWireType=Ct,this.destructorFunction=null):(this.toWireType=Ft,this.destructorFunction=null):this.toWireType=At}var gr=(e,r,t)=>{l.hasOwnProperty(e)||me("Replacing nonexistant public symbol"),l[e].overloadTable!==void 0&&t!==void 0?l[e].overloadTable[t]=r:(l[e]=r,l[e].argCount=t)},St=(e,r,t)=>{var n=l["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},Te=[],_r,b=e=>{var r=Te[e];return r||(e>=Te.length&&(Te.length=e+1),Te[e]=r=_r.get(e)),r},Rt=(e,r,t)=>{if(e.includes("j"))return St(e,r,t);var n=b(r).apply(null,t);return n},Dt=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Rt(e,r,t)}},I=(e,r)=>{e=S(e);function t(){return e.includes("j")?Dt(e,r):b(r)}var n=t();return typeof n!="function"&&_(`unknown function pointer with signature ${e}: ${r}`),n},Ot=(e,r)=>{var t=se(r,function(n){this.name=r,this.message=n;var i=new Error(n).stack;i!==void 0&&(this.stack=this.toString()+` +`+i.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},yr,mr=e=>{var r=Sr(e),t=S(r);return B(r),t},Pe=(e,r)=>{var t=[],n={};function i(a){if(!n[a]&&!N[a]){if(ye[a]){ye[a].forEach(i);return}t.push(a),n[a]=!0}}throw r.forEach(i),new yr(`${e}: `+t.map(mr).join([", "]))},Wt=(e,r,t,n,i,a,o,s,u,f,v,p,h)=>{v=S(v),a=I(i,a),s&&(s=I(o,s)),f&&(f=I(u,f)),h=I(p,h);var g=Tt(v);Ie(g,function(){Pe(`Cannot construct ${v} due to unbound types`,[n])}),X([e,r,t],n?[n]:[],function(P){P=P[0];var C,y;n?(C=P.registeredClass,y=C.instancePrototype):y=be.prototype;var R=se(v,function(){if(Object.getPrototypeOf(this)!==c)throw new J("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new J(v+" has no accessible constructor");var Ir=d.constructor_body[arguments.length];if(Ir===void 0)throw new J(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return Ir.apply(this,arguments)}),c=Object.create(y,{constructor:{value:R}});R.prototype=c;var d=new Pt(v,R,c,h,C,a,s,f);if(d.baseClass){var A,E;(E=(A=d.baseClass).__derivedClasses)!==null&&E!==void 0||(A.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var K=new we(v,d,!0,!1,!1),Fe=new we(v+"*",d,!1,!1,!1),jr=new we(v+" const*",d,!1,!0,!1);return dr[e]={pointerType:Fe,constPointerType:jr},gr(g,R),[K,Fe,jr]})},Ue=(e,r)=>{for(var t=[],n=0;n>2]);return t};function kt(e){for(var r=1;r{var o=Ue(r,t);i=I(n,i),X([],[e],function(s){s=s[0];var u=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new J(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{Pe(`Cannot construct ${s.name} due to unbound types`,o)},X([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=xe(u,f,null,i,a),[])),[]})},$r=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},jt=(e,r,t,n,i,a,o,s,u)=>{var f=Ue(t,n);r=S(r),r=$r(r),a=I(i,a),X([],[e],function(v){v=v[0];var p=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function h(){Pe(`Cannot call ${p} due to unbound types`,f)}var g=v.registeredClass.instancePrototype,P=g[r];return P===void 0||P.overloadTable===void 0&&P.className!==v.name&&P.argCount===t-2?(h.argCount=t-2,h.className=v.name,g[r]=h):(pr(g,r,p),g[r].overloadTable[t-2]=h),X([],f,function(C){var y=xe(p,C,v,a,o);return g[r].overloadTable===void 0?(y.argCount=t-2,g[r]=y):g[r].overloadTable[t-2]=y,[]}),[]})};function It(){Object.assign(br.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function br(){this.allocated=[void 0],this.freelist=[]}var M=new br,Ve=e=>{e>=M.reserved&&--M.get(e).refcount===0&&M.free(e)},Ht=()=>{for(var e=0,r=M.reserved;r{M.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),M.reserved=M.allocated.length,l.count_emval_handles=Ht},Y={toValue:e=>(e||_("Cannot use deleted val. handle = "+e),M.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return M.allocate({refcount:1,value:e})}}},xt=(e,r)=>{r=S(r),U(e,{name:r,fromWireType:t=>{var n=Y.toValue(t);return Ve(t),n},toWireType:(t,n)=>Y.toHandle(n),argPackAdvance:x,readValueFromPointer:We,destructorFunction:null})},Vt=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(j[n>>0])}:function(n){return this.fromWireType(W[n>>0])};case 2:return t?function(n){return this.fromWireType(Z[n>>1])}:function(n){return this.fromWireType(re[n>>1])};case 4:return t?function(n){return this.fromWireType(O[n>>2])}:function(n){return this.fromWireType(m[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Yt=(e,r,t,n)=>{r=S(r);function i(){}i.values={},U(e,{name:r,constructor:i,fromWireType:function(a){return this.constructor.values[a]},toWireType:(a,o)=>o.value,argPackAdvance:x,readValueFromPointer:Vt(r,t,n),destructorFunction:null}),Ie(r,i)},Ye=(e,r)=>{var t=N[e];return t===void 0&&_(r+" has unknown type "+mr(e)),t},Bt=(e,r,t)=>{var n=Ye(e,"enum");r=S(r);var i=n.constructor,a=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:se(`${n.name}_${r}`,function(){})}});i.values[t]=a,i[r]=a},Be=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},Lt=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(Qe[t>>2])};case 8:return function(t){return this.fromWireType(er[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},zt=(e,r,t)=>{r=S(r),U(e,{name:r,fromWireType:n=>n,toWireType:(n,i)=>i,argPackAdvance:x,readValueFromPointer:Lt(r,t),destructorFunction:null})},Nt=(e,r,t,n,i,a,o)=>{var s=Ue(r,t);e=S(e),e=$r(e),i=I(n,i),Ie(e,function(){Pe(`Cannot call ${e} due to unbound types`,s)},r-1),X([],s,function(u){var f=[u[0],null].concat(u.slice(1));return gr(e,xe(e,f,null,i,a),r-1),[]})},Xt=(e,r,t)=>{switch(r){case 1:return t?n=>j[n>>0]:n=>W[n>>0];case 2:return t?n=>Z[n>>1]:n=>re[n>>1];case 4:return t?n=>O[n>>2]:n=>m[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Zt=(e,r,t,n,i)=>{r=S(r);var a=v=>v;if(n===0){var o=32-8*t;a=v=>v<>>o}var s=r.includes("unsigned"),u=(v,p)=>{},f;s?f=function(v,p){return u(p,this.name),p>>>0}:f=function(v,p){return u(p,this.name),p},U(e,{name:r,fromWireType:a,toWireType:f,argPackAdvance:x,readValueFromPointer:Xt(r,t,n!==0),destructorFunction:null})},Gt=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],i=n[r];function a(o){var s=m[o>>2],u=m[o+4>>2];return new i(j.buffer,u,s)}t=S(t),U(e,{name:t,fromWireType:a,argPackAdvance:x,readValueFromPointer:a},{ignoreDuplicateRegistrations:!0})},wr=(e,r,t,n)=>{if(!(n>0))return 0;for(var i=t,a=t+n-1,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-i},qt=(e,r,t)=>wr(e,W,r,t),Tr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Pr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Jt=(e,r,t)=>{for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;if(i-r>16&&e.buffer&&Pr)return Pr.decode(e.subarray(r,i));for(var a="";r>10,56320|f&1023)}}return a},Le=(e,r)=>e?Jt(W,e,r):"",Kt=(e,r)=>{r=S(r);var t=r==="std::string";U(e,{name:r,fromWireType(n){var i=m[n>>2],a=n+4,o;if(t)for(var s=a,u=0;u<=i;++u){var f=a+u;if(u==i||W[f]==0){var v=f-s,p=Le(s,v);o===void 0?o=p:(o+="\0",o+=p),s=f+1}}else{for(var h=new Array(i),u=0;u>2]=a,t&&o)qt(i,u,a+1);else if(o)for(var f=0;f255&&(B(u),_("String has UTF-16 code units that do not fit in 8 bits")),W[u+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,i=n+r/2;!(n>=i)&&re[n];)++n;if(t=n<<1,t-e>32&&Cr)return Cr.decode(W.subarray(e,t));for(var a="",o=0;!(o>=r/2);++o){var s=Z[e+o*2>>1];if(s==0)break;a+=String.fromCharCode(s)}return a},en=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var i=r,a=t>1]=s,r+=2}return Z[r>>1]=0,r-i},rn=e=>e.length*2,tn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var i=O[e+t*4>>2];if(i==0)break;if(++t,i>=65536){var a=i-65536;n+=String.fromCharCode(55296|a>>10,56320|a&1023)}else n+=String.fromCharCode(i)}return n},nn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var i=r,a=i+t-4,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(O[r>>2]=s,r+=4,r+4>a)break}return O[r>>2]=0,r-i},an=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},on=(e,r,t)=>{t=S(t);var n,i,a,o,s;r===2?(n=Qt,i=en,o=rn,a=()=>re,s=1):r===4&&(n=tn,i=nn,o=an,a=()=>m,s=2),U(e,{name:t,fromWireType:u=>{for(var f=m[u>>2],v=a(),p,h=u+4,g=0;g<=f;++g){var P=u+4+g*r;if(g==f||v[P>>s]==0){var C=P-h,y=n(h,C);p===void 0?p=y:(p+="\0",p+=y),h=P+r}}return B(u),p},toWireType:(u,f)=>{typeof f!="string"&&_(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),p=Xe(4+v+r);return m[p>>2]=v>>s,i(f,p+4,v+r),u!==null&&u.push(B,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction(u){B(u)}})},sn=(e,r,t,n,i,a)=>{_e[e]={name:S(r),rawConstructor:I(t,n),rawDestructor:I(i,a),fields:[]}},un=(e,r,t,n,i,a,o,s,u,f)=>{_e[e].fields.push({fieldName:S(r),getterReturnType:t,getter:I(n,i),getterContext:a,setterArgumentType:o,setter:I(s,u),setterContext:f})},ln=(e,r)=>{r=S(r),U(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},ze=[],cn=(e,r,t,n)=>(e=ze[e],r=Y.toValue(r),e(null,r,t,n)),fn={},vn=e=>{var r=fn[e];return r===void 0?S(e):r},Ar=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},dn=e=>e===0?Y.toHandle(Ar()):(e=vn(e),Y.toHandle(Ar()[e])),pn=e=>{var r=ze.length;return ze.push(e),r},hn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},gn=Reflect.construct,_n=(e,r,t)=>{var n=[],i=e.toWireType(n,t);return n.length&&(m[r>>2]=Y.toHandle(n)),i},yn=(e,r,t)=>{var n=hn(e,r),i=n.shift();e--;var a=new Array(e),o=(u,f,v,p)=>{for(var h=0,g=0;gu.name).join(", ")}) => ${i.name}>`;return pn(se(s,o))},mn=e=>{e>4&&(M.get(e).refcount+=1)},$n=e=>{var r=Y.toValue(e);Oe(r),Ve(e)},bn=(e,r)=>{e=Ye(e,"_emval_take_value");var t=e.readValueFromPointer(r);return Y.toHandle(t)},wn=()=>{pe("")},Tn=(e,r,t)=>W.copyWithin(e,r,r+t),Pn=()=>2147483648,Cn=e=>{var r=de.buffer,t=(e-r.byteLength+65535)/65536;try{return de.grow(t),rr(),1}catch{}},An=e=>{var r=W.length;e>>>=0;var t=Pn();if(e>t)return!1;for(var n=(u,f)=>u+(f-u%f)%f,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var o=Math.min(t,n(Math.max(e,a),65536)),s=Cn(o);if(s)return!0}return!1},Ne={},Fn=()=>qe||"./this.program",ue=()=>{if(!ue.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:Fn()};for(var t in Ne)Ne[t]===void 0?delete r[t]:r[t]=Ne[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);ue.strings=n}return ue.strings},En=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);j[r>>0]=0},Sn=(e,r)=>{var t=0;return ue().forEach((n,i)=>{var a=r+t;m[e+i*4>>2]=a,En(n,a),t+=n.length+1}),0},Rn=(e,r)=>{var t=ue();m[e>>2]=t.length;var n=0;return t.forEach(i=>n+=i.length+1),m[r>>2]=n,0},Dn=e=>e,Ce=e=>e%4===0&&(e%100!==0||e%400===0),On=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Fr=[31,29,31,30,31,30,31,31,30,31,30,31],Er=[31,28,31,30,31,30,31,31,30,31,30,31],Wn=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=Ce(t.getFullYear()),i=t.getMonth(),a=(n?Fr:Er)[i];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),i<11?t.setMonth(i+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function kn(e,r,t){var n=t>0?t:Tr(e)+1,i=new Array(n),a=wr(e,i,0,i.length);return r&&(i.length=a),i}var Mn=(e,r)=>{j.set(e,r)},jn=(e,r,t,n)=>{var i=m[n+40>>2],a={tm_sec:O[n>>2],tm_min:O[n+4>>2],tm_hour:O[n+8>>2],tm_mday:O[n+12>>2],tm_mon:O[n+16>>2],tm_year:O[n+20>>2],tm_wday:O[n+24>>2],tm_yday:O[n+28>>2],tm_isdst:O[n+32>>2],tm_gmtoff:O[n+36>>2],tm_zone:i?Le(i):""},o=Le(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function p(c,d,A){for(var E=typeof c=="number"?c.toString():c||"";E.length0?1:0}var E;return(E=A(c.getFullYear()-d.getFullYear()))===0&&(E=A(c.getMonth()-d.getMonth()))===0&&(E=A(c.getDate()-d.getDate())),E}function P(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function C(c){var d=Wn(new Date(c.tm_year+1900,0,1),c.tm_yday),A=new Date(d.getFullYear(),0,4),E=new Date(d.getFullYear()+1,0,4),K=P(A),Fe=P(E);return g(K,d)<=0?g(Fe,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var y={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return h(d/100|0,2)},"%d":c=>h(c.tm_mday,2),"%e":c=>p(c.tm_mday,2," "),"%g":c=>C(c).toString().substring(2),"%G":c=>C(c),"%H":c=>h(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),h(d,2)},"%j":c=>h(c.tm_mday+On(Ce(c.tm_year+1900)?Fr:Er,c.tm_mon-1),3),"%m":c=>h(c.tm_mon+1,2),"%M":c=>h(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>h(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return h(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var E=(c.tm_wday+371-c.tm_yday)%7;E!=4&&(E!=3||!Ce(c.tm_year))&&(d=1)}}else{d=52;var A=(c.tm_wday+7-c.tm_yday-1)%7;(A==4||A==5&&Ce(c.tm_year%400-1))&&d++}return h(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return h(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,A=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(A?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var u in y)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),y[u](a)));o=o.replace(/\0\0/g,"%");var R=kn(o,!1);return R.length>r?0:(Mn(R,e),R.length-1)},In=(e,r,t,n,i)=>jn(e,r,t,n);ur=l.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},ut(),J=l.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},$t(),gt(),Et(),yr=l.UnboundTypeError=Ot(Error,"UnboundTypeError"),It(),Ut();var Hn={s:Jr,t:Kr,b:et,g:rt,m:tt,K:nt,e:it,W:at,d:Qr,ea:ot,R:st,$:ct,da:Wt,ca:Mt,x:jt,Z:xt,y:Yt,j:Bt,M:zt,E:Nt,u:Zt,q:Gt,L:Kt,D:on,w:sn,fa:un,aa:ln,S:cn,ia:Ve,ha:dn,_:yn,N:mn,P:$n,ba:bn,C:wn,Y:Tn,X:An,U:Sn,V:Rn,G:ri,B:Bn,H:ei,p:ti,a:Un,f:zn,n:Yn,k:Xn,J:Kn,v:Jn,I:Qn,A:ii,Q:oi,l:Nn,i:Ln,c:Vn,o:xn,F:Gn,ga:Zn,r:ni,h:qn,z:ai,O:Dn,T:In},F=qr(),B=l._free=e=>(B=l._free=F.la)(e),Xe=l._malloc=e=>(Xe=l._malloc=F.ma)(e),Sr=e=>(Sr=F.oa)(e),$=(e,r)=>($=F.pa)(e,r),le=e=>(le=F.qa)(e),w=()=>(w=F.ra)(),T=e=>(T=F.sa)(e),Rr=e=>(Rr=F.ta)(e),Dr=e=>(Dr=F.ua)(e),Or=(e,r,t)=>(Or=F.va)(e,r,t),Wr=e=>(Wr=F.wa)(e);l.dynCall_viijii=(e,r,t,n,i,a,o)=>(l.dynCall_viijii=F.xa)(e,r,t,n,i,a,o);var kr=l.dynCall_jiiii=(e,r,t,n,i)=>(kr=l.dynCall_jiiii=F.ya)(e,r,t,n,i);l.dynCall_iiiiij=(e,r,t,n,i,a,o)=>(l.dynCall_iiiiij=F.za)(e,r,t,n,i,a,o),l.dynCall_iiiiijj=(e,r,t,n,i,a,o,s,u)=>(l.dynCall_iiiiijj=F.Aa)(e,r,t,n,i,a,o,s,u),l.dynCall_iiiiiijj=(e,r,t,n,i,a,o,s,u,f)=>(l.dynCall_iiiiiijj=F.Ba)(e,r,t,n,i,a,o,s,u,f);function Un(e,r){var t=w();try{return b(e)(r)}catch(n){if(T(t),n!==n+0)throw n;$(1,0)}}function xn(e,r,t,n){var i=w();try{b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function Vn(e,r,t){var n=w();try{b(e)(r,t)}catch(i){if(T(n),i!==i+0)throw i;$(1,0)}}function Yn(e,r,t,n){var i=w();try{return b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function Bn(e,r,t,n,i){var a=w();try{return b(e)(r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}function Ln(e,r){var t=w();try{b(e)(r)}catch(n){if(T(t),n!==n+0)throw n;$(1,0)}}function zn(e,r,t){var n=w();try{return b(e)(r,t)}catch(i){if(T(n),i!==i+0)throw i;$(1,0)}}function Nn(e){var r=w();try{b(e)()}catch(t){if(T(r),t!==t+0)throw t;$(1,0)}}function Xn(e,r,t,n,i){var a=w();try{return b(e)(r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}function Zn(e,r,t,n,i,a){var o=w();try{b(e)(r,t,n,i,a)}catch(s){if(T(o),s!==s+0)throw s;$(1,0)}}function Gn(e,r,t,n,i){var a=w();try{b(e)(r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}function qn(e,r,t,n,i,a,o,s,u,f,v){var p=w();try{b(e)(r,t,n,i,a,o,s,u,f,v)}catch(h){if(T(p),h!==h+0)throw h;$(1,0)}}function Jn(e,r,t,n,i,a,o){var s=w();try{return b(e)(r,t,n,i,a,o)}catch(u){if(T(s),u!==u+0)throw u;$(1,0)}}function Kn(e,r,t,n,i,a){var o=w();try{return b(e)(r,t,n,i,a)}catch(s){if(T(o),s!==s+0)throw s;$(1,0)}}function Qn(e,r,t,n,i,a,o,s){var u=w();try{return b(e)(r,t,n,i,a,o,s)}catch(f){if(T(u),f!==f+0)throw f;$(1,0)}}function ei(e,r,t,n){var i=w();try{return b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function ri(e,r,t,n){var i=w();try{return b(e)(r,t,n)}catch(a){if(T(i),a!==a+0)throw a;$(1,0)}}function ti(e){var r=w();try{return b(e)()}catch(t){if(T(r),t!==t+0)throw t;$(1,0)}}function ni(e,r,t,n,i,a,o,s){var u=w();try{b(e)(r,t,n,i,a,o,s)}catch(f){if(T(u),f!==f+0)throw f;$(1,0)}}function ii(e,r,t,n,i,a,o,s,u,f,v,p){var h=w();try{return b(e)(r,t,n,i,a,o,s,u,f,v,p)}catch(g){if(T(h),g!==g+0)throw g;$(1,0)}}function ai(e,r,t,n,i,a,o,s,u,f,v,p,h,g,P,C){var y=w();try{b(e)(r,t,n,i,a,o,s,u,f,v,p,h,g,P,C)}catch(R){if(T(y),R!==R+0)throw R;$(1,0)}}function oi(e,r,t,n,i){var a=w();try{return kr(e,r,t,n,i)}catch(o){if(T(a),o!==o+0)throw o;$(1,0)}}var Ae;te=function e(){Ae||Mr(),Ae||(te=e)};function Mr(){if(z>0||(Ur(),z>0))return;function e(){Ae||(Ae=!0,l.calledRun=!0,!Ke&&(xr(),Ze(l),l.onRuntimeInitialized&&l.onRuntimeInitialized(),Vr()))}l.setStatus?(l.setStatus("Running..."),setTimeout(function(){setTimeout(function(){l.setStatus("")},1),e()},1)):e()}if(l.preInit)for(typeof l.preInit=="function"&&(l.preInit=[l.preInit]);l.preInit.length>0;)l.preInit.pop()();return Mr(),L.ready}})();function si(k){return D.getZXingModuleWithFactory(ce,k)}function ui(k){return D.setZXingModuleOverridesWithFactory(ce,k)}async function li(k,L){return D.readBarcodesFromImageFileWithFactory(ce,k,L)}async function ci(k,L){return D.readBarcodesFromImageDataWithFactory(ce,k,L)}async function fi(k,L){return D.writeBarcodeToImageFileWithFactory(ce,k,L)}exports.barcodeFormats=D.barcodeFormats;exports.binarizers=D.binarizers;exports.characterSets=D.characterSets;exports.contentTypes=D.contentTypes;exports.defaultDecodeHints=D.defaultReaderOptions;exports.defaultEncodeHints=D.defaultWriterOptions;exports.defaultReaderOptions=D.defaultReaderOptions;exports.defaultWriterOptions=D.defaultWriterOptions;exports.eanAddOnSymbols=D.eanAddOnSymbols;exports.purgeZXingModule=D.purgeZXingModule;exports.readOutputEccLevels=D.readOutputEccLevels;exports.textModes=D.textModes;exports.writeInputEccLevels=D.writeInputEccLevels;exports.getZXingModule=si;exports.readBarcodesFromImageData=ci;exports.readBarcodesFromImageFile=li;exports.setZXingModuleOverrides=ui;exports.writeBarcodeToImageFile=fi; diff --git a/node_modules/zxing-wasm/dist/cjs/package.json b/node_modules/zxing-wasm/dist/cjs/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/node_modules/zxing-wasm/dist/cjs/reader/index.d.ts b/node_modules/zxing-wasm/dist/cjs/reader/index.d.ts new file mode 100644 index 0000000..c920d48 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/reader/index.d.ts @@ -0,0 +1,8 @@ +import { type ZXingReaderModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export { purgeZXingModule, type ZXingReaderModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/reader/index.js b/node_modules/zxing-wasm/dist/cjs/reader/index.js new file mode 100644 index 0000000..10cb9b5 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/reader/index.js @@ -0,0 +1,3 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const W=require("../core-D9FNMpWh.cjs");var Fe=(()=>{var H=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(X={}){var l=X,Ze,ce;l.ready=new Promise((e,r)=>{Ze=e,ce=r});var Ge=Object.assign({},l),qe="./this.program",Je=typeof window=="object",fe=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var I="";function Ir(e){return l.locateFile?l.locateFile(e,I):I+e}var Se;(Je||fe)&&(fe?I=self.location.href:typeof document<"u"&&document.currentScript&&(I=document.currentScript.src),H&&(I=H),I.indexOf("blob:")!==0?I=I.substr(0,I.replace(/[?#].*/,"").lastIndexOf("/")+1):I="",fe&&(Se=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),l.print||console.log.bind(console);var Q=l.printErr||console.error.bind(console);Object.assign(l,Ge),Ge=null,l.arguments&&l.arguments,l.thisProgram&&(qe=l.thisProgram),l.quit&&l.quit;var ee;l.wasmBinary&&(ee=l.wasmBinary),typeof WebAssembly!="object"&&de("no native wasm support detected");var ve,Ke=!1,M,O,Z,re,D,m,Qe,er;function rr(){var e=ve.buffer;l.HEAP8=M=new Int8Array(e),l.HEAP16=Z=new Int16Array(e),l.HEAPU8=O=new Uint8Array(e),l.HEAPU16=re=new Uint16Array(e),l.HEAP32=D=new Int32Array(e),l.HEAPU32=m=new Uint32Array(e),l.HEAPF32=Qe=new Float32Array(e),l.HEAPF64=er=new Float64Array(e)}var tr=[],nr=[],ir=[];function Ur(){if(l.preRun)for(typeof l.preRun=="function"&&(l.preRun=[l.preRun]);l.preRun.length;)Yr(l.preRun.shift());Ee(tr)}function xr(){Ee(nr)}function Vr(){if(l.postRun)for(typeof l.postRun=="function"&&(l.postRun=[l.postRun]);l.postRun.length;)Lr(l.postRun.shift());Ee(ir)}function Yr(e){tr.unshift(e)}function Br(e){nr.unshift(e)}function Lr(e){ir.unshift(e)}var L=0,te=null;function zr(e){var r;L++,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,L)}function Nr(e){var r;if(L--,(r=l.monitorRunDependencies)===null||r===void 0||r.call(l,L),L==0&&te){var t=te;te=null,t()}}function de(e){var r;(r=l.onAbort)===null||r===void 0||r.call(l,e),e="Aborted("+e+")",Q(e),Ke=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw ce(t),t}var Xr="data:application/octet-stream;base64,",ar=e=>e.startsWith(Xr),G;G="zxing_reader.wasm",ar(G)||(G=Ir(G));function or(e){if(e==G&&ee)return new Uint8Array(ee);if(Se)return Se(e);throw"both async and sync fetching of the wasm failed"}function Zr(e){return!ee&&(Je||fe)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>or(e)):Promise.resolve().then(()=>or(e))}function sr(e,r,t){return Zr(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{Q(`failed to asynchronously prepare wasm: ${n}`),de(n)})}function Gr(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!ar(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(i=>{var a=WebAssembly.instantiateStreaming(i,t);return a.then(n,function(o){return Q(`wasm streaming compile failed: ${o}`),Q("falling back to ArrayBuffer instantiation"),sr(r,t,n)})}):sr(r,t,n)}function qr(){var e={a:In};function r(n,i){return F=n.exports,ve=F.ia,rr(),_r=F.ma,Br(F.ja),Nr(),F}zr();function t(n){r(n.instance)}if(l.instantiateWasm)try{return l.instantiateWasm(e,r)}catch(n){Q(`Module.instantiateWasm callback failed with error: ${n}`),ce(n)}return Gr(ee,G,e,t).catch(ce),{}}var Ee=e=>{for(;e.length>0;)e.shift()(l)};l.noExitRuntime;var pe=[],he=0,Jr=e=>{var r=new Re(e);return r.get_caught()||(r.set_caught(!0),he--),r.set_rethrown(!1),pe.push(r),Dr(r.excPtr),r.get_exception_ptr()},V=0,Kr=()=>{$(0,0);var e=pe.pop();Rr(e.excPtr),V=0};function Re(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){m[this.ptr+4>>2]=r},this.get_type=function(){return m[this.ptr+4>>2]},this.set_destructor=function(r){m[this.ptr+8>>2]=r},this.get_destructor=function(){return m[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,M[this.ptr+12>>0]=r},this.get_caught=function(){return M[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,M[this.ptr+13>>0]=r},this.get_rethrown=function(){return M[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){m[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return m[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Wr(this.get_type());if(r)return m[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Qr=e=>{throw V||(V=e),V},De=e=>{var r=V;if(!r)return le(0),0;var t=new Re(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return le(0),r;for(var i in e){var a=e[i];if(a===0||a===n)break;var o=t.ptr+16;if(Or(a,n,o))return le(a),r}return le(n),r},et=()=>De([]),rt=e=>De([e]),tt=(e,r)=>De([e,r]),nt=()=>{var e=pe.pop();e||de("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(pe.push(e),e.set_rethrown(!0),e.set_caught(!1),he++),V=r,V},it=(e,r,t)=>{var n=new Re(e);throw n.init(r,t),V=e,he++,V},at=()=>he,ge={},Oe=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function We(e){return this.fromWireType(D[e>>2])}var q={},z={},_e={},ur,ye=e=>{throw new ur(e)},N=(e,r,t)=>{e.forEach(function(s){_e[s]=r});function n(s){var u=t(s);u.length!==e.length&&ye("Mismatched type converter count");for(var f=0;f{z.hasOwnProperty(s)?i[u]=z[s]:(a.push(s),q.hasOwnProperty(s)||(q[s]=[]),q[s].push(()=>{i[u]=z[s],++o,o===a.length&&n(i)}))}),a.length===0&&n(i)},ot=e=>{var r=ge[e];delete ge[e];var t=r.rawConstructor,n=r.rawDestructor,i=r.fields,a=i.map(o=>o.getterReturnType).concat(i.map(o=>o.setterArgumentType));N([e],a,o=>{var s={};return i.forEach((u,f)=>{var v=u.fieldName,p=o[f],h=u.getter,g=u.getterContext,b=o[f+i.length],C=u.setter,y=u.setterContext;s[v]={read:R=>p.fromWireType(h(g,R)),write:(R,c)=>{var d=[];C(y,R,b.toWireType(d,c)),Oe(d)}}}),[{name:r.name,fromWireType:u=>{var f={};for(var v in s)f[v]=s[v].read(u);return n(u),f},toWireType:(u,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var p=t();for(v in s)s[v].write(p,f[v]);return u!==null&&u.push(n,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction:n}]})},st=(e,r,t,n,i)=>{},ut=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);lr=e},lr,E=e=>{for(var r="",t=e;O[t];)r+=lr[O[t++]];return r},J,_=e=>{throw new J(e)};function lt(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||_(`type "${n}" must have a positive integer typeid pointer`),z.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;_(`Cannot register type '${n}' twice`)}if(z[e]=r,delete _e[e],q.hasOwnProperty(e)){var i=q[e];delete q[e],i.forEach(a=>a())}}function U(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return lt(e,r,t)}var x=8,ct=(e,r,t,n)=>{r=E(r),U(e,{name:r,fromWireType:function(i){return!!i},toWireType:function(i,a){return a?t:n},argPackAdvance:x,readValueFromPointer:function(i){return this.fromWireType(O[i])},destructorFunction:null})},ft=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),ke=e=>{function r(t){return t.$$.ptrType.registeredClass.name}_(r(e)+" instance already deleted")},Me=!1,cr=e=>{},vt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},fr=e=>{e.count.value-=1;var r=e.count.value===0;r&&vt(e)},vr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=vr(e,r,t.baseClass);return n===null?null:t.downcast(n)},dr={},dt=()=>Object.keys(ae).length,pt=()=>{var e=[];for(var r in ae)ae.hasOwnProperty(r)&&e.push(ae[r]);return e},ne=[],je=()=>{for(;ne.length;){var e=ne.pop();e.$$.deleteScheduled=!1,e.delete()}},ie,ht=e=>{ie=e,ne.length&&ie&&ie(je)},gt=()=>{l.getInheritedInstanceCount=dt,l.getLiveInheritedInstances=pt,l.flushPendingDeletes=je,l.setDelayFunction=ht},ae={},_t=(e,r)=>{for(r===void 0&&_("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},yt=(e,r)=>(r=_t(e,r),ae[r]),me=(e,r)=>{(!r.ptrType||!r.ptr)&&ye("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&ye("Both smartPtrType and smartPtr must be specified"),r.count={value:1},oe(Object.create(e,{$$:{value:r,writable:!0}}))};function mt(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=yt(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function i(){return this.isSmartPointer?me(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):me(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a=this.registeredClass.getActualType(r),o=dr[a];if(!o)return i.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var u=vr(r,this.registeredClass,s.registeredClass);return u===null?i.call(this):this.isSmartPointer?me(s.registeredClass.instancePrototype,{ptrType:s,ptr:u,smartPtrType:this,smartPtr:e}):me(s.registeredClass.instancePrototype,{ptrType:s,ptr:u})}var oe=e=>typeof FinalizationRegistry>"u"?(oe=r=>r,e):(Me=new FinalizationRegistry(r=>{fr(r.$$)}),oe=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var i={$$:t};Me.register(r,i,r)}return r},cr=r=>Me.unregister(r),oe(e)),$t=()=>{Object.assign($e.prototype,{isAliasOf(e){if(!(this instanceof $e)||!(e instanceof $e))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,i=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)i=n.upcast(i),n=n.baseClass;return r===n&&t===i},clone(){if(this.$$.ptr||ke(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=oe(Object.create(Object.getPrototypeOf(this),{$$:{value:ft(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),cr(this),fr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||ke(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&_("Object already scheduled for deletion"),ne.push(this),ne.length===1&&ie&&ie(je),this.$$.deleteScheduled=!0,this}})};function $e(){}var se=(e,r)=>Object.defineProperty(r,"name",{value:e}),pr=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||_(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},He=(e,r,t)=>{l.hasOwnProperty(e)?((t===void 0||l[e].overloadTable!==void 0&&l[e].overloadTable[t]!==void 0)&&_(`Cannot register public name '${e}' twice`),pr(l,e,e),l.hasOwnProperty(t)&&_(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),l[e].overloadTable[t]=r):(l[e]=r,t!==void 0&&(l[e].numArguments=t))},bt=48,wt=57,Tt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=bt&&r<=wt?`_${e}`:e};function Pt(e,r,t,n,i,a,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=i,this.getActualType=a,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var Ie=(e,r,t)=>{for(;r!==t;)r.upcast||_(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function Ct(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ie(r.$$.ptr,t,this.registeredClass);return n}function At(e,r){var t;if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=Ie(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&_("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:_(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var i=r.clone();t=this.rawShare(t,Y.toHandle(()=>i.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:_("Unsupporting sharing policy")}return t}function Ft(e,r){if(r===null)return this.isReference&&_(`null is not a valid ${this.name}`),0;r.$$||_(`Cannot pass "${Be(r)}" as a ${this.name}`),r.$$.ptr||_(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&_(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ie(r.$$.ptr,t,this.registeredClass);return n}function hr(e){return this.fromWireType(m[e>>2])}var St=()=>{Object.assign(be.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:x,readValueFromPointer:hr,deleteObject(e){e!==null&&e.delete()},fromWireType:mt})};function be(e,r,t,n,i,a,o,s,u,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=i,this.pointeeType=a,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=f,this.rawDestructor=v,!i&&r.baseClass===void 0?n?(this.toWireType=Ct,this.destructorFunction=null):(this.toWireType=Ft,this.destructorFunction=null):this.toWireType=At}var gr=(e,r,t)=>{l.hasOwnProperty(e)||ye("Replacing nonexistant public symbol"),l[e].overloadTable!==void 0&&t!==void 0?l[e].overloadTable[t]=r:(l[e]=r,l[e].argCount=t)},Et=(e,r,t)=>{var n=l["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},we=[],_r,w=e=>{var r=we[e];return r||(e>=we.length&&(we.length=e+1),we[e]=r=_r.get(e)),r},Rt=(e,r,t)=>{if(e.includes("j"))return Et(e,r,t);var n=w(r).apply(null,t);return n},Dt=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),Rt(e,r,t)}},j=(e,r)=>{e=E(e);function t(){return e.includes("j")?Dt(e,r):w(r)}var n=t();return typeof n!="function"&&_(`unknown function pointer with signature ${e}: ${r}`),n},Ot=(e,r)=>{var t=se(r,function(n){this.name=r,this.message=n;var i=new Error(n).stack;i!==void 0&&(this.stack=this.toString()+` +`+i.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},yr,mr=e=>{var r=Er(e),t=E(r);return B(r),t},Te=(e,r)=>{var t=[],n={};function i(a){if(!n[a]&&!z[a]){if(_e[a]){_e[a].forEach(i);return}t.push(a),n[a]=!0}}throw r.forEach(i),new yr(`${e}: `+t.map(mr).join([", "]))},Wt=(e,r,t,n,i,a,o,s,u,f,v,p,h)=>{v=E(v),a=j(i,a),s&&(s=j(o,s)),f&&(f=j(u,f)),h=j(p,h);var g=Tt(v);He(g,function(){Te(`Cannot construct ${v} due to unbound types`,[n])}),N([e,r,t],n?[n]:[],function(b){b=b[0];var C,y;n?(C=b.registeredClass,y=C.instancePrototype):y=$e.prototype;var R=se(v,function(){if(Object.getPrototypeOf(this)!==c)throw new J("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new J(v+" has no accessible constructor");var Hr=d.constructor_body[arguments.length];if(Hr===void 0)throw new J(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return Hr.apply(this,arguments)}),c=Object.create(y,{constructor:{value:R}});R.prototype=c;var d=new Pt(v,R,c,h,C,a,s,f);if(d.baseClass){var A,S;(S=(A=d.baseClass).__derivedClasses)!==null&&S!==void 0||(A.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var K=new be(v,d,!0,!1,!1),Ae=new be(v+"*",d,!1,!1,!1),jr=new be(v+" const*",d,!1,!0,!1);return dr[e]={pointerType:Ae,constPointerType:jr},gr(g,R),[K,Ae,jr]})},Ue=(e,r)=>{for(var t=[],n=0;n>2]);return t};function kt(e){for(var r=1;r{var o=Ue(r,t);i=j(n,i),N([],[e],function(s){s=s[0];var u=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new J(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{Te(`Cannot construct ${s.name} due to unbound types`,o)},N([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=xe(u,f,null,i,a),[])),[]})},$r=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},jt=(e,r,t,n,i,a,o,s,u)=>{var f=Ue(t,n);r=E(r),r=$r(r),a=j(i,a),N([],[e],function(v){v=v[0];var p=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function h(){Te(`Cannot call ${p} due to unbound types`,f)}var g=v.registeredClass.instancePrototype,b=g[r];return b===void 0||b.overloadTable===void 0&&b.className!==v.name&&b.argCount===t-2?(h.argCount=t-2,h.className=v.name,g[r]=h):(pr(g,r,p),g[r].overloadTable[t-2]=h),N([],f,function(C){var y=xe(p,C,v,a,o);return g[r].overloadTable===void 0?(y.argCount=t-2,g[r]=y):g[r].overloadTable[t-2]=y,[]}),[]})};function Ht(){Object.assign(br.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function br(){this.allocated=[void 0],this.freelist=[]}var k=new br,Ve=e=>{e>=k.reserved&&--k.get(e).refcount===0&&k.free(e)},It=()=>{for(var e=0,r=k.reserved;r{k.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),k.reserved=k.allocated.length,l.count_emval_handles=It},Y={toValue:e=>(e||_("Cannot use deleted val. handle = "+e),k.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return k.allocate({refcount:1,value:e})}}},xt=(e,r)=>{r=E(r),U(e,{name:r,fromWireType:t=>{var n=Y.toValue(t);return Ve(t),n},toWireType:(t,n)=>Y.toHandle(n),argPackAdvance:x,readValueFromPointer:We,destructorFunction:null})},Vt=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(M[n>>0])}:function(n){return this.fromWireType(O[n>>0])};case 2:return t?function(n){return this.fromWireType(Z[n>>1])}:function(n){return this.fromWireType(re[n>>1])};case 4:return t?function(n){return this.fromWireType(D[n>>2])}:function(n){return this.fromWireType(m[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Yt=(e,r,t,n)=>{r=E(r);function i(){}i.values={},U(e,{name:r,constructor:i,fromWireType:function(a){return this.constructor.values[a]},toWireType:(a,o)=>o.value,argPackAdvance:x,readValueFromPointer:Vt(r,t,n),destructorFunction:null}),He(r,i)},Ye=(e,r)=>{var t=z[e];return t===void 0&&_(r+" has unknown type "+mr(e)),t},Bt=(e,r,t)=>{var n=Ye(e,"enum");r=E(r);var i=n.constructor,a=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:se(`${n.name}_${r}`,function(){})}});i.values[t]=a,i[r]=a},Be=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},Lt=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(Qe[t>>2])};case 8:return function(t){return this.fromWireType(er[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},zt=(e,r,t)=>{r=E(r),U(e,{name:r,fromWireType:n=>n,toWireType:(n,i)=>i,argPackAdvance:x,readValueFromPointer:Lt(r,t),destructorFunction:null})},Nt=(e,r,t,n,i,a,o)=>{var s=Ue(r,t);e=E(e),e=$r(e),i=j(n,i),He(e,function(){Te(`Cannot call ${e} due to unbound types`,s)},r-1),N([],s,function(u){var f=[u[0],null].concat(u.slice(1));return gr(e,xe(e,f,null,i,a),r-1),[]})},Xt=(e,r,t)=>{switch(r){case 1:return t?n=>M[n>>0]:n=>O[n>>0];case 2:return t?n=>Z[n>>1]:n=>re[n>>1];case 4:return t?n=>D[n>>2]:n=>m[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Zt=(e,r,t,n,i)=>{r=E(r);var a=v=>v;if(n===0){var o=32-8*t;a=v=>v<>>o}var s=r.includes("unsigned"),u=(v,p)=>{},f;s?f=function(v,p){return u(p,this.name),p>>>0}:f=function(v,p){return u(p,this.name),p},U(e,{name:r,fromWireType:a,toWireType:f,argPackAdvance:x,readValueFromPointer:Xt(r,t,n!==0),destructorFunction:null})},Gt=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],i=n[r];function a(o){var s=m[o>>2],u=m[o+4>>2];return new i(M.buffer,u,s)}t=E(t),U(e,{name:t,fromWireType:a,argPackAdvance:x,readValueFromPointer:a},{ignoreDuplicateRegistrations:!0})},wr=(e,r,t,n)=>{if(!(n>0))return 0;for(var i=t,a=t+n-1,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-i},qt=(e,r,t)=>wr(e,O,r,t),Tr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Pr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Jt=(e,r,t)=>{for(var n=r+t,i=r;e[i]&&!(i>=n);)++i;if(i-r>16&&e.buffer&&Pr)return Pr.decode(e.subarray(r,i));for(var a="";r>10,56320|f&1023)}}return a},Le=(e,r)=>e?Jt(O,e,r):"",Kt=(e,r)=>{r=E(r);var t=r==="std::string";U(e,{name:r,fromWireType(n){var i=m[n>>2],a=n+4,o;if(t)for(var s=a,u=0;u<=i;++u){var f=a+u;if(u==i||O[f]==0){var v=f-s,p=Le(s,v);o===void 0?o=p:(o+="\0",o+=p),s=f+1}}else{for(var h=new Array(i),u=0;u>2]=a,t&&o)qt(i,u,a+1);else if(o)for(var f=0;f255&&(B(u),_("String has UTF-16 code units that do not fit in 8 bits")),O[u+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,i=n+r/2;!(n>=i)&&re[n];)++n;if(t=n<<1,t-e>32&&Cr)return Cr.decode(O.subarray(e,t));for(var a="",o=0;!(o>=r/2);++o){var s=Z[e+o*2>>1];if(s==0)break;a+=String.fromCharCode(s)}return a},en=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var i=r,a=t>1]=s,r+=2}return Z[r>>1]=0,r-i},rn=e=>e.length*2,tn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var i=D[e+t*4>>2];if(i==0)break;if(++t,i>=65536){var a=i-65536;n+=String.fromCharCode(55296|a>>10,56320|a&1023)}else n+=String.fromCharCode(i)}return n},nn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var i=r,a=i+t-4,o=0;o=55296&&s<=57343){var u=e.charCodeAt(++o);s=65536+((s&1023)<<10)|u&1023}if(D[r>>2]=s,r+=4,r+4>a)break}return D[r>>2]=0,r-i},an=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},on=(e,r,t)=>{t=E(t);var n,i,a,o,s;r===2?(n=Qt,i=en,o=rn,a=()=>re,s=1):r===4&&(n=tn,i=nn,o=an,a=()=>m,s=2),U(e,{name:t,fromWireType:u=>{for(var f=m[u>>2],v=a(),p,h=u+4,g=0;g<=f;++g){var b=u+4+g*r;if(g==f||v[b>>s]==0){var C=b-h,y=n(h,C);p===void 0?p=y:(p+="\0",p+=y),h=b+r}}return B(u),p},toWireType:(u,f)=>{typeof f!="string"&&_(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),p=Xe(4+v+r);return m[p>>2]=v>>s,i(f,p+4,v+r),u!==null&&u.push(B,p),p},argPackAdvance:x,readValueFromPointer:We,destructorFunction(u){B(u)}})},sn=(e,r,t,n,i,a)=>{ge[e]={name:E(r),rawConstructor:j(t,n),rawDestructor:j(i,a),fields:[]}},un=(e,r,t,n,i,a,o,s,u,f)=>{ge[e].fields.push({fieldName:E(r),getterReturnType:t,getter:j(n,i),getterContext:a,setterArgumentType:o,setter:j(s,u),setterContext:f})},ln=(e,r)=>{r=E(r),U(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},ze=[],cn=(e,r,t,n)=>(e=ze[e],r=Y.toValue(r),e(null,r,t,n)),fn={},vn=e=>{var r=fn[e];return r===void 0?E(e):r},Ar=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},dn=e=>e===0?Y.toHandle(Ar()):(e=vn(e),Y.toHandle(Ar()[e])),pn=e=>{var r=ze.length;return ze.push(e),r},hn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},gn=Reflect.construct,_n=(e,r,t)=>{var n=[],i=e.toWireType(n,t);return n.length&&(m[r>>2]=Y.toHandle(n)),i},yn=(e,r,t)=>{var n=hn(e,r),i=n.shift();e--;var a=new Array(e),o=(u,f,v,p)=>{for(var h=0,g=0;gu.name).join(", ")}) => ${i.name}>`;return pn(se(s,o))},mn=e=>{e>4&&(k.get(e).refcount+=1)},$n=e=>{var r=Y.toValue(e);Oe(r),Ve(e)},bn=(e,r)=>{e=Ye(e,"_emval_take_value");var t=e.readValueFromPointer(r);return Y.toHandle(t)},wn=()=>{de("")},Tn=(e,r,t)=>O.copyWithin(e,r,r+t),Pn=()=>2147483648,Cn=e=>{var r=ve.buffer,t=(e-r.byteLength+65535)/65536;try{return ve.grow(t),rr(),1}catch{}},An=e=>{var r=O.length;e>>>=0;var t=Pn();if(e>t)return!1;for(var n=(u,f)=>u+(f-u%f)%f,i=1;i<=4;i*=2){var a=r*(1+.2/i);a=Math.min(a,e+100663296);var o=Math.min(t,n(Math.max(e,a),65536)),s=Cn(o);if(s)return!0}return!1},Ne={},Fn=()=>qe||"./this.program",ue=()=>{if(!ue.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:Fn()};for(var t in Ne)Ne[t]===void 0?delete r[t]:r[t]=Ne[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);ue.strings=n}return ue.strings},Sn=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);M[r>>0]=0},En=(e,r)=>{var t=0;return ue().forEach((n,i)=>{var a=r+t;m[e+i*4>>2]=a,Sn(n,a),t+=n.length+1}),0},Rn=(e,r)=>{var t=ue();m[e>>2]=t.length;var n=0;return t.forEach(i=>n+=i.length+1),m[r>>2]=n,0},Dn=e=>e,Pe=e=>e%4===0&&(e%100!==0||e%400===0),On=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Fr=[31,29,31,30,31,30,31,31,30,31,30,31],Sr=[31,28,31,30,31,30,31,31,30,31,30,31],Wn=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=Pe(t.getFullYear()),i=t.getMonth(),a=(n?Fr:Sr)[i];if(r>a-t.getDate())r-=a-t.getDate()+1,t.setDate(1),i<11?t.setMonth(i+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function kn(e,r,t){var n=t>0?t:Tr(e)+1,i=new Array(n),a=wr(e,i,0,i.length);return r&&(i.length=a),i}var Mn=(e,r)=>{M.set(e,r)},jn=(e,r,t,n)=>{var i=m[n+40>>2],a={tm_sec:D[n>>2],tm_min:D[n+4>>2],tm_hour:D[n+8>>2],tm_mday:D[n+12>>2],tm_mon:D[n+16>>2],tm_year:D[n+20>>2],tm_wday:D[n+24>>2],tm_yday:D[n+28>>2],tm_isdst:D[n+32>>2],tm_gmtoff:D[n+36>>2],tm_zone:i?Le(i):""},o=Le(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)o=o.replace(new RegExp(u,"g"),s[u]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function p(c,d,A){for(var S=typeof c=="number"?c.toString():c||"";S.length0?1:0}var S;return(S=A(c.getFullYear()-d.getFullYear()))===0&&(S=A(c.getMonth()-d.getMonth()))===0&&(S=A(c.getDate()-d.getDate())),S}function b(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function C(c){var d=Wn(new Date(c.tm_year+1900,0,1),c.tm_yday),A=new Date(d.getFullYear(),0,4),S=new Date(d.getFullYear()+1,0,4),K=b(A),Ae=b(S);return g(K,d)<=0?g(Ae,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var y={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return h(d/100|0,2)},"%d":c=>h(c.tm_mday,2),"%e":c=>p(c.tm_mday,2," "),"%g":c=>C(c).toString().substring(2),"%G":c=>C(c),"%H":c=>h(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),h(d,2)},"%j":c=>h(c.tm_mday+On(Pe(c.tm_year+1900)?Fr:Sr,c.tm_mon-1),3),"%m":c=>h(c.tm_mon+1,2),"%M":c=>h(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>h(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return h(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var S=(c.tm_wday+371-c.tm_yday)%7;S!=4&&(S!=3||!Pe(c.tm_year))&&(d=1)}}else{d=52;var A=(c.tm_wday+7-c.tm_yday-1)%7;(A==4||A==5&&Pe(c.tm_year%400-1))&&d++}return h(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return h(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,A=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(A?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var u in y)o.includes(u)&&(o=o.replace(new RegExp(u,"g"),y[u](a)));o=o.replace(/\0\0/g,"%");var R=kn(o,!1);return R.length>r?0:(Mn(R,e),R.length-1)},Hn=(e,r,t,n,i)=>jn(e,r,t,n);ur=l.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},ut(),J=l.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},$t(),gt(),St(),yr=l.UnboundTypeError=Ot(Error,"UnboundTypeError"),Ht(),Ut();var In={s:Jr,u:Kr,b:et,g:rt,q:tt,J:nt,f:it,V:at,d:Qr,da:ot,Q:st,_:ct,ca:Wt,ba:Mt,w:jt,Y:xt,x:Yt,h:Bt,L:zt,M:Nt,t:Zt,o:Gt,K:Kt,C:on,A:sn,ea:un,$:ln,R:cn,ha:Ve,fa:dn,Z:yn,N:mn,O:$n,aa:bn,B:wn,X:Tn,W:An,T:En,U:Rn,E:ei,D:Bn,F:Qn,n:ri,a:Un,e:zn,m:Yn,k:Xn,H:Jn,v:Gn,G:Kn,z:ni,P:ai,l:Nn,j:Ln,c:Vn,p:xn,I:qn,r:ti,i:Zn,y:ii,ga:Dn,S:Hn},F=qr(),B=l._free=e=>(B=l._free=F.ka)(e),Xe=l._malloc=e=>(Xe=l._malloc=F.la)(e),Er=e=>(Er=F.na)(e),$=(e,r)=>($=F.oa)(e,r),le=e=>(le=F.pa)(e),T=()=>(T=F.qa)(),P=e=>(P=F.ra)(e),Rr=e=>(Rr=F.sa)(e),Dr=e=>(Dr=F.ta)(e),Or=(e,r,t)=>(Or=F.ua)(e,r,t),Wr=e=>(Wr=F.va)(e);l.dynCall_viijii=(e,r,t,n,i,a,o)=>(l.dynCall_viijii=F.wa)(e,r,t,n,i,a,o);var kr=l.dynCall_jiiii=(e,r,t,n,i)=>(kr=l.dynCall_jiiii=F.xa)(e,r,t,n,i);l.dynCall_iiiiij=(e,r,t,n,i,a,o)=>(l.dynCall_iiiiij=F.ya)(e,r,t,n,i,a,o),l.dynCall_iiiiijj=(e,r,t,n,i,a,o,s,u)=>(l.dynCall_iiiiijj=F.za)(e,r,t,n,i,a,o,s,u),l.dynCall_iiiiiijj=(e,r,t,n,i,a,o,s,u,f)=>(l.dynCall_iiiiiijj=F.Aa)(e,r,t,n,i,a,o,s,u,f);function Un(e,r){var t=T();try{return w(e)(r)}catch(n){if(P(t),n!==n+0)throw n;$(1,0)}}function xn(e,r,t,n){var i=T();try{w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function Vn(e,r,t){var n=T();try{w(e)(r,t)}catch(i){if(P(n),i!==i+0)throw i;$(1,0)}}function Yn(e,r,t,n){var i=T();try{return w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function Bn(e,r,t,n,i){var a=T();try{return w(e)(r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}function Ln(e,r){var t=T();try{w(e)(r)}catch(n){if(P(t),n!==n+0)throw n;$(1,0)}}function zn(e,r,t){var n=T();try{return w(e)(r,t)}catch(i){if(P(n),i!==i+0)throw i;$(1,0)}}function Nn(e){var r=T();try{w(e)()}catch(t){if(P(r),t!==t+0)throw t;$(1,0)}}function Xn(e,r,t,n,i){var a=T();try{return w(e)(r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}function Zn(e,r,t,n,i,a,o,s,u,f,v){var p=T();try{w(e)(r,t,n,i,a,o,s,u,f,v)}catch(h){if(P(p),h!==h+0)throw h;$(1,0)}}function Gn(e,r,t,n,i,a,o){var s=T();try{return w(e)(r,t,n,i,a,o)}catch(u){if(P(s),u!==u+0)throw u;$(1,0)}}function qn(e,r,t,n,i){var a=T();try{w(e)(r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}function Jn(e,r,t,n,i,a){var o=T();try{return w(e)(r,t,n,i,a)}catch(s){if(P(o),s!==s+0)throw s;$(1,0)}}function Kn(e,r,t,n,i,a,o,s){var u=T();try{return w(e)(r,t,n,i,a,o,s)}catch(f){if(P(u),f!==f+0)throw f;$(1,0)}}function Qn(e,r,t,n){var i=T();try{return w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function ei(e,r,t,n){var i=T();try{return w(e)(r,t,n)}catch(a){if(P(i),a!==a+0)throw a;$(1,0)}}function ri(e){var r=T();try{return w(e)()}catch(t){if(P(r),t!==t+0)throw t;$(1,0)}}function ti(e,r,t,n,i,a,o,s){var u=T();try{w(e)(r,t,n,i,a,o,s)}catch(f){if(P(u),f!==f+0)throw f;$(1,0)}}function ni(e,r,t,n,i,a,o,s,u,f,v,p){var h=T();try{return w(e)(r,t,n,i,a,o,s,u,f,v,p)}catch(g){if(P(h),g!==g+0)throw g;$(1,0)}}function ii(e,r,t,n,i,a,o,s,u,f,v,p,h,g,b,C){var y=T();try{w(e)(r,t,n,i,a,o,s,u,f,v,p,h,g,b,C)}catch(R){if(P(y),R!==R+0)throw R;$(1,0)}}function ai(e,r,t,n,i){var a=T();try{return kr(e,r,t,n,i)}catch(o){if(P(a),o!==o+0)throw o;$(1,0)}}var Ce;te=function e(){Ce||Mr(),Ce||(te=e)};function Mr(){if(L>0||(Ur(),L>0))return;function e(){Ce||(Ce=!0,l.calledRun=!0,!Ke&&(xr(),Ze(l),l.onRuntimeInitialized&&l.onRuntimeInitialized(),Vr()))}l.setStatus?(l.setStatus("Running..."),setTimeout(function(){setTimeout(function(){l.setStatus("")},1),e()},1)):e()}if(l.preInit)for(typeof l.preInit=="function"&&(l.preInit=[l.preInit]);l.preInit.length>0;)l.preInit.pop()();return Mr(),X.ready}})();function oi(H){return W.getZXingModuleWithFactory(Fe,H)}function si(H){return W.setZXingModuleOverridesWithFactory(Fe,H)}async function ui(H,X){return W.readBarcodesFromImageFileWithFactory(Fe,H,X)}async function li(H,X){return W.readBarcodesFromImageDataWithFactory(Fe,H,X)}exports.barcodeFormats=W.barcodeFormats;exports.binarizers=W.binarizers;exports.characterSets=W.characterSets;exports.contentTypes=W.contentTypes;exports.defaultDecodeHints=W.defaultReaderOptions;exports.defaultReaderOptions=W.defaultReaderOptions;exports.eanAddOnSymbols=W.eanAddOnSymbols;exports.purgeZXingModule=W.purgeZXingModule;exports.readOutputEccLevels=W.readOutputEccLevels;exports.textModes=W.textModes;exports.getZXingModule=oi;exports.readBarcodesFromImageData=li;exports.readBarcodesFromImageFile=ui;exports.setZXingModuleOverrides=si; diff --git a/node_modules/zxing-wasm/dist/cjs/writer/index.d.ts b/node_modules/zxing-wasm/dist/cjs/writer/index.d.ts new file mode 100644 index 0000000..19b6103 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/writer/index.d.ts @@ -0,0 +1,13 @@ +/** + * The writer part API of this package is subject to change a lot. + * Please track the status of [this issue](https://github.com/zxing-cpp/zxing-cpp/issues/332). + * + * @packageDocumentation + */ +import { type ZXingWriterModule, type ZXingModuleOverrides } from "../core.js"; +import type { WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingWriterModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/cjs/writer/index.js b/node_modules/zxing-wasm/dist/cjs/writer/index.js new file mode 100644 index 0000000..ce3f869 --- /dev/null +++ b/node_modules/zxing-wasm/dist/cjs/writer/index.js @@ -0,0 +1,2 @@ +"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("../core-D9FNMpWh.cjs");var yr=(()=>{var U=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(J={}){var u=J,mr,Q;u.ready=new Promise((r,e)=>{mr=r,Q=e});var br=Object.assign({},u),wr=typeof window=="object",Y=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var R="";function Yr(r){return u.locateFile?u.locateFile(r,R):R+r}var sr;(wr||Y)&&(Y?R=self.location.href:typeof document<"u"&&document.currentScript&&(R=document.currentScript.src),U&&(R=U),R.indexOf("blob:")!==0?R=R.substr(0,R.replace(/[?#].*/,"").lastIndexOf("/")+1):R="",Y&&(sr=r=>{var e=new XMLHttpRequest;return e.open("GET",r,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),u.print||console.log.bind(console);var Z=u.printErr||console.error.bind(console);Object.assign(u,br),br=null,u.arguments&&u.arguments,u.thisProgram&&u.thisProgram,u.quit&&u.quit;var L;u.wasmBinary&&(L=u.wasmBinary),typeof WebAssembly!="object"&&ur("no native wasm support detected");var rr,Tr=!1,M,y,H,N,O,h,$r,Ar;function Er(){var r=rr.buffer;u.HEAP8=M=new Int8Array(r),u.HEAP16=H=new Int16Array(r),u.HEAPU8=y=new Uint8Array(r),u.HEAPU16=N=new Uint16Array(r),u.HEAP32=O=new Int32Array(r),u.HEAPU32=h=new Uint32Array(r),u.HEAPF32=$r=new Float32Array(r),u.HEAPF64=Ar=new Float64Array(r)}var Cr=[],Rr=[],Fr=[];function re(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)ne(u.preRun.shift());fr(Cr)}function ee(){fr(Rr)}function te(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)ie(u.postRun.shift());fr(Fr)}function ne(r){Cr.unshift(r)}function ae(r){Rr.unshift(r)}function ie(r){Fr.unshift(r)}var j=0,q=null;function oe(r){var e;j++,(e=u.monitorRunDependencies)===null||e===void 0||e.call(u,j)}function se(r){var e;if(j--,(e=u.monitorRunDependencies)===null||e===void 0||e.call(u,j),j==0&&q){var t=q;q=null,t()}}function ur(r){var e;(e=u.onAbort)===null||e===void 0||e.call(u,r),r="Aborted("+r+")",Z(r),Tr=!0,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw Q(t),t}var ue="data:application/octet-stream;base64,",Pr=r=>r.startsWith(ue),V;V="zxing_writer.wasm",Pr(V)||(V=Yr(V));function Wr(r){if(r==V&&L)return new Uint8Array(L);if(sr)return sr(r);throw"both async and sync fetching of the wasm failed"}function fe(r){return!L&&(wr||Y)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+r+"'";return e.arrayBuffer()}).catch(()=>Wr(r)):Promise.resolve().then(()=>Wr(r))}function kr(r,e,t){return fe(r).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(t,n=>{Z(`failed to asynchronously prepare wasm: ${n}`),ur(n)})}function ce(r,e,t,n){return!r&&typeof WebAssembly.instantiateStreaming=="function"&&!Pr(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(o){return Z(`wasm streaming compile failed: ${o}`),Z("falling back to ArrayBuffer instantiation"),kr(e,t,n)})}):kr(e,t,n)}function le(){var r={a:Ft};function e(n,a){return g=n.exports,rr=g.R,Er(),Br=g.V,ae(g.S),se(),g}oe();function t(n){e(n.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(r,e)}catch(n){Z(`Module.instantiateWasm callback failed with error: ${n}`),Q(n)}return ce(L,V,r,t).catch(Q),{}}var fr=r=>{for(;r.length>0;)r.shift()(u)};u.noExitRuntime;var Sr=[],ve=r=>{var e=new cr(r);return e.get_caught()||e.set_caught(!0),e.set_rethrown(!1),Sr.push(e),Kr(e.excPtr),e.get_exception_ptr()},I=0,de=()=>{T(0,0);var r=Sr.pop();Gr(r.excPtr),I=0};function cr(r){this.excPtr=r,this.ptr=r-24,this.set_type=function(e){h[this.ptr+4>>2]=e},this.get_type=function(){return h[this.ptr+4>>2]},this.set_destructor=function(e){h[this.ptr+8>>2]=e},this.get_destructor=function(){return h[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,M[this.ptr+12>>0]=e},this.get_caught=function(){return M[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,M[this.ptr+13>>0]=e},this.get_rethrown=function(){return M[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){h[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return h[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=Jr(this.get_type());if(e)return h[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var he=r=>{throw I||(I=r),I},lr=r=>{var e=I;if(!e)return K(0),0;var t=new cr(e);t.set_adjusted_ptr(e);var n=t.get_type();if(!n)return K(0),e;for(var a in r){var i=r[a];if(i===0||i===n)break;var o=t.ptr+16;if(zr(i,n,o))return K(i),e}return K(n),e},_e=()=>lr([]),pe=r=>lr([r]),ge=(r,e)=>lr([r,e]),ye=(r,e,t)=>{var n=new cr(r);throw n.init(e,t),I=r,I},er={},vr=r=>{for(;r.length;){var e=r.pop(),t=r.pop();t(e)}};function dr(r){return this.fromWireType(O[r>>2])}var B={},D={},tr={},Ur,Mr=r=>{throw new Ur(r)},Or=(r,e,t)=>{r.forEach(function(s){tr[s]=e});function n(s){var f=t(s);f.length!==r.length&&Mr("Mismatched type converter count");for(var c=0;c{D.hasOwnProperty(s)?a[f]=D[s]:(i.push(s),B.hasOwnProperty(s)||(B[s]=[]),B[s].push(()=>{a[f]=D[s],++o,o===i.length&&n(a)}))}),i.length===0&&n(a)},me=r=>{var e=er[r];delete er[r];var t=e.rawConstructor,n=e.rawDestructor,a=e.fields,i=a.map(o=>o.getterReturnType).concat(a.map(o=>o.setterArgumentType));Or([r],i,o=>{var s={};return a.forEach((f,c)=>{var l=f.fieldName,v=o[c],_=f.getter,d=f.getterContext,k=o[c+a.length],C=f.setter,m=f.setterContext;s[l]={read:z=>v.fromWireType(_(d,z)),write:(z,gr)=>{var or=[];C(m,z,k.toWireType(or,gr)),vr(or)}}}),[{name:e.name,fromWireType:f=>{var c={};for(var l in s)c[l]=s[l].read(f);return n(f),c},toWireType:(f,c)=>{for(var l in s)if(!(l in c))throw new TypeError(`Missing field: "${l}"`);var v=t();for(l in s)s[l].write(v,c[l]);return f!==null&&f.push(n,v),v},argPackAdvance:P,readValueFromPointer:dr,destructorFunction:n}]})},be=(r,e,t,n,a)=>{},we=()=>{for(var r=new Array(256),e=0;e<256;++e)r[e]=String.fromCharCode(e);jr=r},jr,p=r=>{for(var e="",t=r;y[t];)e+=jr[y[t++]];return e},Ir,b=r=>{throw new Ir(r)};function Te(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(r||b(`type "${n}" must have a positive integer typeid pointer`),D.hasOwnProperty(r)){if(t.ignoreDuplicateRegistrations)return;b(`Cannot register type '${n}' twice`)}if(D[r]=e,delete tr[r],B.hasOwnProperty(r)){var a=B[r];delete B[r],a.forEach(i=>i())}}function F(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Te(r,e,t)}var P=8,$e=(r,e,t,n)=>{e=p(e),F(r,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:P,readValueFromPointer:function(a){return this.fromWireType(y[a])},destructorFunction:null})};function Ae(){Object.assign(Dr.prototype,{get(r){return this.allocated[r]},has(r){return this.allocated[r]!==void 0},allocate(r){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=r,e},free(r){this.allocated[r]=void 0,this.freelist.push(r)}})}function Dr(){this.allocated=[void 0],this.freelist=[]}var $=new Dr,hr=r=>{r>=$.reserved&&--$.get(r).refcount===0&&$.free(r)},Ee=()=>{for(var r=0,e=$.reserved;e<$.allocated.length;++e)$.allocated[e]!==void 0&&++r;return r},Ce=()=>{$.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),$.reserved=$.allocated.length,u.count_emval_handles=Ee},x={toValue:r=>(r||b("Cannot use deleted val. handle = "+r),$.get(r).value),toHandle:r=>{switch(r){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return $.allocate({refcount:1,value:r})}}},Re=(r,e)=>{e=p(e),F(r,{name:e,fromWireType:t=>{var n=x.toValue(t);return hr(t),n},toWireType:(t,n)=>x.toHandle(n),argPackAdvance:P,readValueFromPointer:dr,destructorFunction:null})},Fe=(r,e,t)=>{if(r[e].overloadTable===void 0){var n=r[e];r[e]=function(){return r[e].overloadTable.hasOwnProperty(arguments.length)||b(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${r[e].overloadTable})!`),r[e].overloadTable[arguments.length].apply(this,arguments)},r[e].overloadTable=[],r[e].overloadTable[n.argCount]=n}},xr=(r,e,t)=>{u.hasOwnProperty(r)?((t===void 0||u[r].overloadTable!==void 0&&u[r].overloadTable[t]!==void 0)&&b(`Cannot register public name '${r}' twice`),Fe(u,r,r),u.hasOwnProperty(t)&&b(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),u[r].overloadTable[t]=e):(u[r]=e,t!==void 0&&(u[r].numArguments=t))},Pe=(r,e,t)=>{switch(e){case 1:return t?function(n){return this.fromWireType(M[n>>0])}:function(n){return this.fromWireType(y[n>>0])};case 2:return t?function(n){return this.fromWireType(H[n>>1])}:function(n){return this.fromWireType(N[n>>1])};case 4:return t?function(n){return this.fromWireType(O[n>>2])}:function(n){return this.fromWireType(h[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},We=(r,e,t,n)=>{e=p(e);function a(){}a.values={},F(r,{name:e,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,o)=>o.value,argPackAdvance:P,readValueFromPointer:Pe(e,t,n),destructorFunction:null}),xr(e,a)},nr=(r,e)=>Object.defineProperty(e,"name",{value:r}),Hr=r=>{var e=qr(r),t=p(e);return W(e),t},Vr=(r,e)=>{var t=D[r];return t===void 0&&b(e+" has unknown type "+Hr(r)),t},ke=(r,e,t)=>{var n=Vr(r,"enum");e=p(e);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:nr(`${n.name}_${e}`,function(){})}});a.values[t]=i,a[e]=i},Se=(r,e)=>{switch(e){case 4:return function(t){return this.fromWireType($r[t>>2])};case 8:return function(t){return this.fromWireType(Ar[t>>3])};default:throw new TypeError(`invalid float width (${e}): ${r}`)}},Ue=(r,e,t)=>{e=p(e),F(r,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:P,readValueFromPointer:Se(e,t),destructorFunction:null})};function Me(r){for(var e=1;e{for(var t=[],n=0;n>2]);return t},Ie=(r,e,t)=>{u.hasOwnProperty(r)||Mr("Replacing nonexistant public symbol"),u[r].overloadTable!==void 0&&t!==void 0?u[r].overloadTable[t]=e:(u[r]=e,u[r].argCount=t)},De=(r,e,t)=>{var n=u["dynCall_"+r];return t&&t.length?n.apply(null,[e].concat(t)):n.call(null,e)},ar=[],Br,w=r=>{var e=ar[r];return e||(r>=ar.length&&(ar.length=r+1),ar[r]=e=Br.get(r)),e},xe=(r,e,t)=>{if(r.includes("j"))return De(r,e,t);var n=w(e).apply(null,t);return n},He=(r,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),xe(r,e,t)}},G=(r,e)=>{r=p(r);function t(){return r.includes("j")?He(r,e):w(e)}var n=t();return typeof n!="function"&&b(`unknown function pointer with signature ${r}: ${e}`),n},Ve=(r,e)=>{var t=nr(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(r.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Xr,Be=(r,e)=>{var t=[],n={};function a(i){if(!n[i]&&!D[i]){if(tr[i]){tr[i].forEach(a);return}t.push(i),n[i]=!0}}throw e.forEach(a),new Xr(`${r}: `+t.map(Hr).join([", "]))},Xe=r=>{r=r.trim();const e=r.indexOf("(");return e!==-1?r.substr(0,e):r},Ze=(r,e,t,n,a,i,o)=>{var s=je(e,t);r=p(r),r=Xe(r),a=G(n,a),xr(r,function(){Be(`Cannot call ${r} due to unbound types`,s)},e-1),Or([],s,function(f){var c=[f[0],null].concat(f.slice(1));return Ie(r,Oe(r,c,null,a,i),e-1),[]})},Le=(r,e,t)=>{switch(e){case 1:return t?n=>M[n>>0]:n=>y[n>>0];case 2:return t?n=>H[n>>1]:n=>N[n>>1];case 4:return t?n=>O[n>>2]:n=>h[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},Ne=(r,e,t,n,a)=>{e=p(e);var i=l=>l;if(n===0){var o=32-8*t;i=l=>l<>>o}var s=e.includes("unsigned"),f=(l,v)=>{},c;s?c=function(l,v){return f(v,this.name),v>>>0}:c=function(l,v){return f(v,this.name),v},F(r,{name:e,fromWireType:i,toWireType:c,argPackAdvance:P,readValueFromPointer:Le(e,t,n!==0),destructorFunction:null})},qe=(r,e,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function i(o){var s=h[o>>2],f=h[o+4>>2];return new a(M.buffer,f,s)}t=p(t),F(r,{name:t,fromWireType:i,argPackAdvance:P,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})};function Ge(r){return this.fromWireType(h[r>>2])}var Ke=(r,e,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,o=0;o=55296&&s<=57343){var f=r.charCodeAt(++o);s=65536+((s&1023)<<10)|f&1023}if(s<=127){if(t>=i)break;e[t++]=s}else if(s<=2047){if(t+1>=i)break;e[t++]=192|s>>6,e[t++]=128|s&63}else if(s<=65535){if(t+2>=i)break;e[t++]=224|s>>12,e[t++]=128|s>>6&63,e[t++]=128|s&63}else{if(t+3>=i)break;e[t++]=240|s>>18,e[t++]=128|s>>12&63,e[t++]=128|s>>6&63,e[t++]=128|s&63}}return e[t]=0,t-a},ze=(r,e,t)=>Ke(r,y,e,t),Je=r=>{for(var e=0,t=0;t=55296&&n<=57343?(e+=4,++t):e+=3}return e},Zr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Qe=(r,e,t)=>{for(var n=e+t,a=e;r[a]&&!(a>=n);)++a;if(a-e>16&&r.buffer&&Zr)return Zr.decode(r.subarray(e,a));for(var i="";e>10,56320|c&1023)}}return i},Ye=(r,e)=>r?Qe(y,r,e):"",rt=(r,e)=>{e=p(e);var t=e==="std::string";F(r,{name:e,fromWireType(n){var a=h[n>>2],i=n+4,o;if(t)for(var s=i,f=0;f<=a;++f){var c=i+f;if(f==a||y[c]==0){var l=c-s,v=Ye(s,l);o===void 0?o=v:(o+="\0",o+=v),s=c+1}}else{for(var _=new Array(a),f=0;f>2]=i,t&&o)ze(a,f,i+1);else if(o)for(var c=0;c255&&(W(f),b("String has UTF-16 code units that do not fit in 8 bits")),y[f+c]=l}else for(var c=0;c{for(var t=r,n=t>>1,a=n+e/2;!(n>=a)&&N[n];)++n;if(t=n<<1,t-r>32&&Lr)return Lr.decode(y.subarray(r,t));for(var i="",o=0;!(o>=e/2);++o){var s=H[r+o*2>>1];if(s==0)break;i+=String.fromCharCode(s)}return i},tt=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=e,i=t>1]=s,e+=2}return H[e>>1]=0,e-a},nt=r=>r.length*2,at=(r,e)=>{for(var t=0,n="";!(t>=e/4);){var a=O[r+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},it=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=e,i=a+t-4,o=0;o=55296&&s<=57343){var f=r.charCodeAt(++o);s=65536+((s&1023)<<10)|f&1023}if(O[e>>2]=s,e+=4,e+4>i)break}return O[e>>2]=0,e-a},ot=r=>{for(var e=0,t=0;t=55296&&n<=57343&&++t,e+=4}return e},st=(r,e,t)=>{t=p(t);var n,a,i,o,s;e===2?(n=et,a=tt,o=nt,i=()=>N,s=1):e===4&&(n=at,a=it,o=ot,i=()=>h,s=2),F(r,{name:t,fromWireType:f=>{for(var c=h[f>>2],l=i(),v,_=f+4,d=0;d<=c;++d){var k=f+4+d*e;if(d==c||l[k>>s]==0){var C=k-_,m=n(_,C);v===void 0?v=m:(v+="\0",v+=m),_=k+e}}return W(f),v},toWireType:(f,c)=>{typeof c!="string"&&b(`Cannot pass non-string to C++ string type ${t}`);var l=o(c),v=pr(4+l+e);return h[v>>2]=l>>s,a(c,v+4,l+e),f!==null&&f.push(W,v),v},argPackAdvance:P,readValueFromPointer:dr,destructorFunction(f){W(f)}})},ut=(r,e,t,n,a,i)=>{er[r]={name:p(e),rawConstructor:G(t,n),rawDestructor:G(a,i),fields:[]}},ft=(r,e,t,n,a,i,o,s,f,c)=>{er[r].fields.push({fieldName:p(e),getterReturnType:t,getter:G(n,a),getterContext:i,setterArgumentType:o,setter:G(s,f),setterContext:c})},ct=(r,e)=>{e=p(e),F(r,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},_r=[],lt=(r,e,t,n)=>(r=_r[r],e=x.toValue(e),r(null,e,t,n)),vt={},dt=r=>{var e=vt[r];return e===void 0?p(r):e},Nr=()=>{if(typeof globalThis=="object")return globalThis;function r(e){e.$$$embind_global$$$=e;var t=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return t||delete e.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&r(global)?$$$embind_global$$$=global:typeof self=="object"&&r(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},ht=r=>r===0?x.toHandle(Nr()):(r=dt(r),x.toHandle(Nr()[r])),_t=r=>{var e=_r.length;return _r.push(r),e},pt=(r,e)=>{for(var t=new Array(r),n=0;n>2],"parameter "+n);return t},gt=Reflect.construct,yt=(r,e,t)=>{var n=[],a=r.toWireType(n,t);return n.length&&(h[e>>2]=x.toHandle(n)),a},mt=(r,e,t)=>{var n=pt(r,e),a=n.shift();r--;var i=new Array(r),o=(f,c,l,v)=>{for(var _=0,d=0;df.name).join(", ")}) => ${a.name}>`;return _t(nr(s,o))},bt=r=>{r>4&&($.get(r).refcount+=1)},wt=r=>{var e=x.toValue(r);vr(e),hr(r)},Tt=()=>{ur("")},$t=(r,e,t)=>y.copyWithin(r,e,e+t),At=()=>2147483648,Et=r=>{var e=rr.buffer,t=(r-e.byteLength+65535)/65536;try{return rr.grow(t),Er(),1}catch{}},Ct=r=>{var e=y.length;r>>>=0;var t=At();if(r>t)return!1;for(var n=(f,c)=>f+(c-f%c)%c,a=1;a<=4;a*=2){var i=e*(1+.2/a);i=Math.min(i,r+100663296);var o=Math.min(t,n(Math.max(r,i),65536)),s=Et(o);if(s)return!0}return!1},Rt=r=>r;Ur=u.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},we(),Ir=u.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ae(),Ce(),Xr=u.UnboundTypeError=Ve(Error,"UnboundTypeError");var Ft={r:ve,q:de,g:_e,d:pe,k:ge,a:ye,i:he,M:me,C:be,H:$e,G:Re,K:We,b:ke,v:Ue,L:Ze,h:Ne,e:qe,u:rt,p:st,w:ut,N:ft,I:ct,z:lt,P:hr,B:ht,A:mt,x:bt,Q:wt,s:Tt,F:$t,E:Ct,y:Mt,c:Pt,l:Ot,n:Ut,o:jt,f:Wt,t:xt,m:Dt,D:St,J:kt,j:It,O:Rt},g=le(),pr=u._malloc=r=>(pr=u._malloc=g.T)(r),W=u._free=r=>(W=u._free=g.U)(r),qr=r=>(qr=g.W)(r),T=(r,e)=>(T=g.X)(r,e),K=r=>(K=g.Y)(r),A=()=>(A=g.Z)(),E=r=>(E=g._)(r),Gr=r=>(Gr=g.$)(r),Kr=r=>(Kr=g.aa)(r),zr=(r,e,t)=>(zr=g.ba)(r,e,t),Jr=r=>(Jr=g.ca)(r);function Pt(r,e){var t=A();try{return w(r)(e)}catch(n){if(E(t),n!==n+0)throw n;T(1,0)}}function Wt(r,e){var t=A();try{w(r)(e)}catch(n){if(E(t),n!==n+0)throw n;T(1,0)}}function kt(r,e,t,n,a,i){var o=A();try{w(r)(e,t,n,a,i)}catch(s){if(E(o),s!==s+0)throw s;T(1,0)}}function St(r,e,t,n,a){var i=A();try{w(r)(e,t,n,a)}catch(o){if(E(i),o!==o+0)throw o;T(1,0)}}function Ut(r,e,t,n){var a=A();try{return w(r)(e,t,n)}catch(i){if(E(a),i!==i+0)throw i;T(1,0)}}function Mt(r,e,t,n,a){var i=A();try{return w(r)(e,t,n,a)}catch(o){if(E(i),o!==o+0)throw o;T(1,0)}}function Ot(r,e,t){var n=A();try{return w(r)(e,t)}catch(a){if(E(n),a!==a+0)throw a;T(1,0)}}function jt(r){var e=A();try{w(r)()}catch(t){if(E(e),t!==t+0)throw t;T(1,0)}}function It(r,e,t,n,a,i,o,s,f,c,l){var v=A();try{w(r)(e,t,n,a,i,o,s,f,c,l)}catch(_){if(E(v),_!==_+0)throw _;T(1,0)}}function Dt(r,e,t,n){var a=A();try{w(r)(e,t,n)}catch(i){if(E(a),i!==i+0)throw i;T(1,0)}}function xt(r,e,t){var n=A();try{w(r)(e,t)}catch(a){if(E(n),a!==a+0)throw a;T(1,0)}}var ir;q=function r(){ir||Qr(),ir||(q=r)};function Qr(){if(j>0||(re(),j>0))return;function r(){ir||(ir=!0,u.calledRun=!0,!Tr&&(ee(),mr(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),te()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),r()},1)):r()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Qr(),J.ready}})();function Vt(U){return S.getZXingModuleWithFactory(yr,U)}function Bt(U){return S.setZXingModuleOverridesWithFactory(yr,U)}async function Xt(U,J){return S.writeBarcodeToImageFileWithFactory(yr,U,J)}exports.barcodeFormats=S.barcodeFormats;exports.characterSets=S.characterSets;exports.defaultEncodeHints=S.defaultWriterOptions;exports.defaultWriterOptions=S.defaultWriterOptions;exports.purgeZXingModule=S.purgeZXingModule;exports.writeInputEccLevels=S.writeInputEccLevels;exports.getZXingModule=Vt;exports.setZXingModuleOverrides=Bt;exports.writeBarcodeToImageFile=Xt; diff --git a/node_modules/zxing-wasm/dist/es/bindings/barcodeFormat.d.ts b/node_modules/zxing-wasm/dist/es/bindings/barcodeFormat.d.ts new file mode 100644 index 0000000..4d682b6 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/barcodeFormat.d.ts @@ -0,0 +1,21 @@ +export declare const barcodeFormats: readonly ["Aztec", "Codabar", "Code128", "Code39", "Code93", "DataBar", "DataBarExpanded", "DataMatrix", "DXFilmEdge", "EAN-13", "EAN-8", "ITF", "Linear-Codes", "Matrix-Codes", "MaxiCode", "MicroQRCode", "None", "PDF417", "QRCode", "rMQRCode", "UPC-A", "UPC-E"]; +/** + * @internal + */ +export type BarcodeFormat = (typeof barcodeFormats)[number]; +/** + * Barcode formats that can be used in {@link ReaderOptions.formats | `ReaderOptions.formats`} to read barcodes. + */ +export type ReadInputBarcodeFormat = Exclude; +/** + * Barcode formats that can be used in {@link WriterOptions.format | `WriterOptions.format`} to write barcodes. + */ +export type WriteInputBarcodeFormat = Exclude; +/** + * Barcode formats that may be returned in {@link ReadResult.format} in read functions. + */ +export type ReadOutputBarcodeFormat = Exclude; +export declare function formatsToString(formats: BarcodeFormat[]): string; +export declare function formatsFromString(formatString: string): BarcodeFormat[]; +export declare function formatFromString(format: string): BarcodeFormat; +export declare function normalizeFormatString(format: string): string; diff --git a/node_modules/zxing-wasm/dist/es/bindings/binarizer.d.ts b/node_modules/zxing-wasm/dist/es/bindings/binarizer.d.ts new file mode 100644 index 0000000..52ee7e9 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/binarizer.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const binarizers: readonly ["LocalAverage", "GlobalHistogram", "FixedThreshold", "BoolCast"]; +export type Binarizer = (typeof binarizers)[number]; +/** + * @internal + */ +export type ZXingBinarizer = Record; +export declare function binarizerToZXingEnum(zxingModule: ZXingModule, binarizer: Binarizer): ZXingEnum; +export declare function zxingEnumToBinarizer(zxingEnum: ZXingEnum): Binarizer; diff --git a/node_modules/zxing-wasm/dist/es/bindings/characterSet.d.ts b/node_modules/zxing-wasm/dist/es/bindings/characterSet.d.ts new file mode 100644 index 0000000..35ecb14 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/characterSet.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule, ZXingModuleType } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const characterSets: readonly ["Unknown", "ASCII", "ISO8859_1", "ISO8859_2", "ISO8859_3", "ISO8859_4", "ISO8859_5", "ISO8859_6", "ISO8859_7", "ISO8859_8", "ISO8859_9", "ISO8859_10", "ISO8859_11", "ISO8859_13", "ISO8859_14", "ISO8859_15", "ISO8859_16", "Cp437", "Cp1250", "Cp1251", "Cp1252", "Cp1256", "Shift_JIS", "Big5", "GB2312", "GB18030", "EUC_JP", "EUC_KR", "UTF16BE", "UTF8", "UTF16LE", "UTF32BE", "UTF32LE", "BINARY"]; +export type CharacterSet = (typeof characterSets)[number]; +/** + * @internal + */ +export type ZXingCharacterSet = Record; +export declare function characterSetToZXingEnum(zxingModule: ZXingModule, characterSet: CharacterSet): ZXingEnum; +export declare function zxingEnumToCharacterSet(zxingEnum: ZXingEnum): CharacterSet; diff --git a/node_modules/zxing-wasm/dist/es/bindings/contentType.d.ts b/node_modules/zxing-wasm/dist/es/bindings/contentType.d.ts new file mode 100644 index 0000000..9fe9007 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/contentType.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const contentTypes: readonly ["Text", "Binary", "Mixed", "GS1", "ISO15434", "UnknownECI"]; +export type ContentType = (typeof contentTypes)[number]; +/** + * @internal + */ +export type ZXingContentType = Record; +export declare function contentTypeToZXingEnum(zxingModule: ZXingModule, contentType: ContentType): ZXingEnum; +export declare function zxingEnumToContentType(zxingEnum: ZXingEnum): ContentType; diff --git a/node_modules/zxing-wasm/dist/es/bindings/eanAddOnSymbol.d.ts b/node_modules/zxing-wasm/dist/es/bindings/eanAddOnSymbol.d.ts new file mode 100644 index 0000000..fb45fd7 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/eanAddOnSymbol.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const eanAddOnSymbols: readonly ["Ignore", "Read", "Require"]; +export type EanAddOnSymbol = (typeof eanAddOnSymbols)[number]; +/** + * @internal + */ +export type ZXingEanAddOnSymbol = Record; +export declare function eanAddOnSymbolToZXingEnum(zxingModule: ZXingModule, eanAddOnSymbol: EanAddOnSymbol): ZXingEnum; +export declare function zxingEnumToEanAddOnSymbol(zxingEnum: ZXingEnum): EanAddOnSymbol; diff --git a/node_modules/zxing-wasm/dist/es/bindings/eccLevel.d.ts b/node_modules/zxing-wasm/dist/es/bindings/eccLevel.d.ts new file mode 100644 index 0000000..bbfb1bc --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/eccLevel.d.ts @@ -0,0 +1,4 @@ +export declare const writeInputEccLevels: readonly [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]; +export type WriteInputEccLevel = (typeof writeInputEccLevels)[number]; +export declare const readOutputEccLevels: readonly ["L", "M", "Q", "H"]; +export type ReadOutputEccLevel = (typeof readOutputEccLevels)[number]; diff --git a/node_modules/zxing-wasm/dist/es/bindings/enum.d.ts b/node_modules/zxing-wasm/dist/es/bindings/enum.d.ts new file mode 100644 index 0000000..7d42d60 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/enum.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export interface ZXingEnum { + value: number; +} diff --git a/node_modules/zxing-wasm/dist/es/bindings/exposedReaderBindings.d.ts b/node_modules/zxing-wasm/dist/es/bindings/exposedReaderBindings.d.ts new file mode 100644 index 0000000..cc29207 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/exposedReaderBindings.d.ts @@ -0,0 +1,17 @@ +import { type ReaderOptions } from "./index.js"; +export declare const defaultReaderOptions: Required; +export { barcodeFormats, type BarcodeFormat, type ReadInputBarcodeFormat, type ReadOutputBarcodeFormat, binarizers, type ZXingBinarizer, type Binarizer, characterSets, type ZXingCharacterSet, type CharacterSet, contentTypes, type ZXingContentType, type ContentType, type ZXingReaderOptions, type ReaderOptions, eanAddOnSymbols, type ZXingEanAddOnSymbol, type EanAddOnSymbol, readOutputEccLevels, type ReadOutputEccLevel, type ZXingEnum, type ZXingPoint, type ZXingPosition, type Point, type Position, type ZXingReadResult, type ReadResult, textModes, type ZXingTextMode, type TextMode, type ZXingVector, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultReaderOptions` + */ +defaultReaderOptions as defaultDecodeHints, }; +export { +/** + * @deprecated renamed as `ZXingReaderOptions` + */ +type ZXingReaderOptions as ZXingDecodeHints, +/** + * @deprecated renamed as `ReaderOptions` + */ +type ReaderOptions as DecodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/es/bindings/exposedWriterBindings.d.ts b/node_modules/zxing-wasm/dist/es/bindings/exposedWriterBindings.d.ts new file mode 100644 index 0000000..9254a66 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/exposedWriterBindings.d.ts @@ -0,0 +1,17 @@ +import { type WriterOptions } from "./index.js"; +export declare const defaultWriterOptions: Required; +export { barcodeFormats, type BarcodeFormat, type WriteInputBarcodeFormat, characterSets, type ZXingCharacterSet, type CharacterSet, writeInputEccLevels, type WriteInputEccLevel, type ZXingWriterOptions, type WriterOptions, type ZXingEnum, type ZXingWriteResult, type WriteResult, } from "./index.js"; +export { +/** + * @deprecated renamed as `defaultWriterOptions` + */ +defaultWriterOptions as defaultEncodeHints, }; +export { +/** + * @deprecated renamed as `ZXingWriterOptions` + */ +type ZXingWriterOptions as ZXingEncodeHints, +/** + * @deprecated renamed as `WriterOptions` + */ +type WriterOptions as EncodeHints, } from "./index.js"; diff --git a/node_modules/zxing-wasm/dist/es/bindings/index.d.ts b/node_modules/zxing-wasm/dist/es/bindings/index.d.ts new file mode 100644 index 0000000..0081c44 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/index.d.ts @@ -0,0 +1,14 @@ +export * from "./barcodeFormat.js"; +export * from "./binarizer.js"; +export * from "./characterSet.js"; +export * from "./contentType.js"; +export * from "./readerOptions.js"; +export * from "./eanAddOnSymbol.js"; +export * from "./eccLevel.js"; +export * from "./writerOptions.js"; +export * from "./enum.js"; +export * from "./position.js"; +export * from "./readResult.js"; +export * from "./textMode.js"; +export * from "./vector.js"; +export * from "./writeResult.js"; diff --git a/node_modules/zxing-wasm/dist/es/bindings/position.d.ts b/node_modules/zxing-wasm/dist/es/bindings/position.d.ts new file mode 100644 index 0000000..2cbe76c --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/position.d.ts @@ -0,0 +1,55 @@ +/** + * @internal + */ +export interface ZXingPoint { + x: number; + y: number; +} +/** + * @internal + */ +export interface ZXingPosition { + topLeft: ZXingPoint; + topRight: ZXingPoint; + bottomLeft: ZXingPoint; + bottomRight: ZXingPoint; +} +/** + * X, Y coordinates to describe a point. + * + * @property x X coordinate. + * @property y Y coordinate. + * + * @see {@link Position | `Position`} + */ +export interface Point extends ZXingPoint { +} +/** + * Position of the decoded barcode. + */ +export interface Position { + /** + * Top-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topLeft: Point; + /** + * Top-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + topRight: Point; + /** + * Bottom-left point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomLeft: Point; + /** + * Bottom-right point of the decoded barcode. + * + * @see {@link Point | `Point`} + */ + bottomRight: Point; +} diff --git a/node_modules/zxing-wasm/dist/es/bindings/readResult.d.ts b/node_modules/zxing-wasm/dist/es/bindings/readResult.d.ts new file mode 100644 index 0000000..fdee88d --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/readResult.d.ts @@ -0,0 +1,123 @@ +import { ReadOutputBarcodeFormat } from "./barcodeFormat.js"; +import { ReadOutputEccLevel } from "./eccLevel.js"; +import { ContentType } from "./contentType.js"; +import { ZXingPosition, Position } from "./position.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReadResult { + /** + * Whether the barcode is valid. + */ + isValid: boolean; + /** + * Error message (if any). + * + * @see {@link ReaderOptions.returnErrors | `ReaderOptions.returnErrors`} + */ + error: string; + format: string; + /** + * Raw / Standard content without any modifications like character set conversions. + */ + bytes: Uint8Array; + /** + * Raw / Standard content following the ECI protocol. + */ + bytesECI: Uint8Array; + /** + * The {@link ReadResult.bytes | `ReadResult.bytes`} content rendered to unicode / utf8 text + * accoring to specified {@link ReaderOptions.textMode | `ReaderOptions.textMode`}. + */ + text: string; + eccLevel: string; + contentType: ZXingEnum; + /** + * Whether or not an ECI tag was found. + */ + hasECI: boolean; + position: ZXingPosition; + /** + * Orientation of the barcode in degree. + */ + orientation: number; + /** + * Whether the symbol is mirrored (currently only supported by QRCode and DataMatrix). + */ + isMirrored: boolean; + /** + * Whether the symbol is inverted / has reveresed reflectance. + * + * @see {@link ReaderOptions.tryInvert | `ReaderOptions.tryInvert`} + */ + isInverted: boolean; + /** + * Symbology identifier `"]cm"` where `"c"` is the symbology code character, `"m"` the modifier. + */ + symbologyIdentifier: string; + /** + * Number of symbols in a structured append sequence. + * + * If this is not part of a structured append sequence, the returned value is `-1`. + * If it is a structured append symbol but the total number of symbols is unknown, the + * returned value is `0` (see PDF417 if optional "Segment Count" not given). + */ + sequenceSize: number; + /** + * The 0-based index of this symbol in a structured append sequence. + */ + sequenceIndex: number; + /** + * ID to check if a set of symbols belongs to the same structured append sequence. + * + * If the symbology does not support this feature, the returned value is empty (see MaxiCode). + * For QR Code, this is the parity integer converted to a string. + * For PDF417 and DataMatrix, this is the `"fileId"`. + */ + sequenceId: string; + /** + * Set if this is the reader initialisation / programming symbol. + */ + readerInit: boolean; + /** + * Number of lines have been detected with this code (applies only to linear symbologies). + */ + lineCount: number; + /** + * QRCode / DataMatrix / Aztec version or size. + * + * This property will be removed in the future. + * + * @deprecated + */ + version: string; +} +export interface ReadResult extends Omit { + /** + * Format of the barcode, should be one of {@link ReadOutputBarcodeFormat | `ReadOutputBarcodeFormat`}. + * + * Possible values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"None"`, + * `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + */ + format: ReadOutputBarcodeFormat; + /** + * Error correction level of the symbol (empty string if not applicable). + * + * This property may be renamed to `ecLevel` in the future. + */ + eccLevel: ReadOutputEccLevel; + /** + * A hint to the type of the content found. + */ + contentType: ContentType; + /** + * Position of the detected barcode. + */ + position: Position; +} +export declare function zxingReadResultToReadResult(zxingReadResult: ZXingReadResult): ReadResult; diff --git a/node_modules/zxing-wasm/dist/es/bindings/readerOptions.d.ts b/node_modules/zxing-wasm/dist/es/bindings/readerOptions.d.ts new file mode 100644 index 0000000..93eda5b --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/readerOptions.d.ts @@ -0,0 +1,204 @@ +import { ZXingModule } from "../core.js"; +import { ReadInputBarcodeFormat } from "./barcodeFormat.js"; +import { Binarizer } from "./binarizer.js"; +import { CharacterSet } from "./characterSet.js"; +import { EanAddOnSymbol } from "./eanAddOnSymbol.js"; +import { TextMode } from "./textMode.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingReaderOptions { + formats: string; + /** + * Spend more time to try to find a barcode. Optimize for accuracy, not speed. + * + * @defaultValue `true` + */ + tryHarder: boolean; + /** + * Try detecting code in 90, 180 and 270 degree rotated images. + * + * @defaultValue `true` + */ + tryRotate: boolean; + /** + * Try detecting inverted (reversed reflectance) codes if the format allows for those. + * + * @defaultValue `true` + */ + tryInvert: boolean; + /** + * Try detecting code in downscaled images (depending on image size). + * + * @defaultValue `true` + * @see {@link downscaleFactor | `downscaleFactor`} {@link downscaleThreshold | `downscaleThreshold`} + */ + tryDownscale: boolean; + binarizer: ZXingEnum; + /** + * Set to `true` if the input contains nothing but a single perfectly aligned barcode (usually generated images). + * + * @defaultValue `false` + */ + isPure: boolean; + /** + * Image size ( min(width, height) ) threshold at which to start downscaled scanning + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `500` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleFactor | `downscaleFactor`} + */ + downscaleThreshold: number; + /** + * Scale factor to use during downscaling, meaningful values are `2`, `3` and `4`. + * **WARNING**: this API is experimental and may change / disappear + * + * @experimental + * @defaultValue `3` + * @see {@link tryDownscale | `tryDownscale`} {@link downscaleThreshold | `downscaleThreshold`} + */ + downscaleFactor: number; + /** + * The number of scan lines in a linear barcode that have to be equal to accept the result. + * + * @defaultValue `2` + */ + minLineCount: number; + /** + * The maximum number of symbols / barcodes to detect / look for in the image. + * The upper limit of this number is 255. + * + * @defaultValue `255` + */ + maxNumberOfSymbols: number; + /** + * If `true`, the Code-39 reader will try to read extended mode. + * + * @defaultValue `false` + */ + tryCode39ExtendedMode: boolean; + /** + * Assume Code-39 codes employ a check digit and validate it. + * + * @defaultValue `false` + */ + validateCode39CheckSum: boolean; + /** + * Assume ITF codes employ a GS1 check digit and validate it. + * + * @defaultValue `false` + */ + validateITFCheckSum: boolean; + /** + * If `true`, return the start and end chars in a Codabar barcode instead of stripping them. + * + * @defaultValue `false` + */ + returnCodabarStartEnd: boolean; + /** + * If `true`, return the barcodes with errors as well (e.g. checksum errors). + * + * @defaultValue `false` + */ + returnErrors: boolean; + eanAddOnSymbol: ZXingEnum; + textMode: ZXingEnum; + characterSet: ZXingEnum; +} +/** + * Reader options for reading barcodes. + */ +export interface ReaderOptions extends Partial> { + /** + * A set of {@link ReadInputBarcodeFormat | `ReadInputBarcodeFormat`}s that should be searched for. + * An empty list `[]` indicates all supported formats. + * + * Supported values in this list are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataBar"`, `"DataBarExpanded"`, `"DataMatrix"`, `"DXFilmEdge"`, + * `"EAN-13"`, `"EAN-8"`, `"ITF"`, `"Linear-Codes"`, `"Matrix-Codes"`, + * `"MaxiCode"`, `"MicroQRCode"`, `"PDF417"`, `"QRCode"`, `"rMQRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `[]` + */ + formats?: ReadInputBarcodeFormat[]; + /** + * Algorithm to use for the grayscale to binary transformation. + * The difference is how to get to a threshold value T + * which results in a bit value R = L <= T. + * + * - `"LocalAverage"` + * + * T = average of neighboring pixels for matrix and GlobalHistogram for linear + * + * - `"GlobalHistogram"` + * + * T = valley between the 2 largest peaks in the histogram (per line in linear case) + * + * - `"FixedThreshold"` + * + * T = 127 + * + * - `"BoolCast"` + * + * T = 0, fastest possible + * + * @defaultValue `"LocalAverage"` + */ + binarizer?: Binarizer; + /** + * Specify whether to ignore, read or require EAN-2 / 5 add-on symbols while scanning EAN / UPC codes. + * + * - `"Ignore"` + * + * Ignore any Add-On symbol during read / scan + * + * - `"Read"` + * + * Read EAN-2 / EAN-5 Add-On symbol if found + * + * - `"Require"` + * + * Require EAN-2 / EAN-5 Add-On symbol to be present + * + * @defaultValue `"Read"` + */ + eanAddOnSymbol?: EanAddOnSymbol; + /** + * Specifies the `TextMode` that controls the result of {@link ReadResult.text | `ReadResult.text`}. + * + * - `"Plain"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to unicode based on ECI info or guessed character set + * + * - `"ECI"` + * + * Standard content following the ECI protocol with every character set ECI segment transcoded to unicode + * + * - `"HRI"` + * + * Human Readable Interpretation (dependent on the ContentType) + * + * - `"Hex"` + * + * {@link ReadResult.bytes | `ReadResult.bytes`} transcoded to ASCII string of HEX values + * + * - `"Escaped"` + * + * Escape non-graphical characters in angle brackets (e.g. ASCII `29` will be transcoded to `""`) + * + * @defaultValue `"Plain"` + */ + textMode?: TextMode; + /** + * Character set to use (when applicable). + * If this is set to `"Unknown"`, auto-detecting will be used. + * + * @defaultValue `"Unknown"` + */ + characterSet?: CharacterSet; +} +export declare const defaultReaderOptions: Required; +export declare function readerOptionsToZXingReaderOptions(zxingModule: ZXingModule, readerOptions: Required): ZXingReaderOptions; diff --git a/node_modules/zxing-wasm/dist/es/bindings/textMode.d.ts b/node_modules/zxing-wasm/dist/es/bindings/textMode.d.ts new file mode 100644 index 0000000..5be28ff --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/textMode.d.ts @@ -0,0 +1,10 @@ +import { ZXingModule } from "../core.js"; +import { ZXingEnum } from "./enum.js"; +export declare const textModes: readonly ["Plain", "ECI", "HRI", "Hex", "Escaped"]; +export type TextMode = (typeof textModes)[number]; +/** + * @internal + */ +export type ZXingTextMode = Record; +export declare function textModeToZXingEnum(zxingModule: ZXingModule, textMode: TextMode): ZXingEnum; +export declare function zxingEnumToTextMode(zxingEnum: ZXingEnum): TextMode; diff --git a/node_modules/zxing-wasm/dist/es/bindings/vector.d.ts b/node_modules/zxing-wasm/dist/es/bindings/vector.d.ts new file mode 100644 index 0000000..034bd5a --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/vector.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface ZXingVector { + size: () => number; + get: (i: number) => T | undefined; +} diff --git a/node_modules/zxing-wasm/dist/es/bindings/writeResult.d.ts b/node_modules/zxing-wasm/dist/es/bindings/writeResult.d.ts new file mode 100644 index 0000000..ac46b1f --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/writeResult.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export interface ZXingWriteResult { + image: Uint8Array; + /** + * Encoding error. + * If there's no error, this will be an empty string `""`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + error: string; + delete: () => void; +} +export interface WriteResult extends Omit { + /** + * The encoded barcode as an image blob. + * If some error happens, this will be `null`. + * + * @see {@link WriteResult.error | `WriteResult.error`} + */ + image: Blob | null; +} +export declare function zxingWriteResultToWriteResult(zxingWriteResult: ZXingWriteResult): WriteResult; diff --git a/node_modules/zxing-wasm/dist/es/bindings/writerOptions.d.ts b/node_modules/zxing-wasm/dist/es/bindings/writerOptions.d.ts new file mode 100644 index 0000000..120e2ae --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/bindings/writerOptions.d.ts @@ -0,0 +1,64 @@ +import { ZXingModule } from "../core.js"; +import { WriteInputBarcodeFormat } from "./barcodeFormat.js"; +import { CharacterSet } from "./characterSet.js"; +import { WriteInputEccLevel } from "./eccLevel.js"; +import { ZXingEnum } from "./enum.js"; +/** + * @internal + */ +export interface ZXingWriterOptions { + /** + * Width of the barcode. + * + * @defaultValue `200` + */ + width: number; + /** + * Height of the barcode. + * + * @defaultValue `200` + */ + height: number; + format: string; + characterSet: ZXingEnum; + eccLevel: number; + /** + * The minimum number of quiet zone pixels. + * + * @defaultValue `10` + */ + margin: number; +} +/** + * Writer options for writing barcodes. + */ +export interface WriterOptions extends Partial> { + /** + * The format of the barcode to write. + * + * Supported values are: + * `"Aztec"`, `"Codabar"`, `"Code128"`, `"Code39"`, `"Code93"`, + * `"DataMatrix"`, `"EAN-13"`, `"EAN-8"`, `"ITF"`, + * `"PDF417"`, `"QRCode"`, `"UPC-A"`, `"UPC-E"` + * + * @defaultValue `"QRCode"` + */ + format?: WriteInputBarcodeFormat; + /** + * Character set to use for encoding the text. + * Used for Aztec, PDF417, and QRCode only. + * + * @defaultValue `"UTF8"` + */ + characterSet?: CharacterSet; + /** + * Error correction level of the symbol. + * Used for Aztec, PDF417, and QRCode only. + * `-1` means auto. + * + * @defaultValue `-1` + */ + eccLevel?: WriteInputEccLevel; +} +export declare const defaultWriterOptions: Required; +export declare function writerOptionsToZXingWriterOptions(zxingModule: ZXingModule, writerOptions: Required): ZXingWriterOptions; diff --git a/node_modules/zxing-wasm/dist/es/core-gSM15mHH.js b/node_modules/zxing-wasm/dist/es/core-gSM15mHH.js new file mode 100644 index 0000000..2e897d9 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/core-gSM15mHH.js @@ -0,0 +1,286 @@ +const C = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function T(e) { + return e.join("|"); +} +function p(e) { + const t = I(e); + let r = 0, o = C.length - 1; + for (; r <= o; ) { + const n = Math.floor((r + o) / 2), a = C[n], s = I(a); + if (s === t) + return a; + s < t ? r = n + 1 : o = n - 1; + } + return "None"; +} +function I(e) { + return e.toLowerCase().replace(/_-\[\]/g, ""); +} +const v = [ + "LocalAverage", + "GlobalHistogram", + "FixedThreshold", + "BoolCast" +]; +function b(e, t) { + return e.Binarizer[t]; +} +const P = [ + "Unknown", + "ASCII", + "ISO8859_1", + "ISO8859_2", + "ISO8859_3", + "ISO8859_4", + "ISO8859_5", + "ISO8859_6", + "ISO8859_7", + "ISO8859_8", + "ISO8859_9", + "ISO8859_10", + "ISO8859_11", + "ISO8859_13", + "ISO8859_14", + "ISO8859_15", + "ISO8859_16", + "Cp437", + "Cp1250", + "Cp1251", + "Cp1252", + "Cp1256", + "Shift_JIS", + "Big5", + "GB2312", + "GB18030", + "EUC_JP", + "EUC_KR", + "UTF16BE", + "UTF8", + "UTF16LE", + "UTF32BE", + "UTF32LE", + "BINARY" +]; +function O(e, t) { + return e.CharacterSet[t]; +} +const w = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function F(e) { + return w[e.value]; +} +const L = ["Ignore", "Read", "Require"]; +function _(e, t) { + return e.EanAddOnSymbol[t]; +} +const M = ["Plain", "ECI", "HRI", "Hex", "Escaped"]; +function R(e, t) { + return e.TextMode[t]; +} +const d = { + formats: [], + tryHarder: !0, + tryRotate: !0, + tryInvert: !0, + tryDownscale: !0, + binarizer: "LocalAverage", + isPure: !1, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: !1, + validateCode39CheckSum: !1, + validateITFCheckSum: !1, + returnCodabarStartEnd: !1, + returnErrors: !1, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function y(e, t) { + return { + ...t, + formats: T(t.formats), + binarizer: b(e, t.binarizer), + eanAddOnSymbol: _( + e, + t.eanAddOnSymbol + ), + textMode: R(e, t.textMode), + characterSet: O( + e, + t.characterSet + ) + }; +} +const x = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8], W = ["L", "M", "Q", "H"], S = { + width: 200, + height: 200, + format: "QRCode", + characterSet: "UTF8", + eccLevel: -1, + margin: 10 +}; +function B(e, t) { + return { + ...t, + characterSet: O( + e, + t.characterSet + ) + }; +} +function E(e) { + return { + ...e, + format: p(e.format), + eccLevel: e.eccLevel, + contentType: F(e.contentType) + }; +} +function A(e) { + const { image: t, error: r } = e; + return t ? { + image: new Blob([new Uint8Array(t)], { + type: "image/png" + }), + error: "" + } : { + image: null, + error: r + }; +} +const U = { + locateFile: (e, t) => { + const r = e.match(/_(.+?)\.wasm$/); + return r ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${r[1]}/${e}` : t + e; + } +}; +let m = /* @__PURE__ */ new WeakMap(); +function h(e, t) { + var a; + const r = m.get(e); + if (r != null && r.modulePromise && (t === void 0 || Object.is(t, r.moduleOverrides))) + return r.modulePromise; + const o = (a = t != null ? t : r == null ? void 0 : r.moduleOverrides) != null ? a : U, n = e({ + ...o + }); + return m.set(e, { + moduleOverrides: o, + modulePromise: n + }), n; +} +function X() { + m = /* @__PURE__ */ new WeakMap(); +} +function Z(e, t) { + m.set(e, { + moduleOverrides: t + }); +} +async function z(e, t, r = d) { + const o = { + ...d, + ...r + }, n = await h(e), { size: a } = t, s = new Uint8Array(await t.arrayBuffer()), u = n._malloc(a); + n.HEAPU8.set(s, u); + const l = n.readBarcodesFromImage( + u, + a, + y(n, o) + ); + n._free(u); + const i = []; + for (let c = 0; c < l.size(); ++c) + i.push( + E(l.get(c)) + ); + return i; +} +async function D(e, t, r = d) { + const o = { + ...d, + ...r + }, n = await h(e), { + data: a, + width: s, + height: u, + data: { byteLength: l } + } = t, i = n._malloc(l); + n.HEAPU8.set(a, i); + const c = n.readBarcodesFromPixmap( + i, + s, + u, + y(n, o) + ); + n._free(i); + const g = []; + for (let f = 0; f < c.size(); ++f) + g.push( + E(c.get(f)) + ); + return g; +} +async function H(e, t, r = S) { + const o = { + ...S, + ...r + }, n = await h(e), a = n.writeBarcodeToImage( + t, + B(n, o) + ); + return A(a); +} +const k = { + ...d, + formats: [...d.formats] +}, N = { ...S }; +export { + D as a, + C as b, + v as c, + k as d, + P as e, + w as f, + h as g, + L as h, + W as i, + N as j, + x as k, + X as p, + z as r, + Z as s, + M as t, + H as w +}; diff --git a/node_modules/zxing-wasm/dist/es/core.d.ts b/node_modules/zxing-wasm/dist/es/core.d.ts new file mode 100644 index 0000000..93cb462 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/core.d.ts @@ -0,0 +1,41 @@ +/// +import { type ZXingReaderOptions, type ReaderOptions, type ZXingWriterOptions, type WriterOptions, type ZXingReadResult, type ReadResult, type ZXingWriteResult, type ZXingBinarizer, type ZXingCharacterSet, type ZXingContentType, type ZXingEanAddOnSymbol, type ZXingTextMode, type ZXingVector } from "./bindings/index.js"; +export type ZXingModuleType = "reader" | "writer" | "full"; +interface ZXingBaseModule extends EmscriptenModule { + CharacterSet: ZXingCharacterSet; +} +/** + * @internal + */ +export interface ZXingReaderModule extends ZXingBaseModule { + Binarizer: ZXingBinarizer; + ContentType: ZXingContentType; + EanAddOnSymbol: ZXingEanAddOnSymbol; + TextMode: ZXingTextMode; + readBarcodesFromImage(bufferPtr: number, bufferLength: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; + readBarcodesFromPixmap(bufferPtr: number, imgWidth: number, imgHeight: number, zxingReaderOptions: ZXingReaderOptions): ZXingVector; +} +/** + * @internal + */ +export interface ZXingWriterModule extends ZXingBaseModule { + writeBarcodeToImage(text: string, zxingWriterOptions: ZXingWriterOptions): ZXingWriteResult; +} +/** + * @internal + */ +export interface ZXingFullModule extends ZXingReaderModule, ZXingWriterModule { +} +export type ZXingModule = T extends "reader" ? ZXingReaderModule : T extends "writer" ? ZXingWriterModule : T extends "full" ? ZXingFullModule : ZXingReaderModule | ZXingWriterModule | ZXingFullModule; +export type ZXingReaderModuleFactory = EmscriptenModuleFactory; +export type ZXingWriterModuleFactory = EmscriptenModuleFactory; +export type ZXingFullModuleFactory = EmscriptenModuleFactory; +export type ZXingModuleFactory = T extends "reader" ? ZXingReaderModuleFactory : T extends "writer" ? ZXingWriterModuleFactory : T extends "full" ? ZXingFullModuleFactory : ZXingReaderModuleFactory | ZXingWriterModuleFactory | ZXingFullModuleFactory; +export type ZXingModuleOverrides = Partial; +export declare function getZXingModuleWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides?: ZXingModuleOverrides): Promise>; +export declare function purgeZXingModule(): void; +export declare function setZXingModuleOverridesWithFactory(zxingModuleFactory: ZXingModuleFactory, zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageDataWithFactory(zxingModuleFactory: ZXingModuleFactory, imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFileWithFactory(zxingModuleFactory: ZXingModuleFactory, text: string, writerOptions?: WriterOptions): Promise; +export {}; diff --git a/node_modules/zxing-wasm/dist/es/full/index.d.ts b/node_modules/zxing-wasm/dist/es/full/index.d.ts new file mode 100644 index 0000000..619c27e --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/full/index.d.ts @@ -0,0 +1,10 @@ +import { type ZXingFullModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions, WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingFullModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/es/full/index.js b/node_modules/zxing-wasm/dist/es/full/index.js new file mode 100644 index 0000000..5afbd5d --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/full/index.js @@ -0,0 +1,1746 @@ +import { g as oi, s as si, r as ui, a as li, w as ci } from "../core-gSM15mHH.js"; +import { b as bi, c as wi, e as Ti, f as Pi, d as Ci, j as Ai, d as Fi, j as Ei, h as Si, p as Ri, i as Di, t as Wi, k as ki } from "../core-gSM15mHH.js"; +var le = (() => { + var k = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(B = {}) { + var l = B, Xe, ce; + l.ready = new Promise((e, r) => { + Xe = e, ce = r; + }); + var Ge = Object.assign({}, l), Ze = "./this.program", qe = typeof window == "object", fe = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var H = ""; + function Hr(e) { + return l.locateFile ? l.locateFile(e, H) : H + e; + } + var Fe; + (qe || fe) && (fe ? H = self.location.href : typeof document < "u" && document.currentScript && (H = document.currentScript.src), k && (H = k), H.indexOf("blob:") !== 0 ? H = H.substr(0, H.replace(/[?#].*/, "").lastIndexOf("/") + 1) : H = "", fe && (Fe = (e) => { + var r = new XMLHttpRequest(); + return r.open("GET", e, !1), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response); + })), l.print || console.log.bind(console); + var K = l.printErr || console.error.bind(console); + Object.assign(l, Ge), Ge = null, l.arguments && l.arguments, l.thisProgram && (Ze = l.thisProgram), l.quit && l.quit; + var Q; + l.wasmBinary && (Q = l.wasmBinary), typeof WebAssembly != "object" && de("no native wasm support detected"); + var ve, Je = !1, j, W, X, ee, D, m, Ke, Qe; + function er() { + var e = ve.buffer; + l.HEAP8 = j = new Int8Array(e), l.HEAP16 = X = new Int16Array(e), l.HEAPU8 = W = new Uint8Array(e), l.HEAPU16 = ee = new Uint16Array(e), l.HEAP32 = D = new Int32Array(e), l.HEAPU32 = m = new Uint32Array(e), l.HEAPF32 = Ke = new Float32Array(e), l.HEAPF64 = Qe = new Float64Array(e); + } + var rr = [], tr = [], nr = []; + function Ir() { + if (l.preRun) + for (typeof l.preRun == "function" && (l.preRun = [l.preRun]); l.preRun.length; ) + Vr(l.preRun.shift()); + Ee(rr); + } + function Ur() { + Ee(tr); + } + function xr() { + if (l.postRun) + for (typeof l.postRun == "function" && (l.postRun = [l.postRun]); l.postRun.length; ) + Br(l.postRun.shift()); + Ee(nr); + } + function Vr(e) { + rr.unshift(e); + } + function Yr(e) { + tr.unshift(e); + } + function Br(e) { + nr.unshift(e); + } + var L = 0, re = null; + function Lr(e) { + var r; + L++, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, L); + } + function Nr(e) { + var r; + if (L--, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, L), L == 0 && re) { + var t = re; + re = null, t(); + } + } + function de(e) { + var r; + (r = l.onAbort) === null || r === void 0 || r.call(l, e), e = "Aborted(" + e + ")", K(e), Je = !0, e += ". Build with -sASSERTIONS for more info."; + var t = new WebAssembly.RuntimeError(e); + throw ce(t), t; + } + var zr = "data:application/octet-stream;base64,", ir = (e) => e.startsWith(zr), G; + G = "zxing_full.wasm", ir(G) || (G = Hr(G)); + function ar(e) { + if (e == G && Q) + return new Uint8Array(Q); + if (Fe) + return Fe(e); + throw "both async and sync fetching of the wasm failed"; + } + function Xr(e) { + return !Q && (qe || fe) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((r) => { + if (!r.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return r.arrayBuffer(); + }).catch(() => ar(e)) : Promise.resolve().then(() => ar(e)); + } + function or(e, r, t) { + return Xr(e).then((n) => WebAssembly.instantiate(n, r)).then((n) => n).then(t, (n) => { + K(`failed to asynchronously prepare wasm: ${n}`), de(n); + }); + } + function Gr(e, r, t, n) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !ir(r) && typeof fetch == "function" ? fetch(r, { + credentials: "same-origin" + }).then((i) => { + var a = WebAssembly.instantiateStreaming(i, t); + return a.then(n, function(o) { + return K(`wasm streaming compile failed: ${o}`), K("falling back to ArrayBuffer instantiation"), or(r, t, n); + }); + }) : or(r, t, n); + } + function Zr() { + var e = { + a: Hn + }; + function r(n, i) { + return F = n.exports, ve = F.ja, er(), _r = F.na, Yr(F.ka), Nr(), F; + } + Lr(); + function t(n) { + r(n.instance); + } + if (l.instantiateWasm) + try { + return l.instantiateWasm(e, r); + } catch (n) { + K(`Module.instantiateWasm callback failed with error: ${n}`), ce(n); + } + return Gr(Q, G, e, t).catch(ce), {}; + } + var Ee = (e) => { + for (; e.length > 0; ) + e.shift()(l); + }; + l.noExitRuntime; + var he = [], pe = 0, qr = (e) => { + var r = new Se(e); + return r.get_caught() || (r.set_caught(!0), pe--), r.set_rethrown(!1), he.push(r), Rr(r.excPtr), r.get_exception_ptr(); + }, x = 0, Jr = () => { + $(0, 0); + var e = he.pop(); + Sr(e.excPtr), x = 0; + }; + function Se(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(r) { + m[this.ptr + 4 >> 2] = r; + }, this.get_type = function() { + return m[this.ptr + 4 >> 2]; + }, this.set_destructor = function(r) { + m[this.ptr + 8 >> 2] = r; + }, this.get_destructor = function() { + return m[this.ptr + 8 >> 2]; + }, this.set_caught = function(r) { + r = r ? 1 : 0, j[this.ptr + 12 >> 0] = r; + }, this.get_caught = function() { + return j[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(r) { + r = r ? 1 : 0, j[this.ptr + 13 >> 0] = r; + }, this.get_rethrown = function() { + return j[this.ptr + 13 >> 0] != 0; + }, this.init = function(r, t) { + this.set_adjusted_ptr(0), this.set_type(r), this.set_destructor(t); + }, this.set_adjusted_ptr = function(r) { + m[this.ptr + 16 >> 2] = r; + }, this.get_adjusted_ptr = function() { + return m[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var r = Wr(this.get_type()); + if (r) + return m[this.excPtr >> 2]; + var t = this.get_adjusted_ptr(); + return t !== 0 ? t : this.excPtr; + }; + } + var Kr = (e) => { + throw x || (x = e), x; + }, Re = (e) => { + var r = x; + if (!r) + return ue(0), 0; + var t = new Se(r); + t.set_adjusted_ptr(r); + var n = t.get_type(); + if (!n) + return ue(0), r; + for (var i in e) { + var a = e[i]; + if (a === 0 || a === n) + break; + var o = t.ptr + 16; + if (Dr(a, n, o)) + return ue(a), r; + } + return ue(n), r; + }, Qr = () => Re([]), et = (e) => Re([e]), rt = (e, r) => Re([e, r]), tt = () => { + var e = he.pop(); + e || de("no exception to throw"); + var r = e.excPtr; + throw e.get_rethrown() || (he.push(e), e.set_rethrown(!0), e.set_caught(!1), pe++), x = r, x; + }, nt = (e, r, t) => { + var n = new Se(e); + throw n.init(r, t), x = e, pe++, x; + }, it = () => pe, _e = {}, De = (e) => { + for (; e.length; ) { + var r = e.pop(), t = e.pop(); + t(r); + } + }; + function We(e) { + return this.fromWireType(D[e >> 2]); + } + var Z = {}, N = {}, ge = {}, sr, ye = (e) => { + throw new sr(e); + }, z = (e, r, t) => { + e.forEach(function(s) { + ge[s] = r; + }); + function n(s) { + var u = t(s); + u.length !== e.length && ye("Mismatched type converter count"); + for (var f = 0; f < e.length; ++f) + I(e[f], u[f]); + } + var i = new Array(r.length), a = [], o = 0; + r.forEach((s, u) => { + N.hasOwnProperty(s) ? i[u] = N[s] : (a.push(s), Z.hasOwnProperty(s) || (Z[s] = []), Z[s].push(() => { + i[u] = N[s], ++o, o === a.length && n(i); + })); + }), a.length === 0 && n(i); + }, at = (e) => { + var r = _e[e]; + delete _e[e]; + var t = r.rawConstructor, n = r.rawDestructor, i = r.fields, a = i.map((o) => o.getterReturnType).concat(i.map((o) => o.setterArgumentType)); + z([e], a, (o) => { + var s = {}; + return i.forEach((u, f) => { + var v = u.fieldName, h = o[f], p = u.getter, _ = u.getterContext, P = o[f + i.length], C = u.setter, y = u.setterContext; + s[v] = { + read: (R) => h.fromWireType(p(_, R)), + write: (R, c) => { + var d = []; + C(y, R, P.toWireType(d, c)), De(d); + } + }; + }), [{ + name: r.name, + fromWireType: (u) => { + var f = {}; + for (var v in s) + f[v] = s[v].read(u); + return n(u), f; + }, + toWireType: (u, f) => { + for (var v in s) + if (!(v in f)) + throw new TypeError(`Missing field: "${v}"`); + var h = t(); + for (v in s) + s[v].write(h, f[v]); + return u !== null && u.push(n, h), h; + }, + argPackAdvance: U, + readValueFromPointer: We, + destructorFunction: n + }]; + }); + }, ot = (e, r, t, n, i) => { + }, st = () => { + for (var e = new Array(256), r = 0; r < 256; ++r) + e[r] = String.fromCharCode(r); + ur = e; + }, ur, S = (e) => { + for (var r = "", t = e; W[t]; ) + r += ur[W[t++]]; + return r; + }, q, g = (e) => { + throw new q(e); + }; + function ut(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = r.name; + if (e || g(`type "${n}" must have a positive integer typeid pointer`), N.hasOwnProperty(e)) { + if (t.ignoreDuplicateRegistrations) + return; + g(`Cannot register type '${n}' twice`); + } + if (N[e] = r, delete ge[e], Z.hasOwnProperty(e)) { + var i = Z[e]; + delete Z[e], i.forEach((a) => a()); + } + } + function I(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in r)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return ut(e, r, t); + } + var U = 8, lt = (e, r, t, n) => { + r = S(r), I(e, { + name: r, + fromWireType: function(i) { + return !!i; + }, + toWireType: function(i, a) { + return a ? t : n; + }, + argPackAdvance: U, + readValueFromPointer: function(i) { + return this.fromWireType(W[i]); + }, + destructorFunction: null + }); + }, ct = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), ke = (e) => { + function r(t) { + return t.$$.ptrType.registeredClass.name; + } + g(r(e) + " instance already deleted"); + }, Oe = !1, lr = (e) => { + }, ft = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, cr = (e) => { + e.count.value -= 1; + var r = e.count.value === 0; + r && ft(e); + }, fr = (e, r, t) => { + if (r === t) + return e; + if (t.baseClass === void 0) + return null; + var n = fr(e, r, t.baseClass); + return n === null ? null : t.downcast(n); + }, vr = {}, vt = () => Object.keys(ie).length, dt = () => { + var e = []; + for (var r in ie) + ie.hasOwnProperty(r) && e.push(ie[r]); + return e; + }, te = [], je = () => { + for (; te.length; ) { + var e = te.pop(); + e.$$.deleteScheduled = !1, e.delete(); + } + }, ne, ht = (e) => { + ne = e, te.length && ne && ne(je); + }, pt = () => { + l.getInheritedInstanceCount = vt, l.getLiveInheritedInstances = dt, l.flushPendingDeletes = je, l.setDelayFunction = ht; + }, ie = {}, _t = (e, r) => { + for (r === void 0 && g("ptr should not be undefined"); e.baseClass; ) + r = e.upcast(r), e = e.baseClass; + return r; + }, gt = (e, r) => (r = _t(e, r), ie[r]), me = (e, r) => { + (!r.ptrType || !r.ptr) && ye("makeClassHandle requires ptr and ptrType"); + var t = !!r.smartPtrType, n = !!r.smartPtr; + return t !== n && ye("Both smartPtrType and smartPtr must be specified"), r.count = { + value: 1 + }, ae(Object.create(e, { + $$: { + value: r, + writable: !0 + } + })); + }; + function yt(e) { + var r = this.getPointee(e); + if (!r) + return this.destructor(e), null; + var t = gt(this.registeredClass, r); + if (t !== void 0) { + if (t.$$.count.value === 0) + return t.$$.ptr = r, t.$$.smartPtr = e, t.clone(); + var n = t.clone(); + return this.destructor(e), n; + } + function i() { + return this.isSmartPointer ? me(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: r, + smartPtrType: this, + smartPtr: e + }) : me(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var a = this.registeredClass.getActualType(r), o = vr[a]; + if (!o) + return i.call(this); + var s; + this.isConst ? s = o.constPointerType : s = o.pointerType; + var u = fr(r, this.registeredClass, s.registeredClass); + return u === null ? i.call(this) : this.isSmartPointer ? me(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u, + smartPtrType: this, + smartPtr: e + }) : me(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u + }); + } + var ae = (e) => typeof FinalizationRegistry > "u" ? (ae = (r) => r, e) : (Oe = new FinalizationRegistry((r) => { + cr(r.$$); + }), ae = (r) => { + var t = r.$$, n = !!t.smartPtr; + if (n) { + var i = { + $$: t + }; + Oe.register(r, i, r); + } + return r; + }, lr = (r) => Oe.unregister(r), ae(e)), mt = () => { + Object.assign($e.prototype, { + isAliasOf(e) { + if (!(this instanceof $e) || !(e instanceof $e)) + return !1; + var r = this.$$.ptrType.registeredClass, t = this.$$.ptr; + e.$$ = e.$$; + for (var n = e.$$.ptrType.registeredClass, i = e.$$.ptr; r.baseClass; ) + t = r.upcast(t), r = r.baseClass; + for (; n.baseClass; ) + i = n.upcast(i), n = n.baseClass; + return r === n && t === i; + }, + clone() { + if (this.$$.ptr || ke(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ae(Object.create(Object.getPrototypeOf(this), { + $$: { + value: ct(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e; + }, + delete() { + this.$$.ptr || ke(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), lr(this), cr(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || ke(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), te.push(this), te.length === 1 && ne && ne(je), this.$$.deleteScheduled = !0, this; + } + }); + }; + function $e() { + } + var oe = (e, r) => Object.defineProperty(r, "name", { + value: e + }), dr = (e, r, t) => { + if (e[r].overloadTable === void 0) { + var n = e[r]; + e[r] = function() { + return e[r].overloadTable.hasOwnProperty(arguments.length) || g(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`), e[r].overloadTable[arguments.length].apply(this, arguments); + }, e[r].overloadTable = [], e[r].overloadTable[n.argCount] = n; + } + }, Me = (e, r, t) => { + l.hasOwnProperty(e) ? ((t === void 0 || l[e].overloadTable !== void 0 && l[e].overloadTable[t] !== void 0) && g(`Cannot register public name '${e}' twice`), dr(l, e, e), l.hasOwnProperty(t) && g(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`), l[e].overloadTable[t] = r) : (l[e] = r, t !== void 0 && (l[e].numArguments = t)); + }, $t = 48, bt = 57, wt = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var r = e.charCodeAt(0); + return r >= $t && r <= bt ? `_${e}` : e; + }; + function Tt(e, r, t, n, i, a, o, s) { + this.name = e, this.constructor = r, this.instancePrototype = t, this.rawDestructor = n, this.baseClass = i, this.getActualType = a, this.upcast = o, this.downcast = s, this.pureVirtualFunctions = []; + } + var He = (e, r, t) => { + for (; r !== t; ) + r.upcast || g(`Expected null or instance of ${t.name}, got an instance of ${r.name}`), e = r.upcast(e), r = r.baseClass; + return e; + }; + function Pt(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function Ct(e, r) { + var t; + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), this.isSmartPointer ? (t = this.rawConstructor(), e !== null && e.push(this.rawDestructor, t), t) : 0; + (!r || !r.$$) && g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + var n = r.$$.ptrType.registeredClass; + if (t = He(r.$$.ptr, n, this.registeredClass), this.isSmartPointer) + switch (r.$$.smartPtr === void 0 && g("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + r.$$.smartPtrType === this ? t = r.$$.smartPtr : g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + t = r.$$.smartPtr; + break; + case 2: + if (r.$$.smartPtrType === this) + t = r.$$.smartPtr; + else { + var i = r.clone(); + t = this.rawShare(t, V.toHandle(() => i.delete())), e !== null && e.push(this.rawDestructor, t); + } + break; + default: + g("Unsupporting sharing policy"); + } + return t; + } + function At(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function hr(e) { + return this.fromWireType(m[e >> 2]); + } + var Ft = () => { + Object.assign(be.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var r; + (r = this.rawDestructor) === null || r === void 0 || r.call(this, e); + }, + argPackAdvance: U, + readValueFromPointer: hr, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: yt + }); + }; + function be(e, r, t, n, i, a, o, s, u, f, v) { + this.name = e, this.registeredClass = r, this.isReference = t, this.isConst = n, this.isSmartPointer = i, this.pointeeType = a, this.sharingPolicy = o, this.rawGetPointee = s, this.rawConstructor = u, this.rawShare = f, this.rawDestructor = v, !i && r.baseClass === void 0 ? n ? (this.toWireType = Pt, this.destructorFunction = null) : (this.toWireType = At, this.destructorFunction = null) : this.toWireType = Ct; + } + var pr = (e, r, t) => { + l.hasOwnProperty(e) || ye("Replacing nonexistant public symbol"), l[e].overloadTable !== void 0 && t !== void 0 ? l[e].overloadTable[t] = r : (l[e] = r, l[e].argCount = t); + }, Et = (e, r, t) => { + var n = l["dynCall_" + e]; + return t && t.length ? n.apply(null, [r].concat(t)) : n.call(null, r); + }, we = [], _r, b = (e) => { + var r = we[e]; + return r || (e >= we.length && (we.length = e + 1), we[e] = r = _r.get(e)), r; + }, St = (e, r, t) => { + if (e.includes("j")) + return Et(e, r, t); + var n = b(r).apply(null, t); + return n; + }, Rt = (e, r) => { + var t = []; + return function() { + return t.length = 0, Object.assign(t, arguments), St(e, r, t); + }; + }, M = (e, r) => { + e = S(e); + function t() { + return e.includes("j") ? Rt(e, r) : b(r); + } + var n = t(); + return typeof n != "function" && g(`unknown function pointer with signature ${e}: ${r}`), n; + }, Dt = (e, r) => { + var t = oe(r, function(n) { + this.name = r, this.message = n; + var i = new Error(n).stack; + i !== void 0 && (this.stack = this.toString() + ` +` + i.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return t.prototype = Object.create(e.prototype), t.prototype.constructor = t, t.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, t; + }, gr, yr = (e) => { + var r = Er(e), t = S(r); + return Y(r), t; + }, Te = (e, r) => { + var t = [], n = {}; + function i(a) { + if (!n[a] && !N[a]) { + if (ge[a]) { + ge[a].forEach(i); + return; + } + t.push(a), n[a] = !0; + } + } + throw r.forEach(i), new gr(`${e}: ` + t.map(yr).join([", "])); + }, Wt = (e, r, t, n, i, a, o, s, u, f, v, h, p) => { + v = S(v), a = M(i, a), s && (s = M(o, s)), f && (f = M(u, f)), p = M(h, p); + var _ = wt(v); + Me(_, function() { + Te(`Cannot construct ${v} due to unbound types`, [n]); + }), z([e, r, t], n ? [n] : [], function(P) { + P = P[0]; + var C, y; + n ? (C = P.registeredClass, y = C.instancePrototype) : y = $e.prototype; + var R = oe(v, function() { + if (Object.getPrototypeOf(this) !== c) + throw new q("Use 'new' to construct " + v); + if (d.constructor_body === void 0) + throw new q(v + " has no accessible constructor"); + var Mr = d.constructor_body[arguments.length]; + if (Mr === void 0) + throw new q(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`); + return Mr.apply(this, arguments); + }), c = Object.create(y, { + constructor: { + value: R + } + }); + R.prototype = c; + var d = new Tt(v, R, c, p, C, a, s, f); + if (d.baseClass) { + var A, E; + (E = (A = d.baseClass).__derivedClasses) !== null && E !== void 0 || (A.__derivedClasses = []), d.baseClass.__derivedClasses.push(d); + } + var J = new be(v, d, !0, !1, !1), Ae = new be(v + "*", d, !1, !1, !1), jr = new be(v + " const*", d, !1, !0, !1); + return vr[e] = { + pointerType: Ae, + constPointerType: jr + }, pr(_, R), [J, Ae, jr]; + }); + }, Ie = (e, r) => { + for (var t = [], n = 0; n < e; n++) + t.push(m[r + n * 4 >> 2]); + return t; + }; + function kt(e) { + for (var r = 1; r < e.length; ++r) + if (e[r] !== null && e[r].destructorFunction === void 0) + return !0; + return !1; + } + function Ue(e, r, t, n, i, a) { + var o = r.length; + o < 2 && g("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var s = r[1] !== null && t !== null, u = kt(r), f = r[0].name !== "void", v = o - 2, h = new Array(v), p = [], _ = [], P = function() { + arguments.length !== v && g(`function ${e} called with ${arguments.length} arguments, expected ${v}`), _.length = 0; + var C; + p.length = s ? 2 : 1, p[0] = i, s && (C = r[1].toWireType(_, this), p[1] = C); + for (var y = 0; y < v; ++y) + h[y] = r[y + 2].toWireType(_, arguments[y]), p.push(h[y]); + var R = n.apply(null, p); + function c(d) { + if (u) + De(_); + else + for (var A = s ? 1 : 2; A < r.length; A++) { + var E = A === 1 ? C : h[A - 2]; + r[A].destructorFunction !== null && r[A].destructorFunction(E); + } + if (f) + return r[0].fromWireType(d); + } + return c(R); + }; + return oe(e, P); + } + var Ot = (e, r, t, n, i, a) => { + var o = Ie(r, t); + i = M(n, i), z([], [e], function(s) { + s = s[0]; + var u = `constructor ${s.name}`; + if (s.registeredClass.constructor_body === void 0 && (s.registeredClass.constructor_body = []), s.registeredClass.constructor_body[r - 1] !== void 0) + throw new q(`Cannot register multiple constructors with identical number of parameters (${r - 1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return s.registeredClass.constructor_body[r - 1] = () => { + Te(`Cannot construct ${s.name} due to unbound types`, o); + }, z([], o, (f) => (f.splice(1, 0, null), s.registeredClass.constructor_body[r - 1] = Ue(u, f, null, i, a), [])), []; + }); + }, mr = (e) => { + e = e.trim(); + const r = e.indexOf("("); + return r !== -1 ? e.substr(0, r) : e; + }, jt = (e, r, t, n, i, a, o, s, u) => { + var f = Ie(t, n); + r = S(r), r = mr(r), a = M(i, a), z([], [e], function(v) { + v = v[0]; + var h = `${v.name}.${r}`; + r.startsWith("@@") && (r = Symbol[r.substring(2)]), s && v.registeredClass.pureVirtualFunctions.push(r); + function p() { + Te(`Cannot call ${h} due to unbound types`, f); + } + var _ = v.registeredClass.instancePrototype, P = _[r]; + return P === void 0 || P.overloadTable === void 0 && P.className !== v.name && P.argCount === t - 2 ? (p.argCount = t - 2, p.className = v.name, _[r] = p) : (dr(_, r, h), _[r].overloadTable[t - 2] = p), z([], f, function(C) { + var y = Ue(h, C, v, a, o); + return _[r].overloadTable === void 0 ? (y.argCount = t - 2, _[r] = y) : _[r].overloadTable[t - 2] = y, []; + }), []; + }); + }; + function Mt() { + Object.assign($r.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var r = this.freelist.pop() || this.allocated.length; + return this.allocated[r] = e, r; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function $r() { + this.allocated = [void 0], this.freelist = []; + } + var O = new $r(), xe = (e) => { + e >= O.reserved && --O.get(e).refcount === 0 && O.free(e); + }, Ht = () => { + for (var e = 0, r = O.reserved; r < O.allocated.length; ++r) + O.allocated[r] !== void 0 && ++e; + return e; + }, It = () => { + O.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), O.reserved = O.allocated.length, l.count_emval_handles = Ht; + }, V = { + toValue: (e) => (e || g("Cannot use deleted val. handle = " + e), O.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return O.allocate({ + refcount: 1, + value: e + }); + } + } + }, Ut = (e, r) => { + r = S(r), I(e, { + name: r, + fromWireType: (t) => { + var n = V.toValue(t); + return xe(t), n; + }, + toWireType: (t, n) => V.toHandle(n), + argPackAdvance: U, + readValueFromPointer: We, + destructorFunction: null + }); + }, xt = (e, r, t) => { + switch (r) { + case 1: + return t ? function(n) { + return this.fromWireType(j[n >> 0]); + } : function(n) { + return this.fromWireType(W[n >> 0]); + }; + case 2: + return t ? function(n) { + return this.fromWireType(X[n >> 1]); + } : function(n) { + return this.fromWireType(ee[n >> 1]); + }; + case 4: + return t ? function(n) { + return this.fromWireType(D[n >> 2]); + } : function(n) { + return this.fromWireType(m[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Vt = (e, r, t, n) => { + r = S(r); + function i() { + } + i.values = {}, I(e, { + name: r, + constructor: i, + fromWireType: function(a) { + return this.constructor.values[a]; + }, + toWireType: (a, o) => o.value, + argPackAdvance: U, + readValueFromPointer: xt(r, t, n), + destructorFunction: null + }), Me(r, i); + }, Ve = (e, r) => { + var t = N[e]; + return t === void 0 && g(r + " has unknown type " + yr(e)), t; + }, Yt = (e, r, t) => { + var n = Ve(e, "enum"); + r = S(r); + var i = n.constructor, a = Object.create(n.constructor.prototype, { + value: { + value: t + }, + constructor: { + value: oe(`${n.name}_${r}`, function() { + }) + } + }); + i.values[t] = a, i[r] = a; + }, Ye = (e) => { + if (e === null) + return "null"; + var r = typeof e; + return r === "object" || r === "array" || r === "function" ? e.toString() : "" + e; + }, Bt = (e, r) => { + switch (r) { + case 4: + return function(t) { + return this.fromWireType(Ke[t >> 2]); + }; + case 8: + return function(t) { + return this.fromWireType(Qe[t >> 3]); + }; + default: + throw new TypeError(`invalid float width (${r}): ${e}`); + } + }, Lt = (e, r, t) => { + r = S(r), I(e, { + name: r, + fromWireType: (n) => n, + toWireType: (n, i) => i, + argPackAdvance: U, + readValueFromPointer: Bt(r, t), + destructorFunction: null + }); + }, Nt = (e, r, t, n, i, a, o) => { + var s = Ie(r, t); + e = S(e), e = mr(e), i = M(n, i), Me(e, function() { + Te(`Cannot call ${e} due to unbound types`, s); + }, r - 1), z([], s, function(u) { + var f = [u[0], null].concat(u.slice(1)); + return pr(e, Ue(e, f, null, i, a), r - 1), []; + }); + }, zt = (e, r, t) => { + switch (r) { + case 1: + return t ? (n) => j[n >> 0] : (n) => W[n >> 0]; + case 2: + return t ? (n) => X[n >> 1] : (n) => ee[n >> 1]; + case 4: + return t ? (n) => D[n >> 2] : (n) => m[n >> 2]; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Xt = (e, r, t, n, i) => { + r = S(r); + var a = (v) => v; + if (n === 0) { + var o = 32 - 8 * t; + a = (v) => v << o >>> o; + } + var s = r.includes("unsigned"), u = (v, h) => { + }, f; + s ? f = function(v, h) { + return u(h, this.name), h >>> 0; + } : f = function(v, h) { + return u(h, this.name), h; + }, I(e, { + name: r, + fromWireType: a, + toWireType: f, + argPackAdvance: U, + readValueFromPointer: zt(r, t, n !== 0), + destructorFunction: null + }); + }, Gt = (e, r, t) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], i = n[r]; + function a(o) { + var s = m[o >> 2], u = m[o + 4 >> 2]; + return new i(j.buffer, u, s); + } + t = S(t), I(e, { + name: t, + fromWireType: a, + argPackAdvance: U, + readValueFromPointer: a + }, { + ignoreDuplicateRegistrations: !0 + }); + }, br = (e, r, t, n) => { + if (!(n > 0)) + return 0; + for (var i = t, a = t + n - 1, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (s <= 127) { + if (t >= a) + break; + r[t++] = s; + } else if (s <= 2047) { + if (t + 1 >= a) + break; + r[t++] = 192 | s >> 6, r[t++] = 128 | s & 63; + } else if (s <= 65535) { + if (t + 2 >= a) + break; + r[t++] = 224 | s >> 12, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } else { + if (t + 3 >= a) + break; + r[t++] = 240 | s >> 18, r[t++] = 128 | s >> 12 & 63, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } + } + return r[t] = 0, t - i; + }, Zt = (e, r, t) => br(e, W, r, t), wr = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n <= 127 ? r++ : n <= 2047 ? r += 2 : n >= 55296 && n <= 57343 ? (r += 4, ++t) : r += 3; + } + return r; + }, Tr = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, qt = (e, r, t) => { + for (var n = r + t, i = r; e[i] && !(i >= n); ) + ++i; + if (i - r > 16 && e.buffer && Tr) + return Tr.decode(e.subarray(r, i)); + for (var a = ""; r < i; ) { + var o = e[r++]; + if (!(o & 128)) { + a += String.fromCharCode(o); + continue; + } + var s = e[r++] & 63; + if ((o & 224) == 192) { + a += String.fromCharCode((o & 31) << 6 | s); + continue; + } + var u = e[r++] & 63; + if ((o & 240) == 224 ? o = (o & 15) << 12 | s << 6 | u : o = (o & 7) << 18 | s << 12 | u << 6 | e[r++] & 63, o < 65536) + a += String.fromCharCode(o); + else { + var f = o - 65536; + a += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023); + } + } + return a; + }, Be = (e, r) => e ? qt(W, e, r) : "", Jt = (e, r) => { + r = S(r); + var t = r === "std::string"; + I(e, { + name: r, + fromWireType(n) { + var i = m[n >> 2], a = n + 4, o; + if (t) + for (var s = a, u = 0; u <= i; ++u) { + var f = a + u; + if (u == i || W[f] == 0) { + var v = f - s, h = Be(s, v); + o === void 0 ? o = h : (o += "\0", o += h), s = f + 1; + } + } + else { + for (var p = new Array(i), u = 0; u < i; ++u) + p[u] = String.fromCharCode(W[a + u]); + o = p.join(""); + } + return Y(n), o; + }, + toWireType(n, i) { + i instanceof ArrayBuffer && (i = new Uint8Array(i)); + var a, o = typeof i == "string"; + o || i instanceof Uint8Array || i instanceof Uint8ClampedArray || i instanceof Int8Array || g("Cannot pass non-string to std::string"), t && o ? a = wr(i) : a = i.length; + var s = ze(4 + a + 1), u = s + 4; + if (m[s >> 2] = a, t && o) + Zt(i, u, a + 1); + else if (o) + for (var f = 0; f < a; ++f) { + var v = i.charCodeAt(f); + v > 255 && (Y(u), g("String has UTF-16 code units that do not fit in 8 bits")), W[u + f] = v; + } + else + for (var f = 0; f < a; ++f) + W[u + f] = i[f]; + return n !== null && n.push(Y, s), s; + }, + argPackAdvance: U, + readValueFromPointer: hr, + destructorFunction(n) { + Y(n); + } + }); + }, Pr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, Kt = (e, r) => { + for (var t = e, n = t >> 1, i = n + r / 2; !(n >= i) && ee[n]; ) + ++n; + if (t = n << 1, t - e > 32 && Pr) + return Pr.decode(W.subarray(e, t)); + for (var a = "", o = 0; !(o >= r / 2); ++o) { + var s = X[e + o * 2 >> 1]; + if (s == 0) + break; + a += String.fromCharCode(s); + } + return a; + }, Qt = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 2) + return 0; + t -= 2; + for (var i = r, a = t < e.length * 2 ? t / 2 : e.length, o = 0; o < a; ++o) { + var s = e.charCodeAt(o); + X[r >> 1] = s, r += 2; + } + return X[r >> 1] = 0, r - i; + }, en = (e) => e.length * 2, rn = (e, r) => { + for (var t = 0, n = ""; !(t >= r / 4); ) { + var i = D[e + t * 4 >> 2]; + if (i == 0) + break; + if (++t, i >= 65536) { + var a = i - 65536; + n += String.fromCharCode(55296 | a >> 10, 56320 | a & 1023); + } else + n += String.fromCharCode(i); + } + return n; + }, tn = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 4) + return 0; + for (var i = r, a = i + t - 4, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (D[r >> 2] = s, r += 4, r + 4 > a) + break; + } + return D[r >> 2] = 0, r - i; + }, nn = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n >= 55296 && n <= 57343 && ++t, r += 4; + } + return r; + }, an = (e, r, t) => { + t = S(t); + var n, i, a, o, s; + r === 2 ? (n = Kt, i = Qt, o = en, a = () => ee, s = 1) : r === 4 && (n = rn, i = tn, o = nn, a = () => m, s = 2), I(e, { + name: t, + fromWireType: (u) => { + for (var f = m[u >> 2], v = a(), h, p = u + 4, _ = 0; _ <= f; ++_) { + var P = u + 4 + _ * r; + if (_ == f || v[P >> s] == 0) { + var C = P - p, y = n(p, C); + h === void 0 ? h = y : (h += "\0", h += y), p = P + r; + } + } + return Y(u), h; + }, + toWireType: (u, f) => { + typeof f != "string" && g(`Cannot pass non-string to C++ string type ${t}`); + var v = o(f), h = ze(4 + v + r); + return m[h >> 2] = v >> s, i(f, h + 4, v + r), u !== null && u.push(Y, h), h; + }, + argPackAdvance: U, + readValueFromPointer: We, + destructorFunction(u) { + Y(u); + } + }); + }, on = (e, r, t, n, i, a) => { + _e[e] = { + name: S(r), + rawConstructor: M(t, n), + rawDestructor: M(i, a), + fields: [] + }; + }, sn = (e, r, t, n, i, a, o, s, u, f) => { + _e[e].fields.push({ + fieldName: S(r), + getterReturnType: t, + getter: M(n, i), + getterContext: a, + setterArgumentType: o, + setter: M(s, u), + setterContext: f + }); + }, un = (e, r) => { + r = S(r), I(e, { + isVoid: !0, + name: r, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (t, n) => { + } + }); + }, Le = [], ln = (e, r, t, n) => (e = Le[e], r = V.toValue(r), e(null, r, t, n)), cn = {}, fn = (e) => { + var r = cn[e]; + return r === void 0 ? S(e) : r; + }, Cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(r) { + r.$$$embind_global$$$ = r; + var t = typeof $$$embind_global$$$ == "object" && r.$$$embind_global$$$ == r; + return t || delete r.$$$embind_global$$$, t; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, vn = (e) => e === 0 ? V.toHandle(Cr()) : (e = fn(e), V.toHandle(Cr()[e])), dn = (e) => { + var r = Le.length; + return Le.push(e), r; + }, hn = (e, r) => { + for (var t = new Array(e), n = 0; n < e; ++n) + t[n] = Ve(m[r + n * 4 >> 2], "parameter " + n); + return t; + }, pn = Reflect.construct, _n = (e, r, t) => { + var n = [], i = e.toWireType(n, t); + return n.length && (m[r >> 2] = V.toHandle(n)), i; + }, gn = (e, r, t) => { + var n = hn(e, r), i = n.shift(); + e--; + var a = new Array(e), o = (u, f, v, h) => { + for (var p = 0, _ = 0; _ < e; ++_) + a[_] = n[_].readValueFromPointer(h + p), p += n[_].argPackAdvance; + for (var P = t === 1 ? pn(f, a) : f.apply(u, a), _ = 0; _ < e; ++_) { + var C, y; + (C = (y = n[_]).deleteObject) === null || C === void 0 || C.call(y, a[_]); + } + return _n(i, v, P); + }, s = `methodCaller<(${n.map((u) => u.name).join(", ")}) => ${i.name}>`; + return dn(oe(s, o)); + }, yn = (e) => { + e > 4 && (O.get(e).refcount += 1); + }, mn = (e) => { + var r = V.toValue(e); + De(r), xe(e); + }, $n = (e, r) => { + e = Ve(e, "_emval_take_value"); + var t = e.readValueFromPointer(r); + return V.toHandle(t); + }, bn = () => { + de(""); + }, wn = (e, r, t) => W.copyWithin(e, r, r + t), Tn = () => 2147483648, Pn = (e) => { + var r = ve.buffer, t = (e - r.byteLength + 65535) / 65536; + try { + return ve.grow(t), er(), 1; + } catch { + } + }, Cn = (e) => { + var r = W.length; + e >>>= 0; + var t = Tn(); + if (e > t) + return !1; + for (var n = (u, f) => u + (f - u % f) % f, i = 1; i <= 4; i *= 2) { + var a = r * (1 + 0.2 / i); + a = Math.min(a, e + 100663296); + var o = Math.min(t, n(Math.max(e, a), 65536)), s = Pn(o); + if (s) + return !0; + } + return !1; + }, Ne = {}, An = () => Ze || "./this.program", se = () => { + if (!se.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", r = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: An() + }; + for (var t in Ne) + Ne[t] === void 0 ? delete r[t] : r[t] = Ne[t]; + var n = []; + for (var t in r) + n.push(`${t}=${r[t]}`); + se.strings = n; + } + return se.strings; + }, Fn = (e, r) => { + for (var t = 0; t < e.length; ++t) + j[r++ >> 0] = e.charCodeAt(t); + j[r >> 0] = 0; + }, En = (e, r) => { + var t = 0; + return se().forEach((n, i) => { + var a = r + t; + m[e + i * 4 >> 2] = a, Fn(n, a), t += n.length + 1; + }), 0; + }, Sn = (e, r) => { + var t = se(); + m[e >> 2] = t.length; + var n = 0; + return t.forEach((i) => n += i.length + 1), m[r >> 2] = n, 0; + }, Rn = (e) => e, Pe = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Dn = (e, r) => { + for (var t = 0, n = 0; n <= r; t += e[n++]) + ; + return t; + }, Ar = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Fr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Wn = (e, r) => { + for (var t = new Date(e.getTime()); r > 0; ) { + var n = Pe(t.getFullYear()), i = t.getMonth(), a = (n ? Ar : Fr)[i]; + if (r > a - t.getDate()) + r -= a - t.getDate() + 1, t.setDate(1), i < 11 ? t.setMonth(i + 1) : (t.setMonth(0), t.setFullYear(t.getFullYear() + 1)); + else + return t.setDate(t.getDate() + r), t; + } + return t; + }; + function kn(e, r, t) { + var n = t > 0 ? t : wr(e) + 1, i = new Array(n), a = br(e, i, 0, i.length); + return r && (i.length = a), i; + } + var On = (e, r) => { + j.set(e, r); + }, jn = (e, r, t, n) => { + var i = m[n + 40 >> 2], a = { + tm_sec: D[n >> 2], + tm_min: D[n + 4 >> 2], + tm_hour: D[n + 8 >> 2], + tm_mday: D[n + 12 >> 2], + tm_mon: D[n + 16 >> 2], + tm_year: D[n + 20 >> 2], + tm_wday: D[n + 24 >> 2], + tm_yday: D[n + 28 >> 2], + tm_isdst: D[n + 32 >> 2], + tm_gmtoff: D[n + 36 >> 2], + tm_zone: i ? Be(i) : "" + }, o = Be(t), s = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var u in s) + o = o.replace(new RegExp(u, "g"), s[u]); + var f = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], v = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function h(c, d, A) { + for (var E = typeof c == "number" ? c.toString() : c || ""; E.length < d; ) + E = A[0] + E; + return E; + } + function p(c, d) { + return h(c, d, "0"); + } + function _(c, d) { + function A(J) { + return J < 0 ? -1 : J > 0 ? 1 : 0; + } + var E; + return (E = A(c.getFullYear() - d.getFullYear())) === 0 && (E = A(c.getMonth() - d.getMonth())) === 0 && (E = A(c.getDate() - d.getDate())), E; + } + function P(c) { + switch (c.getDay()) { + case 0: + return new Date(c.getFullYear() - 1, 11, 29); + case 1: + return c; + case 2: + return new Date(c.getFullYear(), 0, 3); + case 3: + return new Date(c.getFullYear(), 0, 2); + case 4: + return new Date(c.getFullYear(), 0, 1); + case 5: + return new Date(c.getFullYear() - 1, 11, 31); + case 6: + return new Date(c.getFullYear() - 1, 11, 30); + } + } + function C(c) { + var d = Wn(new Date(c.tm_year + 1900, 0, 1), c.tm_yday), A = new Date(d.getFullYear(), 0, 4), E = new Date(d.getFullYear() + 1, 0, 4), J = P(A), Ae = P(E); + return _(J, d) <= 0 ? _(Ae, d) <= 0 ? d.getFullYear() + 1 : d.getFullYear() : d.getFullYear() - 1; + } + var y = { + "%a": (c) => f[c.tm_wday].substring(0, 3), + "%A": (c) => f[c.tm_wday], + "%b": (c) => v[c.tm_mon].substring(0, 3), + "%B": (c) => v[c.tm_mon], + "%C": (c) => { + var d = c.tm_year + 1900; + return p(d / 100 | 0, 2); + }, + "%d": (c) => p(c.tm_mday, 2), + "%e": (c) => h(c.tm_mday, 2, " "), + "%g": (c) => C(c).toString().substring(2), + "%G": (c) => C(c), + "%H": (c) => p(c.tm_hour, 2), + "%I": (c) => { + var d = c.tm_hour; + return d == 0 ? d = 12 : d > 12 && (d -= 12), p(d, 2); + }, + "%j": (c) => p(c.tm_mday + Dn(Pe(c.tm_year + 1900) ? Ar : Fr, c.tm_mon - 1), 3), + "%m": (c) => p(c.tm_mon + 1, 2), + "%M": (c) => p(c.tm_min, 2), + "%n": () => ` +`, + "%p": (c) => c.tm_hour >= 0 && c.tm_hour < 12 ? "AM" : "PM", + "%S": (c) => p(c.tm_sec, 2), + "%t": () => " ", + "%u": (c) => c.tm_wday || 7, + "%U": (c) => { + var d = c.tm_yday + 7 - c.tm_wday; + return p(Math.floor(d / 7), 2); + }, + "%V": (c) => { + var d = Math.floor((c.tm_yday + 7 - (c.tm_wday + 6) % 7) / 7); + if ((c.tm_wday + 371 - c.tm_yday - 2) % 7 <= 2 && d++, d) { + if (d == 53) { + var E = (c.tm_wday + 371 - c.tm_yday) % 7; + E != 4 && (E != 3 || !Pe(c.tm_year)) && (d = 1); + } + } else { + d = 52; + var A = (c.tm_wday + 7 - c.tm_yday - 1) % 7; + (A == 4 || A == 5 && Pe(c.tm_year % 400 - 1)) && d++; + } + return p(d, 2); + }, + "%w": (c) => c.tm_wday, + "%W": (c) => { + var d = c.tm_yday + 7 - (c.tm_wday + 6) % 7; + return p(Math.floor(d / 7), 2); + }, + "%y": (c) => (c.tm_year + 1900).toString().substring(2), + "%Y": (c) => c.tm_year + 1900, + "%z": (c) => { + var d = c.tm_gmtoff, A = d >= 0; + return d = Math.abs(d) / 60, d = d / 60 * 100 + d % 60, (A ? "+" : "-") + ("0000" + d).slice(-4); + }, + "%Z": (c) => c.tm_zone, + "%%": () => "%" + }; + o = o.replace(/%%/g, "\0\0"); + for (var u in y) + o.includes(u) && (o = o.replace(new RegExp(u, "g"), y[u](a))); + o = o.replace(/\0\0/g, "%"); + var R = kn(o, !1); + return R.length > r ? 0 : (On(R, e), R.length - 1); + }, Mn = (e, r, t, n, i) => jn(e, r, t, n); + sr = l.InternalError = class extends Error { + constructor(r) { + super(r), this.name = "InternalError"; + } + }, st(), q = l.BindingError = class extends Error { + constructor(r) { + super(r), this.name = "BindingError"; + } + }, mt(), pt(), Ft(), gr = l.UnboundTypeError = Dt(Error, "UnboundTypeError"), Mt(), It(); + var Hn = { + s: qr, + t: Jr, + b: Qr, + g: et, + m: rt, + K: tt, + e: nt, + W: it, + d: Kr, + ea: at, + R: ot, + $: lt, + da: Wt, + ca: Ot, + x: jt, + Z: Ut, + y: Vt, + j: Yt, + M: Lt, + E: Nt, + u: Xt, + q: Gt, + L: Jt, + D: an, + w: on, + fa: sn, + aa: un, + S: ln, + ia: xe, + ha: vn, + _: gn, + N: yn, + P: mn, + ba: $n, + C: bn, + Y: wn, + X: Cn, + U: En, + V: Sn, + G: ei, + B: Yn, + H: Qn, + p: ri, + a: In, + f: Ln, + n: Vn, + k: zn, + J: Jn, + v: qn, + I: Kn, + A: ni, + Q: ai, + l: Nn, + i: Bn, + c: xn, + o: Un, + F: Gn, + ga: Xn, + r: ti, + h: Zn, + z: ii, + O: Rn, + T: Mn + }, F = Zr(), Y = l._free = (e) => (Y = l._free = F.la)(e), ze = l._malloc = (e) => (ze = l._malloc = F.ma)(e), Er = (e) => (Er = F.oa)(e), $ = (e, r) => ($ = F.pa)(e, r), ue = (e) => (ue = F.qa)(e), w = () => (w = F.ra)(), T = (e) => (T = F.sa)(e), Sr = (e) => (Sr = F.ta)(e), Rr = (e) => (Rr = F.ua)(e), Dr = (e, r, t) => (Dr = F.va)(e, r, t), Wr = (e) => (Wr = F.wa)(e); + l.dynCall_viijii = (e, r, t, n, i, a, o) => (l.dynCall_viijii = F.xa)(e, r, t, n, i, a, o); + var kr = l.dynCall_jiiii = (e, r, t, n, i) => (kr = l.dynCall_jiiii = F.ya)(e, r, t, n, i); + l.dynCall_iiiiij = (e, r, t, n, i, a, o) => (l.dynCall_iiiiij = F.za)(e, r, t, n, i, a, o), l.dynCall_iiiiijj = (e, r, t, n, i, a, o, s, u) => (l.dynCall_iiiiijj = F.Aa)(e, r, t, n, i, a, o, s, u), l.dynCall_iiiiiijj = (e, r, t, n, i, a, o, s, u, f) => (l.dynCall_iiiiiijj = F.Ba)(e, r, t, n, i, a, o, s, u, f); + function In(e, r) { + var t = w(); + try { + return b(e)(r); + } catch (n) { + if (T(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function Un(e, r, t, n) { + var i = w(); + try { + b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function xn(e, r, t) { + var n = w(); + try { + b(e)(r, t); + } catch (i) { + if (T(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Vn(e, r, t, n) { + var i = w(); + try { + return b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function Yn(e, r, t, n, i) { + var a = w(); + try { + return b(e)(r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Bn(e, r) { + var t = w(); + try { + b(e)(r); + } catch (n) { + if (T(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function Ln(e, r, t) { + var n = w(); + try { + return b(e)(r, t); + } catch (i) { + if (T(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Nn(e) { + var r = w(); + try { + b(e)(); + } catch (t) { + if (T(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function zn(e, r, t, n, i) { + var a = w(); + try { + return b(e)(r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Xn(e, r, t, n, i, a) { + var o = w(); + try { + b(e)(r, t, n, i, a); + } catch (s) { + if (T(o), s !== s + 0) + throw s; + $(1, 0); + } + } + function Gn(e, r, t, n, i) { + var a = w(); + try { + b(e)(r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Zn(e, r, t, n, i, a, o, s, u, f, v) { + var h = w(); + try { + b(e)(r, t, n, i, a, o, s, u, f, v); + } catch (p) { + if (T(h), p !== p + 0) + throw p; + $(1, 0); + } + } + function qn(e, r, t, n, i, a, o) { + var s = w(); + try { + return b(e)(r, t, n, i, a, o); + } catch (u) { + if (T(s), u !== u + 0) + throw u; + $(1, 0); + } + } + function Jn(e, r, t, n, i, a) { + var o = w(); + try { + return b(e)(r, t, n, i, a); + } catch (s) { + if (T(o), s !== s + 0) + throw s; + $(1, 0); + } + } + function Kn(e, r, t, n, i, a, o, s) { + var u = w(); + try { + return b(e)(r, t, n, i, a, o, s); + } catch (f) { + if (T(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function Qn(e, r, t, n) { + var i = w(); + try { + return b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function ei(e, r, t, n) { + var i = w(); + try { + return b(e)(r, t, n); + } catch (a) { + if (T(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function ri(e) { + var r = w(); + try { + return b(e)(); + } catch (t) { + if (T(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function ti(e, r, t, n, i, a, o, s) { + var u = w(); + try { + b(e)(r, t, n, i, a, o, s); + } catch (f) { + if (T(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function ni(e, r, t, n, i, a, o, s, u, f, v, h) { + var p = w(); + try { + return b(e)(r, t, n, i, a, o, s, u, f, v, h); + } catch (_) { + if (T(p), _ !== _ + 0) + throw _; + $(1, 0); + } + } + function ii(e, r, t, n, i, a, o, s, u, f, v, h, p, _, P, C) { + var y = w(); + try { + b(e)(r, t, n, i, a, o, s, u, f, v, h, p, _, P, C); + } catch (R) { + if (T(y), R !== R + 0) + throw R; + $(1, 0); + } + } + function ai(e, r, t, n, i) { + var a = w(); + try { + return kr(e, r, t, n, i); + } catch (o) { + if (T(a), o !== o + 0) + throw o; + $(1, 0); + } + } + var Ce; + re = function e() { + Ce || Or(), Ce || (re = e); + }; + function Or() { + if (L > 0 || (Ir(), L > 0)) + return; + function e() { + Ce || (Ce = !0, l.calledRun = !0, !Je && (Ur(), Xe(l), l.onRuntimeInitialized && l.onRuntimeInitialized(), xr())); + } + l.setStatus ? (l.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + l.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (l.preInit) + for (typeof l.preInit == "function" && (l.preInit = [l.preInit]); l.preInit.length > 0; ) + l.preInit.pop()(); + return Or(), B.ready; + }; +})(); +function hi(k) { + return oi( + le, + k + ); +} +function pi(k) { + return si( + le, + k + ); +} +async function _i(k, B) { + return ui( + le, + k, + B + ); +} +async function gi(k, B) { + return li( + le, + k, + B + ); +} +async function yi(k, B) { + return ci( + le, + k, + B + ); +} +export { + bi as barcodeFormats, + wi as binarizers, + Ti as characterSets, + Pi as contentTypes, + Ci as defaultDecodeHints, + Ai as defaultEncodeHints, + Fi as defaultReaderOptions, + Ei as defaultWriterOptions, + Si as eanAddOnSymbols, + hi as getZXingModule, + Ri as purgeZXingModule, + gi as readBarcodesFromImageData, + _i as readBarcodesFromImageFile, + Di as readOutputEccLevels, + pi as setZXingModuleOverrides, + Wi as textModes, + yi as writeBarcodeToImageFile, + ki as writeInputEccLevels +}; diff --git a/node_modules/zxing-wasm/dist/es/reader/index.d.ts b/node_modules/zxing-wasm/dist/es/reader/index.d.ts new file mode 100644 index 0000000..c920d48 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/reader/index.d.ts @@ -0,0 +1,8 @@ +import { type ZXingReaderModule, type ZXingModuleOverrides } from "../core.js"; +import type { ReaderOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function readBarcodesFromImageFile(imageFile: Blob | File, readerOptions?: ReaderOptions): Promise; +export declare function readBarcodesFromImageData(imageData: ImageData, readerOptions?: ReaderOptions): Promise; +export * from "../bindings/exposedReaderBindings.js"; +export { purgeZXingModule, type ZXingReaderModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/es/reader/index.js b/node_modules/zxing-wasm/dist/es/reader/index.js new file mode 100644 index 0000000..6da7cab --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/reader/index.js @@ -0,0 +1,1724 @@ +import { g as ai, s as oi, r as si, a as ui } from "../core-gSM15mHH.js"; +import { b as yi, c as mi, e as $i, f as bi, d as wi, d as Ti, h as Pi, p as Ci, i as Ai, t as Fi } from "../core-gSM15mHH.js"; +var Ae = (() => { + var M = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(z = {}) { + var l = z, Xe, le; + l.ready = new Promise((e, r) => { + Xe = e, le = r; + }); + var Ge = Object.assign({}, l), Ze = "./this.program", qe = typeof window == "object", ce = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var H = ""; + function Hr(e) { + return l.locateFile ? l.locateFile(e, H) : H + e; + } + var Fe; + (qe || ce) && (ce ? H = self.location.href : typeof document < "u" && document.currentScript && (H = document.currentScript.src), M && (H = M), H.indexOf("blob:") !== 0 ? H = H.substr(0, H.replace(/[?#].*/, "").lastIndexOf("/") + 1) : H = "", ce && (Fe = (e) => { + var r = new XMLHttpRequest(); + return r.open("GET", e, !1), r.responseType = "arraybuffer", r.send(null), new Uint8Array(r.response); + })), l.print || console.log.bind(console); + var K = l.printErr || console.error.bind(console); + Object.assign(l, Ge), Ge = null, l.arguments && l.arguments, l.thisProgram && (Ze = l.thisProgram), l.quit && l.quit; + var Q; + l.wasmBinary && (Q = l.wasmBinary), typeof WebAssembly != "object" && ve("no native wasm support detected"); + var fe, Je = !1, k, O, X, ee, D, m, Ke, Qe; + function er() { + var e = fe.buffer; + l.HEAP8 = k = new Int8Array(e), l.HEAP16 = X = new Int16Array(e), l.HEAPU8 = O = new Uint8Array(e), l.HEAPU16 = ee = new Uint16Array(e), l.HEAP32 = D = new Int32Array(e), l.HEAPU32 = m = new Uint32Array(e), l.HEAPF32 = Ke = new Float32Array(e), l.HEAPF64 = Qe = new Float64Array(e); + } + var rr = [], tr = [], nr = []; + function Ur() { + if (l.preRun) + for (typeof l.preRun == "function" && (l.preRun = [l.preRun]); l.preRun.length; ) + Vr(l.preRun.shift()); + Ee(rr); + } + function Ir() { + Ee(tr); + } + function xr() { + if (l.postRun) + for (typeof l.postRun == "function" && (l.postRun = [l.postRun]); l.postRun.length; ) + Br(l.postRun.shift()); + Ee(nr); + } + function Vr(e) { + rr.unshift(e); + } + function Yr(e) { + tr.unshift(e); + } + function Br(e) { + nr.unshift(e); + } + var B = 0, re = null; + function Lr(e) { + var r; + B++, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, B); + } + function Nr(e) { + var r; + if (B--, (r = l.monitorRunDependencies) === null || r === void 0 || r.call(l, B), B == 0 && re) { + var t = re; + re = null, t(); + } + } + function ve(e) { + var r; + (r = l.onAbort) === null || r === void 0 || r.call(l, e), e = "Aborted(" + e + ")", K(e), Je = !0, e += ". Build with -sASSERTIONS for more info."; + var t = new WebAssembly.RuntimeError(e); + throw le(t), t; + } + var zr = "data:application/octet-stream;base64,", ir = (e) => e.startsWith(zr), G; + G = "zxing_reader.wasm", ir(G) || (G = Hr(G)); + function ar(e) { + if (e == G && Q) + return new Uint8Array(Q); + if (Fe) + return Fe(e); + throw "both async and sync fetching of the wasm failed"; + } + function Xr(e) { + return !Q && (qe || ce) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((r) => { + if (!r.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return r.arrayBuffer(); + }).catch(() => ar(e)) : Promise.resolve().then(() => ar(e)); + } + function or(e, r, t) { + return Xr(e).then((n) => WebAssembly.instantiate(n, r)).then((n) => n).then(t, (n) => { + K(`failed to asynchronously prepare wasm: ${n}`), ve(n); + }); + } + function Gr(e, r, t, n) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !ir(r) && typeof fetch == "function" ? fetch(r, { + credentials: "same-origin" + }).then((i) => { + var a = WebAssembly.instantiateStreaming(i, t); + return a.then(n, function(o) { + return K(`wasm streaming compile failed: ${o}`), K("falling back to ArrayBuffer instantiation"), or(r, t, n); + }); + }) : or(r, t, n); + } + function Zr() { + var e = { + a: Hn + }; + function r(n, i) { + return F = n.exports, fe = F.ia, er(), _r = F.ma, Yr(F.ja), Nr(), F; + } + Lr(); + function t(n) { + r(n.instance); + } + if (l.instantiateWasm) + try { + return l.instantiateWasm(e, r); + } catch (n) { + K(`Module.instantiateWasm callback failed with error: ${n}`), le(n); + } + return Gr(Q, G, e, t).catch(le), {}; + } + var Ee = (e) => { + for (; e.length > 0; ) + e.shift()(l); + }; + l.noExitRuntime; + var de = [], he = 0, qr = (e) => { + var r = new Se(e); + return r.get_caught() || (r.set_caught(!0), he--), r.set_rethrown(!1), de.push(r), Rr(r.excPtr), r.get_exception_ptr(); + }, x = 0, Jr = () => { + $(0, 0); + var e = de.pop(); + Sr(e.excPtr), x = 0; + }; + function Se(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(r) { + m[this.ptr + 4 >> 2] = r; + }, this.get_type = function() { + return m[this.ptr + 4 >> 2]; + }, this.set_destructor = function(r) { + m[this.ptr + 8 >> 2] = r; + }, this.get_destructor = function() { + return m[this.ptr + 8 >> 2]; + }, this.set_caught = function(r) { + r = r ? 1 : 0, k[this.ptr + 12 >> 0] = r; + }, this.get_caught = function() { + return k[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(r) { + r = r ? 1 : 0, k[this.ptr + 13 >> 0] = r; + }, this.get_rethrown = function() { + return k[this.ptr + 13 >> 0] != 0; + }, this.init = function(r, t) { + this.set_adjusted_ptr(0), this.set_type(r), this.set_destructor(t); + }, this.set_adjusted_ptr = function(r) { + m[this.ptr + 16 >> 2] = r; + }, this.get_adjusted_ptr = function() { + return m[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var r = Or(this.get_type()); + if (r) + return m[this.excPtr >> 2]; + var t = this.get_adjusted_ptr(); + return t !== 0 ? t : this.excPtr; + }; + } + var Kr = (e) => { + throw x || (x = e), x; + }, Re = (e) => { + var r = x; + if (!r) + return ue(0), 0; + var t = new Se(r); + t.set_adjusted_ptr(r); + var n = t.get_type(); + if (!n) + return ue(0), r; + for (var i in e) { + var a = e[i]; + if (a === 0 || a === n) + break; + var o = t.ptr + 16; + if (Dr(a, n, o)) + return ue(a), r; + } + return ue(n), r; + }, Qr = () => Re([]), et = (e) => Re([e]), rt = (e, r) => Re([e, r]), tt = () => { + var e = de.pop(); + e || ve("no exception to throw"); + var r = e.excPtr; + throw e.get_rethrown() || (de.push(e), e.set_rethrown(!0), e.set_caught(!1), he++), x = r, x; + }, nt = (e, r, t) => { + var n = new Se(e); + throw n.init(r, t), x = e, he++, x; + }, it = () => he, pe = {}, De = (e) => { + for (; e.length; ) { + var r = e.pop(), t = e.pop(); + t(r); + } + }; + function Oe(e) { + return this.fromWireType(D[e >> 2]); + } + var Z = {}, L = {}, _e = {}, sr, ge = (e) => { + throw new sr(e); + }, N = (e, r, t) => { + e.forEach(function(s) { + _e[s] = r; + }); + function n(s) { + var u = t(s); + u.length !== e.length && ge("Mismatched type converter count"); + for (var f = 0; f < e.length; ++f) + U(e[f], u[f]); + } + var i = new Array(r.length), a = [], o = 0; + r.forEach((s, u) => { + L.hasOwnProperty(s) ? i[u] = L[s] : (a.push(s), Z.hasOwnProperty(s) || (Z[s] = []), Z[s].push(() => { + i[u] = L[s], ++o, o === a.length && n(i); + })); + }), a.length === 0 && n(i); + }, at = (e) => { + var r = pe[e]; + delete pe[e]; + var t = r.rawConstructor, n = r.rawDestructor, i = r.fields, a = i.map((o) => o.getterReturnType).concat(i.map((o) => o.setterArgumentType)); + N([e], a, (o) => { + var s = {}; + return i.forEach((u, f) => { + var v = u.fieldName, h = o[f], p = u.getter, _ = u.getterContext, b = o[f + i.length], C = u.setter, y = u.setterContext; + s[v] = { + read: (R) => h.fromWireType(p(_, R)), + write: (R, c) => { + var d = []; + C(y, R, b.toWireType(d, c)), De(d); + } + }; + }), [{ + name: r.name, + fromWireType: (u) => { + var f = {}; + for (var v in s) + f[v] = s[v].read(u); + return n(u), f; + }, + toWireType: (u, f) => { + for (var v in s) + if (!(v in f)) + throw new TypeError(`Missing field: "${v}"`); + var h = t(); + for (v in s) + s[v].write(h, f[v]); + return u !== null && u.push(n, h), h; + }, + argPackAdvance: I, + readValueFromPointer: Oe, + destructorFunction: n + }]; + }); + }, ot = (e, r, t, n, i) => { + }, st = () => { + for (var e = new Array(256), r = 0; r < 256; ++r) + e[r] = String.fromCharCode(r); + ur = e; + }, ur, S = (e) => { + for (var r = "", t = e; O[t]; ) + r += ur[O[t++]]; + return r; + }, q, g = (e) => { + throw new q(e); + }; + function ut(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = r.name; + if (e || g(`type "${n}" must have a positive integer typeid pointer`), L.hasOwnProperty(e)) { + if (t.ignoreDuplicateRegistrations) + return; + g(`Cannot register type '${n}' twice`); + } + if (L[e] = r, delete _e[e], Z.hasOwnProperty(e)) { + var i = Z[e]; + delete Z[e], i.forEach((a) => a()); + } + } + function U(e, r) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in r)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return ut(e, r, t); + } + var I = 8, lt = (e, r, t, n) => { + r = S(r), U(e, { + name: r, + fromWireType: function(i) { + return !!i; + }, + toWireType: function(i, a) { + return a ? t : n; + }, + argPackAdvance: I, + readValueFromPointer: function(i) { + return this.fromWireType(O[i]); + }, + destructorFunction: null + }); + }, ct = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), We = (e) => { + function r(t) { + return t.$$.ptrType.registeredClass.name; + } + g(r(e) + " instance already deleted"); + }, ke = !1, lr = (e) => { + }, ft = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, cr = (e) => { + e.count.value -= 1; + var r = e.count.value === 0; + r && ft(e); + }, fr = (e, r, t) => { + if (r === t) + return e; + if (t.baseClass === void 0) + return null; + var n = fr(e, r, t.baseClass); + return n === null ? null : t.downcast(n); + }, vr = {}, vt = () => Object.keys(ie).length, dt = () => { + var e = []; + for (var r in ie) + ie.hasOwnProperty(r) && e.push(ie[r]); + return e; + }, te = [], je = () => { + for (; te.length; ) { + var e = te.pop(); + e.$$.deleteScheduled = !1, e.delete(); + } + }, ne, ht = (e) => { + ne = e, te.length && ne && ne(je); + }, pt = () => { + l.getInheritedInstanceCount = vt, l.getLiveInheritedInstances = dt, l.flushPendingDeletes = je, l.setDelayFunction = ht; + }, ie = {}, _t = (e, r) => { + for (r === void 0 && g("ptr should not be undefined"); e.baseClass; ) + r = e.upcast(r), e = e.baseClass; + return r; + }, gt = (e, r) => (r = _t(e, r), ie[r]), ye = (e, r) => { + (!r.ptrType || !r.ptr) && ge("makeClassHandle requires ptr and ptrType"); + var t = !!r.smartPtrType, n = !!r.smartPtr; + return t !== n && ge("Both smartPtrType and smartPtr must be specified"), r.count = { + value: 1 + }, ae(Object.create(e, { + $$: { + value: r, + writable: !0 + } + })); + }; + function yt(e) { + var r = this.getPointee(e); + if (!r) + return this.destructor(e), null; + var t = gt(this.registeredClass, r); + if (t !== void 0) { + if (t.$$.count.value === 0) + return t.$$.ptr = r, t.$$.smartPtr = e, t.clone(); + var n = t.clone(); + return this.destructor(e), n; + } + function i() { + return this.isSmartPointer ? ye(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: r, + smartPtrType: this, + smartPtr: e + }) : ye(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var a = this.registeredClass.getActualType(r), o = vr[a]; + if (!o) + return i.call(this); + var s; + this.isConst ? s = o.constPointerType : s = o.pointerType; + var u = fr(r, this.registeredClass, s.registeredClass); + return u === null ? i.call(this) : this.isSmartPointer ? ye(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u, + smartPtrType: this, + smartPtr: e + }) : ye(s.registeredClass.instancePrototype, { + ptrType: s, + ptr: u + }); + } + var ae = (e) => typeof FinalizationRegistry > "u" ? (ae = (r) => r, e) : (ke = new FinalizationRegistry((r) => { + cr(r.$$); + }), ae = (r) => { + var t = r.$$, n = !!t.smartPtr; + if (n) { + var i = { + $$: t + }; + ke.register(r, i, r); + } + return r; + }, lr = (r) => ke.unregister(r), ae(e)), mt = () => { + Object.assign(me.prototype, { + isAliasOf(e) { + if (!(this instanceof me) || !(e instanceof me)) + return !1; + var r = this.$$.ptrType.registeredClass, t = this.$$.ptr; + e.$$ = e.$$; + for (var n = e.$$.ptrType.registeredClass, i = e.$$.ptr; r.baseClass; ) + t = r.upcast(t), r = r.baseClass; + for (; n.baseClass; ) + i = n.upcast(i), n = n.baseClass; + return r === n && t === i; + }, + clone() { + if (this.$$.ptr || We(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ae(Object.create(Object.getPrototypeOf(this), { + $$: { + value: ct(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e; + }, + delete() { + this.$$.ptr || We(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), lr(this), cr(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || We(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && g("Object already scheduled for deletion"), te.push(this), te.length === 1 && ne && ne(je), this.$$.deleteScheduled = !0, this; + } + }); + }; + function me() { + } + var oe = (e, r) => Object.defineProperty(r, "name", { + value: e + }), dr = (e, r, t) => { + if (e[r].overloadTable === void 0) { + var n = e[r]; + e[r] = function() { + return e[r].overloadTable.hasOwnProperty(arguments.length) || g(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`), e[r].overloadTable[arguments.length].apply(this, arguments); + }, e[r].overloadTable = [], e[r].overloadTable[n.argCount] = n; + } + }, Me = (e, r, t) => { + l.hasOwnProperty(e) ? ((t === void 0 || l[e].overloadTable !== void 0 && l[e].overloadTable[t] !== void 0) && g(`Cannot register public name '${e}' twice`), dr(l, e, e), l.hasOwnProperty(t) && g(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`), l[e].overloadTable[t] = r) : (l[e] = r, t !== void 0 && (l[e].numArguments = t)); + }, $t = 48, bt = 57, wt = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var r = e.charCodeAt(0); + return r >= $t && r <= bt ? `_${e}` : e; + }; + function Tt(e, r, t, n, i, a, o, s) { + this.name = e, this.constructor = r, this.instancePrototype = t, this.rawDestructor = n, this.baseClass = i, this.getActualType = a, this.upcast = o, this.downcast = s, this.pureVirtualFunctions = []; + } + var He = (e, r, t) => { + for (; r !== t; ) + r.upcast || g(`Expected null or instance of ${t.name}, got an instance of ${r.name}`), e = r.upcast(e), r = r.baseClass; + return e; + }; + function Pt(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function Ct(e, r) { + var t; + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), this.isSmartPointer ? (t = this.rawConstructor(), e !== null && e.push(this.rawDestructor, t), t) : 0; + (!r || !r.$$) && g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + var n = r.$$.ptrType.registeredClass; + if (t = He(r.$$.ptr, n, this.registeredClass), this.isSmartPointer) + switch (r.$$.smartPtr === void 0 && g("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + r.$$.smartPtrType === this ? t = r.$$.smartPtr : g(`Cannot convert argument of type ${r.$$.smartPtrType ? r.$$.smartPtrType.name : r.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + t = r.$$.smartPtr; + break; + case 2: + if (r.$$.smartPtrType === this) + t = r.$$.smartPtr; + else { + var i = r.clone(); + t = this.rawShare(t, V.toHandle(() => i.delete())), e !== null && e.push(this.rawDestructor, t); + } + break; + default: + g("Unsupporting sharing policy"); + } + return t; + } + function At(e, r) { + if (r === null) + return this.isReference && g(`null is not a valid ${this.name}`), 0; + r.$$ || g(`Cannot pass "${Ye(r)}" as a ${this.name}`), r.$$.ptr || g(`Cannot pass deleted object as a pointer of type ${this.name}`), r.$$.ptrType.isConst && g(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`); + var t = r.$$.ptrType.registeredClass, n = He(r.$$.ptr, t, this.registeredClass); + return n; + } + function hr(e) { + return this.fromWireType(m[e >> 2]); + } + var Ft = () => { + Object.assign($e.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var r; + (r = this.rawDestructor) === null || r === void 0 || r.call(this, e); + }, + argPackAdvance: I, + readValueFromPointer: hr, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: yt + }); + }; + function $e(e, r, t, n, i, a, o, s, u, f, v) { + this.name = e, this.registeredClass = r, this.isReference = t, this.isConst = n, this.isSmartPointer = i, this.pointeeType = a, this.sharingPolicy = o, this.rawGetPointee = s, this.rawConstructor = u, this.rawShare = f, this.rawDestructor = v, !i && r.baseClass === void 0 ? n ? (this.toWireType = Pt, this.destructorFunction = null) : (this.toWireType = At, this.destructorFunction = null) : this.toWireType = Ct; + } + var pr = (e, r, t) => { + l.hasOwnProperty(e) || ge("Replacing nonexistant public symbol"), l[e].overloadTable !== void 0 && t !== void 0 ? l[e].overloadTable[t] = r : (l[e] = r, l[e].argCount = t); + }, Et = (e, r, t) => { + var n = l["dynCall_" + e]; + return t && t.length ? n.apply(null, [r].concat(t)) : n.call(null, r); + }, be = [], _r, w = (e) => { + var r = be[e]; + return r || (e >= be.length && (be.length = e + 1), be[e] = r = _r.get(e)), r; + }, St = (e, r, t) => { + if (e.includes("j")) + return Et(e, r, t); + var n = w(r).apply(null, t); + return n; + }, Rt = (e, r) => { + var t = []; + return function() { + return t.length = 0, Object.assign(t, arguments), St(e, r, t); + }; + }, j = (e, r) => { + e = S(e); + function t() { + return e.includes("j") ? Rt(e, r) : w(r); + } + var n = t(); + return typeof n != "function" && g(`unknown function pointer with signature ${e}: ${r}`), n; + }, Dt = (e, r) => { + var t = oe(r, function(n) { + this.name = r, this.message = n; + var i = new Error(n).stack; + i !== void 0 && (this.stack = this.toString() + ` +` + i.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return t.prototype = Object.create(e.prototype), t.prototype.constructor = t, t.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, t; + }, gr, yr = (e) => { + var r = Er(e), t = S(r); + return Y(r), t; + }, we = (e, r) => { + var t = [], n = {}; + function i(a) { + if (!n[a] && !L[a]) { + if (_e[a]) { + _e[a].forEach(i); + return; + } + t.push(a), n[a] = !0; + } + } + throw r.forEach(i), new gr(`${e}: ` + t.map(yr).join([", "])); + }, Ot = (e, r, t, n, i, a, o, s, u, f, v, h, p) => { + v = S(v), a = j(i, a), s && (s = j(o, s)), f && (f = j(u, f)), p = j(h, p); + var _ = wt(v); + Me(_, function() { + we(`Cannot construct ${v} due to unbound types`, [n]); + }), N([e, r, t], n ? [n] : [], function(b) { + b = b[0]; + var C, y; + n ? (C = b.registeredClass, y = C.instancePrototype) : y = me.prototype; + var R = oe(v, function() { + if (Object.getPrototypeOf(this) !== c) + throw new q("Use 'new' to construct " + v); + if (d.constructor_body === void 0) + throw new q(v + " has no accessible constructor"); + var Mr = d.constructor_body[arguments.length]; + if (Mr === void 0) + throw new q(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`); + return Mr.apply(this, arguments); + }), c = Object.create(y, { + constructor: { + value: R + } + }); + R.prototype = c; + var d = new Tt(v, R, c, p, C, a, s, f); + if (d.baseClass) { + var A, E; + (E = (A = d.baseClass).__derivedClasses) !== null && E !== void 0 || (A.__derivedClasses = []), d.baseClass.__derivedClasses.push(d); + } + var J = new $e(v, d, !0, !1, !1), Ce = new $e(v + "*", d, !1, !1, !1), jr = new $e(v + " const*", d, !1, !0, !1); + return vr[e] = { + pointerType: Ce, + constPointerType: jr + }, pr(_, R), [J, Ce, jr]; + }); + }, Ue = (e, r) => { + for (var t = [], n = 0; n < e; n++) + t.push(m[r + n * 4 >> 2]); + return t; + }; + function Wt(e) { + for (var r = 1; r < e.length; ++r) + if (e[r] !== null && e[r].destructorFunction === void 0) + return !0; + return !1; + } + function Ie(e, r, t, n, i, a) { + var o = r.length; + o < 2 && g("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var s = r[1] !== null && t !== null, u = Wt(r), f = r[0].name !== "void", v = o - 2, h = new Array(v), p = [], _ = [], b = function() { + arguments.length !== v && g(`function ${e} called with ${arguments.length} arguments, expected ${v}`), _.length = 0; + var C; + p.length = s ? 2 : 1, p[0] = i, s && (C = r[1].toWireType(_, this), p[1] = C); + for (var y = 0; y < v; ++y) + h[y] = r[y + 2].toWireType(_, arguments[y]), p.push(h[y]); + var R = n.apply(null, p); + function c(d) { + if (u) + De(_); + else + for (var A = s ? 1 : 2; A < r.length; A++) { + var E = A === 1 ? C : h[A - 2]; + r[A].destructorFunction !== null && r[A].destructorFunction(E); + } + if (f) + return r[0].fromWireType(d); + } + return c(R); + }; + return oe(e, b); + } + var kt = (e, r, t, n, i, a) => { + var o = Ue(r, t); + i = j(n, i), N([], [e], function(s) { + s = s[0]; + var u = `constructor ${s.name}`; + if (s.registeredClass.constructor_body === void 0 && (s.registeredClass.constructor_body = []), s.registeredClass.constructor_body[r - 1] !== void 0) + throw new q(`Cannot register multiple constructors with identical number of parameters (${r - 1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return s.registeredClass.constructor_body[r - 1] = () => { + we(`Cannot construct ${s.name} due to unbound types`, o); + }, N([], o, (f) => (f.splice(1, 0, null), s.registeredClass.constructor_body[r - 1] = Ie(u, f, null, i, a), [])), []; + }); + }, mr = (e) => { + e = e.trim(); + const r = e.indexOf("("); + return r !== -1 ? e.substr(0, r) : e; + }, jt = (e, r, t, n, i, a, o, s, u) => { + var f = Ue(t, n); + r = S(r), r = mr(r), a = j(i, a), N([], [e], function(v) { + v = v[0]; + var h = `${v.name}.${r}`; + r.startsWith("@@") && (r = Symbol[r.substring(2)]), s && v.registeredClass.pureVirtualFunctions.push(r); + function p() { + we(`Cannot call ${h} due to unbound types`, f); + } + var _ = v.registeredClass.instancePrototype, b = _[r]; + return b === void 0 || b.overloadTable === void 0 && b.className !== v.name && b.argCount === t - 2 ? (p.argCount = t - 2, p.className = v.name, _[r] = p) : (dr(_, r, h), _[r].overloadTable[t - 2] = p), N([], f, function(C) { + var y = Ie(h, C, v, a, o); + return _[r].overloadTable === void 0 ? (y.argCount = t - 2, _[r] = y) : _[r].overloadTable[t - 2] = y, []; + }), []; + }); + }; + function Mt() { + Object.assign($r.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var r = this.freelist.pop() || this.allocated.length; + return this.allocated[r] = e, r; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function $r() { + this.allocated = [void 0], this.freelist = []; + } + var W = new $r(), xe = (e) => { + e >= W.reserved && --W.get(e).refcount === 0 && W.free(e); + }, Ht = () => { + for (var e = 0, r = W.reserved; r < W.allocated.length; ++r) + W.allocated[r] !== void 0 && ++e; + return e; + }, Ut = () => { + W.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), W.reserved = W.allocated.length, l.count_emval_handles = Ht; + }, V = { + toValue: (e) => (e || g("Cannot use deleted val. handle = " + e), W.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return W.allocate({ + refcount: 1, + value: e + }); + } + } + }, It = (e, r) => { + r = S(r), U(e, { + name: r, + fromWireType: (t) => { + var n = V.toValue(t); + return xe(t), n; + }, + toWireType: (t, n) => V.toHandle(n), + argPackAdvance: I, + readValueFromPointer: Oe, + destructorFunction: null + }); + }, xt = (e, r, t) => { + switch (r) { + case 1: + return t ? function(n) { + return this.fromWireType(k[n >> 0]); + } : function(n) { + return this.fromWireType(O[n >> 0]); + }; + case 2: + return t ? function(n) { + return this.fromWireType(X[n >> 1]); + } : function(n) { + return this.fromWireType(ee[n >> 1]); + }; + case 4: + return t ? function(n) { + return this.fromWireType(D[n >> 2]); + } : function(n) { + return this.fromWireType(m[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Vt = (e, r, t, n) => { + r = S(r); + function i() { + } + i.values = {}, U(e, { + name: r, + constructor: i, + fromWireType: function(a) { + return this.constructor.values[a]; + }, + toWireType: (a, o) => o.value, + argPackAdvance: I, + readValueFromPointer: xt(r, t, n), + destructorFunction: null + }), Me(r, i); + }, Ve = (e, r) => { + var t = L[e]; + return t === void 0 && g(r + " has unknown type " + yr(e)), t; + }, Yt = (e, r, t) => { + var n = Ve(e, "enum"); + r = S(r); + var i = n.constructor, a = Object.create(n.constructor.prototype, { + value: { + value: t + }, + constructor: { + value: oe(`${n.name}_${r}`, function() { + }) + } + }); + i.values[t] = a, i[r] = a; + }, Ye = (e) => { + if (e === null) + return "null"; + var r = typeof e; + return r === "object" || r === "array" || r === "function" ? e.toString() : "" + e; + }, Bt = (e, r) => { + switch (r) { + case 4: + return function(t) { + return this.fromWireType(Ke[t >> 2]); + }; + case 8: + return function(t) { + return this.fromWireType(Qe[t >> 3]); + }; + default: + throw new TypeError(`invalid float width (${r}): ${e}`); + } + }, Lt = (e, r, t) => { + r = S(r), U(e, { + name: r, + fromWireType: (n) => n, + toWireType: (n, i) => i, + argPackAdvance: I, + readValueFromPointer: Bt(r, t), + destructorFunction: null + }); + }, Nt = (e, r, t, n, i, a, o) => { + var s = Ue(r, t); + e = S(e), e = mr(e), i = j(n, i), Me(e, function() { + we(`Cannot call ${e} due to unbound types`, s); + }, r - 1), N([], s, function(u) { + var f = [u[0], null].concat(u.slice(1)); + return pr(e, Ie(e, f, null, i, a), r - 1), []; + }); + }, zt = (e, r, t) => { + switch (r) { + case 1: + return t ? (n) => k[n >> 0] : (n) => O[n >> 0]; + case 2: + return t ? (n) => X[n >> 1] : (n) => ee[n >> 1]; + case 4: + return t ? (n) => D[n >> 2] : (n) => m[n >> 2]; + default: + throw new TypeError(`invalid integer width (${r}): ${e}`); + } + }, Xt = (e, r, t, n, i) => { + r = S(r); + var a = (v) => v; + if (n === 0) { + var o = 32 - 8 * t; + a = (v) => v << o >>> o; + } + var s = r.includes("unsigned"), u = (v, h) => { + }, f; + s ? f = function(v, h) { + return u(h, this.name), h >>> 0; + } : f = function(v, h) { + return u(h, this.name), h; + }, U(e, { + name: r, + fromWireType: a, + toWireType: f, + argPackAdvance: I, + readValueFromPointer: zt(r, t, n !== 0), + destructorFunction: null + }); + }, Gt = (e, r, t) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], i = n[r]; + function a(o) { + var s = m[o >> 2], u = m[o + 4 >> 2]; + return new i(k.buffer, u, s); + } + t = S(t), U(e, { + name: t, + fromWireType: a, + argPackAdvance: I, + readValueFromPointer: a + }, { + ignoreDuplicateRegistrations: !0 + }); + }, br = (e, r, t, n) => { + if (!(n > 0)) + return 0; + for (var i = t, a = t + n - 1, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (s <= 127) { + if (t >= a) + break; + r[t++] = s; + } else if (s <= 2047) { + if (t + 1 >= a) + break; + r[t++] = 192 | s >> 6, r[t++] = 128 | s & 63; + } else if (s <= 65535) { + if (t + 2 >= a) + break; + r[t++] = 224 | s >> 12, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } else { + if (t + 3 >= a) + break; + r[t++] = 240 | s >> 18, r[t++] = 128 | s >> 12 & 63, r[t++] = 128 | s >> 6 & 63, r[t++] = 128 | s & 63; + } + } + return r[t] = 0, t - i; + }, Zt = (e, r, t) => br(e, O, r, t), wr = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n <= 127 ? r++ : n <= 2047 ? r += 2 : n >= 55296 && n <= 57343 ? (r += 4, ++t) : r += 3; + } + return r; + }, Tr = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, qt = (e, r, t) => { + for (var n = r + t, i = r; e[i] && !(i >= n); ) + ++i; + if (i - r > 16 && e.buffer && Tr) + return Tr.decode(e.subarray(r, i)); + for (var a = ""; r < i; ) { + var o = e[r++]; + if (!(o & 128)) { + a += String.fromCharCode(o); + continue; + } + var s = e[r++] & 63; + if ((o & 224) == 192) { + a += String.fromCharCode((o & 31) << 6 | s); + continue; + } + var u = e[r++] & 63; + if ((o & 240) == 224 ? o = (o & 15) << 12 | s << 6 | u : o = (o & 7) << 18 | s << 12 | u << 6 | e[r++] & 63, o < 65536) + a += String.fromCharCode(o); + else { + var f = o - 65536; + a += String.fromCharCode(55296 | f >> 10, 56320 | f & 1023); + } + } + return a; + }, Be = (e, r) => e ? qt(O, e, r) : "", Jt = (e, r) => { + r = S(r); + var t = r === "std::string"; + U(e, { + name: r, + fromWireType(n) { + var i = m[n >> 2], a = n + 4, o; + if (t) + for (var s = a, u = 0; u <= i; ++u) { + var f = a + u; + if (u == i || O[f] == 0) { + var v = f - s, h = Be(s, v); + o === void 0 ? o = h : (o += "\0", o += h), s = f + 1; + } + } + else { + for (var p = new Array(i), u = 0; u < i; ++u) + p[u] = String.fromCharCode(O[a + u]); + o = p.join(""); + } + return Y(n), o; + }, + toWireType(n, i) { + i instanceof ArrayBuffer && (i = new Uint8Array(i)); + var a, o = typeof i == "string"; + o || i instanceof Uint8Array || i instanceof Uint8ClampedArray || i instanceof Int8Array || g("Cannot pass non-string to std::string"), t && o ? a = wr(i) : a = i.length; + var s = ze(4 + a + 1), u = s + 4; + if (m[s >> 2] = a, t && o) + Zt(i, u, a + 1); + else if (o) + for (var f = 0; f < a; ++f) { + var v = i.charCodeAt(f); + v > 255 && (Y(u), g("String has UTF-16 code units that do not fit in 8 bits")), O[u + f] = v; + } + else + for (var f = 0; f < a; ++f) + O[u + f] = i[f]; + return n !== null && n.push(Y, s), s; + }, + argPackAdvance: I, + readValueFromPointer: hr, + destructorFunction(n) { + Y(n); + } + }); + }, Pr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, Kt = (e, r) => { + for (var t = e, n = t >> 1, i = n + r / 2; !(n >= i) && ee[n]; ) + ++n; + if (t = n << 1, t - e > 32 && Pr) + return Pr.decode(O.subarray(e, t)); + for (var a = "", o = 0; !(o >= r / 2); ++o) { + var s = X[e + o * 2 >> 1]; + if (s == 0) + break; + a += String.fromCharCode(s); + } + return a; + }, Qt = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 2) + return 0; + t -= 2; + for (var i = r, a = t < e.length * 2 ? t / 2 : e.length, o = 0; o < a; ++o) { + var s = e.charCodeAt(o); + X[r >> 1] = s, r += 2; + } + return X[r >> 1] = 0, r - i; + }, en = (e) => e.length * 2, rn = (e, r) => { + for (var t = 0, n = ""; !(t >= r / 4); ) { + var i = D[e + t * 4 >> 2]; + if (i == 0) + break; + if (++t, i >= 65536) { + var a = i - 65536; + n += String.fromCharCode(55296 | a >> 10, 56320 | a & 1023); + } else + n += String.fromCharCode(i); + } + return n; + }, tn = (e, r, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 4) + return 0; + for (var i = r, a = i + t - 4, o = 0; o < e.length; ++o) { + var s = e.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var u = e.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | u & 1023; + } + if (D[r >> 2] = s, r += 4, r + 4 > a) + break; + } + return D[r >> 2] = 0, r - i; + }, nn = (e) => { + for (var r = 0, t = 0; t < e.length; ++t) { + var n = e.charCodeAt(t); + n >= 55296 && n <= 57343 && ++t, r += 4; + } + return r; + }, an = (e, r, t) => { + t = S(t); + var n, i, a, o, s; + r === 2 ? (n = Kt, i = Qt, o = en, a = () => ee, s = 1) : r === 4 && (n = rn, i = tn, o = nn, a = () => m, s = 2), U(e, { + name: t, + fromWireType: (u) => { + for (var f = m[u >> 2], v = a(), h, p = u + 4, _ = 0; _ <= f; ++_) { + var b = u + 4 + _ * r; + if (_ == f || v[b >> s] == 0) { + var C = b - p, y = n(p, C); + h === void 0 ? h = y : (h += "\0", h += y), p = b + r; + } + } + return Y(u), h; + }, + toWireType: (u, f) => { + typeof f != "string" && g(`Cannot pass non-string to C++ string type ${t}`); + var v = o(f), h = ze(4 + v + r); + return m[h >> 2] = v >> s, i(f, h + 4, v + r), u !== null && u.push(Y, h), h; + }, + argPackAdvance: I, + readValueFromPointer: Oe, + destructorFunction(u) { + Y(u); + } + }); + }, on = (e, r, t, n, i, a) => { + pe[e] = { + name: S(r), + rawConstructor: j(t, n), + rawDestructor: j(i, a), + fields: [] + }; + }, sn = (e, r, t, n, i, a, o, s, u, f) => { + pe[e].fields.push({ + fieldName: S(r), + getterReturnType: t, + getter: j(n, i), + getterContext: a, + setterArgumentType: o, + setter: j(s, u), + setterContext: f + }); + }, un = (e, r) => { + r = S(r), U(e, { + isVoid: !0, + name: r, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (t, n) => { + } + }); + }, Le = [], ln = (e, r, t, n) => (e = Le[e], r = V.toValue(r), e(null, r, t, n)), cn = {}, fn = (e) => { + var r = cn[e]; + return r === void 0 ? S(e) : r; + }, Cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(r) { + r.$$$embind_global$$$ = r; + var t = typeof $$$embind_global$$$ == "object" && r.$$$embind_global$$$ == r; + return t || delete r.$$$embind_global$$$, t; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, vn = (e) => e === 0 ? V.toHandle(Cr()) : (e = fn(e), V.toHandle(Cr()[e])), dn = (e) => { + var r = Le.length; + return Le.push(e), r; + }, hn = (e, r) => { + for (var t = new Array(e), n = 0; n < e; ++n) + t[n] = Ve(m[r + n * 4 >> 2], "parameter " + n); + return t; + }, pn = Reflect.construct, _n = (e, r, t) => { + var n = [], i = e.toWireType(n, t); + return n.length && (m[r >> 2] = V.toHandle(n)), i; + }, gn = (e, r, t) => { + var n = hn(e, r), i = n.shift(); + e--; + var a = new Array(e), o = (u, f, v, h) => { + for (var p = 0, _ = 0; _ < e; ++_) + a[_] = n[_].readValueFromPointer(h + p), p += n[_].argPackAdvance; + for (var b = t === 1 ? pn(f, a) : f.apply(u, a), _ = 0; _ < e; ++_) { + var C, y; + (C = (y = n[_]).deleteObject) === null || C === void 0 || C.call(y, a[_]); + } + return _n(i, v, b); + }, s = `methodCaller<(${n.map((u) => u.name).join(", ")}) => ${i.name}>`; + return dn(oe(s, o)); + }, yn = (e) => { + e > 4 && (W.get(e).refcount += 1); + }, mn = (e) => { + var r = V.toValue(e); + De(r), xe(e); + }, $n = (e, r) => { + e = Ve(e, "_emval_take_value"); + var t = e.readValueFromPointer(r); + return V.toHandle(t); + }, bn = () => { + ve(""); + }, wn = (e, r, t) => O.copyWithin(e, r, r + t), Tn = () => 2147483648, Pn = (e) => { + var r = fe.buffer, t = (e - r.byteLength + 65535) / 65536; + try { + return fe.grow(t), er(), 1; + } catch { + } + }, Cn = (e) => { + var r = O.length; + e >>>= 0; + var t = Tn(); + if (e > t) + return !1; + for (var n = (u, f) => u + (f - u % f) % f, i = 1; i <= 4; i *= 2) { + var a = r * (1 + 0.2 / i); + a = Math.min(a, e + 100663296); + var o = Math.min(t, n(Math.max(e, a), 65536)), s = Pn(o); + if (s) + return !0; + } + return !1; + }, Ne = {}, An = () => Ze || "./this.program", se = () => { + if (!se.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", r = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: An() + }; + for (var t in Ne) + Ne[t] === void 0 ? delete r[t] : r[t] = Ne[t]; + var n = []; + for (var t in r) + n.push(`${t}=${r[t]}`); + se.strings = n; + } + return se.strings; + }, Fn = (e, r) => { + for (var t = 0; t < e.length; ++t) + k[r++ >> 0] = e.charCodeAt(t); + k[r >> 0] = 0; + }, En = (e, r) => { + var t = 0; + return se().forEach((n, i) => { + var a = r + t; + m[e + i * 4 >> 2] = a, Fn(n, a), t += n.length + 1; + }), 0; + }, Sn = (e, r) => { + var t = se(); + m[e >> 2] = t.length; + var n = 0; + return t.forEach((i) => n += i.length + 1), m[r >> 2] = n, 0; + }, Rn = (e) => e, Te = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Dn = (e, r) => { + for (var t = 0, n = 0; n <= r; t += e[n++]) + ; + return t; + }, Ar = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Fr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], On = (e, r) => { + for (var t = new Date(e.getTime()); r > 0; ) { + var n = Te(t.getFullYear()), i = t.getMonth(), a = (n ? Ar : Fr)[i]; + if (r > a - t.getDate()) + r -= a - t.getDate() + 1, t.setDate(1), i < 11 ? t.setMonth(i + 1) : (t.setMonth(0), t.setFullYear(t.getFullYear() + 1)); + else + return t.setDate(t.getDate() + r), t; + } + return t; + }; + function Wn(e, r, t) { + var n = t > 0 ? t : wr(e) + 1, i = new Array(n), a = br(e, i, 0, i.length); + return r && (i.length = a), i; + } + var kn = (e, r) => { + k.set(e, r); + }, jn = (e, r, t, n) => { + var i = m[n + 40 >> 2], a = { + tm_sec: D[n >> 2], + tm_min: D[n + 4 >> 2], + tm_hour: D[n + 8 >> 2], + tm_mday: D[n + 12 >> 2], + tm_mon: D[n + 16 >> 2], + tm_year: D[n + 20 >> 2], + tm_wday: D[n + 24 >> 2], + tm_yday: D[n + 28 >> 2], + tm_isdst: D[n + 32 >> 2], + tm_gmtoff: D[n + 36 >> 2], + tm_zone: i ? Be(i) : "" + }, o = Be(t), s = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var u in s) + o = o.replace(new RegExp(u, "g"), s[u]); + var f = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], v = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function h(c, d, A) { + for (var E = typeof c == "number" ? c.toString() : c || ""; E.length < d; ) + E = A[0] + E; + return E; + } + function p(c, d) { + return h(c, d, "0"); + } + function _(c, d) { + function A(J) { + return J < 0 ? -1 : J > 0 ? 1 : 0; + } + var E; + return (E = A(c.getFullYear() - d.getFullYear())) === 0 && (E = A(c.getMonth() - d.getMonth())) === 0 && (E = A(c.getDate() - d.getDate())), E; + } + function b(c) { + switch (c.getDay()) { + case 0: + return new Date(c.getFullYear() - 1, 11, 29); + case 1: + return c; + case 2: + return new Date(c.getFullYear(), 0, 3); + case 3: + return new Date(c.getFullYear(), 0, 2); + case 4: + return new Date(c.getFullYear(), 0, 1); + case 5: + return new Date(c.getFullYear() - 1, 11, 31); + case 6: + return new Date(c.getFullYear() - 1, 11, 30); + } + } + function C(c) { + var d = On(new Date(c.tm_year + 1900, 0, 1), c.tm_yday), A = new Date(d.getFullYear(), 0, 4), E = new Date(d.getFullYear() + 1, 0, 4), J = b(A), Ce = b(E); + return _(J, d) <= 0 ? _(Ce, d) <= 0 ? d.getFullYear() + 1 : d.getFullYear() : d.getFullYear() - 1; + } + var y = { + "%a": (c) => f[c.tm_wday].substring(0, 3), + "%A": (c) => f[c.tm_wday], + "%b": (c) => v[c.tm_mon].substring(0, 3), + "%B": (c) => v[c.tm_mon], + "%C": (c) => { + var d = c.tm_year + 1900; + return p(d / 100 | 0, 2); + }, + "%d": (c) => p(c.tm_mday, 2), + "%e": (c) => h(c.tm_mday, 2, " "), + "%g": (c) => C(c).toString().substring(2), + "%G": (c) => C(c), + "%H": (c) => p(c.tm_hour, 2), + "%I": (c) => { + var d = c.tm_hour; + return d == 0 ? d = 12 : d > 12 && (d -= 12), p(d, 2); + }, + "%j": (c) => p(c.tm_mday + Dn(Te(c.tm_year + 1900) ? Ar : Fr, c.tm_mon - 1), 3), + "%m": (c) => p(c.tm_mon + 1, 2), + "%M": (c) => p(c.tm_min, 2), + "%n": () => ` +`, + "%p": (c) => c.tm_hour >= 0 && c.tm_hour < 12 ? "AM" : "PM", + "%S": (c) => p(c.tm_sec, 2), + "%t": () => " ", + "%u": (c) => c.tm_wday || 7, + "%U": (c) => { + var d = c.tm_yday + 7 - c.tm_wday; + return p(Math.floor(d / 7), 2); + }, + "%V": (c) => { + var d = Math.floor((c.tm_yday + 7 - (c.tm_wday + 6) % 7) / 7); + if ((c.tm_wday + 371 - c.tm_yday - 2) % 7 <= 2 && d++, d) { + if (d == 53) { + var E = (c.tm_wday + 371 - c.tm_yday) % 7; + E != 4 && (E != 3 || !Te(c.tm_year)) && (d = 1); + } + } else { + d = 52; + var A = (c.tm_wday + 7 - c.tm_yday - 1) % 7; + (A == 4 || A == 5 && Te(c.tm_year % 400 - 1)) && d++; + } + return p(d, 2); + }, + "%w": (c) => c.tm_wday, + "%W": (c) => { + var d = c.tm_yday + 7 - (c.tm_wday + 6) % 7; + return p(Math.floor(d / 7), 2); + }, + "%y": (c) => (c.tm_year + 1900).toString().substring(2), + "%Y": (c) => c.tm_year + 1900, + "%z": (c) => { + var d = c.tm_gmtoff, A = d >= 0; + return d = Math.abs(d) / 60, d = d / 60 * 100 + d % 60, (A ? "+" : "-") + ("0000" + d).slice(-4); + }, + "%Z": (c) => c.tm_zone, + "%%": () => "%" + }; + o = o.replace(/%%/g, "\0\0"); + for (var u in y) + o.includes(u) && (o = o.replace(new RegExp(u, "g"), y[u](a))); + o = o.replace(/\0\0/g, "%"); + var R = Wn(o, !1); + return R.length > r ? 0 : (kn(R, e), R.length - 1); + }, Mn = (e, r, t, n, i) => jn(e, r, t, n); + sr = l.InternalError = class extends Error { + constructor(r) { + super(r), this.name = "InternalError"; + } + }, st(), q = l.BindingError = class extends Error { + constructor(r) { + super(r), this.name = "BindingError"; + } + }, mt(), pt(), Ft(), gr = l.UnboundTypeError = Dt(Error, "UnboundTypeError"), Mt(), Ut(); + var Hn = { + s: qr, + u: Jr, + b: Qr, + g: et, + q: rt, + J: tt, + f: nt, + V: it, + d: Kr, + da: at, + Q: ot, + _: lt, + ca: Ot, + ba: kt, + w: jt, + Y: It, + x: Vt, + h: Yt, + L: Lt, + M: Nt, + t: Xt, + o: Gt, + K: Jt, + C: an, + A: on, + ea: sn, + $: un, + R: ln, + ha: xe, + fa: vn, + Z: gn, + N: yn, + O: mn, + aa: $n, + B: bn, + X: wn, + W: Cn, + T: En, + U: Sn, + E: Qn, + D: Yn, + F: Kn, + n: ei, + a: Un, + e: Ln, + m: Vn, + k: zn, + H: qn, + v: Gn, + G: Jn, + z: ti, + P: ii, + l: Nn, + j: Bn, + c: xn, + p: In, + I: Zn, + r: ri, + i: Xn, + y: ni, + ga: Rn, + S: Mn + }, F = Zr(), Y = l._free = (e) => (Y = l._free = F.ka)(e), ze = l._malloc = (e) => (ze = l._malloc = F.la)(e), Er = (e) => (Er = F.na)(e), $ = (e, r) => ($ = F.oa)(e, r), ue = (e) => (ue = F.pa)(e), T = () => (T = F.qa)(), P = (e) => (P = F.ra)(e), Sr = (e) => (Sr = F.sa)(e), Rr = (e) => (Rr = F.ta)(e), Dr = (e, r, t) => (Dr = F.ua)(e, r, t), Or = (e) => (Or = F.va)(e); + l.dynCall_viijii = (e, r, t, n, i, a, o) => (l.dynCall_viijii = F.wa)(e, r, t, n, i, a, o); + var Wr = l.dynCall_jiiii = (e, r, t, n, i) => (Wr = l.dynCall_jiiii = F.xa)(e, r, t, n, i); + l.dynCall_iiiiij = (e, r, t, n, i, a, o) => (l.dynCall_iiiiij = F.ya)(e, r, t, n, i, a, o), l.dynCall_iiiiijj = (e, r, t, n, i, a, o, s, u) => (l.dynCall_iiiiijj = F.za)(e, r, t, n, i, a, o, s, u), l.dynCall_iiiiiijj = (e, r, t, n, i, a, o, s, u, f) => (l.dynCall_iiiiiijj = F.Aa)(e, r, t, n, i, a, o, s, u, f); + function Un(e, r) { + var t = T(); + try { + return w(e)(r); + } catch (n) { + if (P(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function In(e, r, t, n) { + var i = T(); + try { + w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function xn(e, r, t) { + var n = T(); + try { + w(e)(r, t); + } catch (i) { + if (P(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Vn(e, r, t, n) { + var i = T(); + try { + return w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function Yn(e, r, t, n, i) { + var a = T(); + try { + return w(e)(r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Bn(e, r) { + var t = T(); + try { + w(e)(r); + } catch (n) { + if (P(t), n !== n + 0) + throw n; + $(1, 0); + } + } + function Ln(e, r, t) { + var n = T(); + try { + return w(e)(r, t); + } catch (i) { + if (P(n), i !== i + 0) + throw i; + $(1, 0); + } + } + function Nn(e) { + var r = T(); + try { + w(e)(); + } catch (t) { + if (P(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function zn(e, r, t, n, i) { + var a = T(); + try { + return w(e)(r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function Xn(e, r, t, n, i, a, o, s, u, f, v) { + var h = T(); + try { + w(e)(r, t, n, i, a, o, s, u, f, v); + } catch (p) { + if (P(h), p !== p + 0) + throw p; + $(1, 0); + } + } + function Gn(e, r, t, n, i, a, o) { + var s = T(); + try { + return w(e)(r, t, n, i, a, o); + } catch (u) { + if (P(s), u !== u + 0) + throw u; + $(1, 0); + } + } + function Zn(e, r, t, n, i) { + var a = T(); + try { + w(e)(r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + function qn(e, r, t, n, i, a) { + var o = T(); + try { + return w(e)(r, t, n, i, a); + } catch (s) { + if (P(o), s !== s + 0) + throw s; + $(1, 0); + } + } + function Jn(e, r, t, n, i, a, o, s) { + var u = T(); + try { + return w(e)(r, t, n, i, a, o, s); + } catch (f) { + if (P(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function Kn(e, r, t, n) { + var i = T(); + try { + return w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function Qn(e, r, t, n) { + var i = T(); + try { + return w(e)(r, t, n); + } catch (a) { + if (P(i), a !== a + 0) + throw a; + $(1, 0); + } + } + function ei(e) { + var r = T(); + try { + return w(e)(); + } catch (t) { + if (P(r), t !== t + 0) + throw t; + $(1, 0); + } + } + function ri(e, r, t, n, i, a, o, s) { + var u = T(); + try { + w(e)(r, t, n, i, a, o, s); + } catch (f) { + if (P(u), f !== f + 0) + throw f; + $(1, 0); + } + } + function ti(e, r, t, n, i, a, o, s, u, f, v, h) { + var p = T(); + try { + return w(e)(r, t, n, i, a, o, s, u, f, v, h); + } catch (_) { + if (P(p), _ !== _ + 0) + throw _; + $(1, 0); + } + } + function ni(e, r, t, n, i, a, o, s, u, f, v, h, p, _, b, C) { + var y = T(); + try { + w(e)(r, t, n, i, a, o, s, u, f, v, h, p, _, b, C); + } catch (R) { + if (P(y), R !== R + 0) + throw R; + $(1, 0); + } + } + function ii(e, r, t, n, i) { + var a = T(); + try { + return Wr(e, r, t, n, i); + } catch (o) { + if (P(a), o !== o + 0) + throw o; + $(1, 0); + } + } + var Pe; + re = function e() { + Pe || kr(), Pe || (re = e); + }; + function kr() { + if (B > 0 || (Ur(), B > 0)) + return; + function e() { + Pe || (Pe = !0, l.calledRun = !0, !Je && (Ir(), Xe(l), l.onRuntimeInitialized && l.onRuntimeInitialized(), xr())); + } + l.setStatus ? (l.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + l.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (l.preInit) + for (typeof l.preInit == "function" && (l.preInit = [l.preInit]); l.preInit.length > 0; ) + l.preInit.pop()(); + return kr(), z.ready; + }; +})(); +function vi(M) { + return ai( + Ae, + M + ); +} +function di(M) { + return oi( + Ae, + M + ); +} +async function hi(M, z) { + return si( + Ae, + M, + z + ); +} +async function pi(M, z) { + return ui( + Ae, + M, + z + ); +} +export { + yi as barcodeFormats, + mi as binarizers, + $i as characterSets, + bi as contentTypes, + wi as defaultDecodeHints, + Ti as defaultReaderOptions, + Pi as eanAddOnSymbols, + vi as getZXingModule, + Ci as purgeZXingModule, + pi as readBarcodesFromImageData, + hi as readBarcodesFromImageFile, + Ai as readOutputEccLevels, + di as setZXingModuleOverrides, + Fi as textModes +}; diff --git a/node_modules/zxing-wasm/dist/es/writer/index.d.ts b/node_modules/zxing-wasm/dist/es/writer/index.d.ts new file mode 100644 index 0000000..19b6103 --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/writer/index.d.ts @@ -0,0 +1,13 @@ +/** + * The writer part API of this package is subject to change a lot. + * Please track the status of [this issue](https://github.com/zxing-cpp/zxing-cpp/issues/332). + * + * @packageDocumentation + */ +import { type ZXingWriterModule, type ZXingModuleOverrides } from "../core.js"; +import type { WriterOptions } from "../bindings/index.js"; +export declare function getZXingModule(zxingModuleOverrides?: ZXingModuleOverrides): Promise; +export declare function setZXingModuleOverrides(zxingModuleOverrides: ZXingModuleOverrides): void; +export declare function writeBarcodeToImageFile(text: string, writerOptions?: WriterOptions): Promise; +export * from "../bindings/exposedWriterBindings.js"; +export { purgeZXingModule, type ZXingWriterModule, type ZXingModuleOverrides, } from "../core.js"; diff --git a/node_modules/zxing-wasm/dist/es/writer/index.js b/node_modules/zxing-wasm/dist/es/writer/index.js new file mode 100644 index 0000000..b33a31e --- /dev/null +++ b/node_modules/zxing-wasm/dist/es/writer/index.js @@ -0,0 +1,1096 @@ +import { g as Ht, s as Vt, w as Bt } from "../core-gSM15mHH.js"; +import { b as Jt, e as Qt, j as Yt, j as rn, p as en, k as tn } from "../core-gSM15mHH.js"; +var gr = (() => { + var S = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(z = {}) { + var u = z, yr, J; + u.ready = new Promise((r, e) => { + yr = r, J = e; + }); + var mr = Object.assign({}, u), br = typeof window == "object", Q = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var R = ""; + function Qr(r) { + return u.locateFile ? u.locateFile(r, R) : R + r; + } + var or; + (br || Q) && (Q ? R = self.location.href : typeof document < "u" && document.currentScript && (R = document.currentScript.src), S && (R = S), R.indexOf("blob:") !== 0 ? R = R.substr(0, R.replace(/[?#].*/, "").lastIndexOf("/") + 1) : R = "", Q && (or = (r) => { + var e = new XMLHttpRequest(); + return e.open("GET", r, !1), e.responseType = "arraybuffer", e.send(null), new Uint8Array(e.response); + })), u.print || console.log.bind(console); + var N = u.printErr || console.error.bind(console); + Object.assign(u, mr), mr = null, u.arguments && u.arguments, u.thisProgram && u.thisProgram, u.quit && u.quit; + var X; + u.wasmBinary && (X = u.wasmBinary), typeof WebAssembly != "object" && sr("no native wasm support detected"); + var Y, wr = !1, U, y, O, L, j, _, Tr, $r; + function Ar() { + var r = Y.buffer; + u.HEAP8 = U = new Int8Array(r), u.HEAP16 = O = new Int16Array(r), u.HEAPU8 = y = new Uint8Array(r), u.HEAPU16 = L = new Uint16Array(r), u.HEAP32 = j = new Int32Array(r), u.HEAPU32 = _ = new Uint32Array(r), u.HEAPF32 = Tr = new Float32Array(r), u.HEAPF64 = $r = new Float64Array(r); + } + var Er = [], Cr = [], Rr = []; + function Yr() { + if (u.preRun) + for (typeof u.preRun == "function" && (u.preRun = [u.preRun]); u.preRun.length; ) + te(u.preRun.shift()); + ur(Er); + } + function re() { + ur(Cr); + } + function ee() { + if (u.postRun) + for (typeof u.postRun == "function" && (u.postRun = [u.postRun]); u.postRun.length; ) + ae(u.postRun.shift()); + ur(Rr); + } + function te(r) { + Er.unshift(r); + } + function ne(r) { + Cr.unshift(r); + } + function ae(r) { + Rr.unshift(r); + } + var x = 0, Z = null; + function ie(r) { + var e; + x++, (e = u.monitorRunDependencies) === null || e === void 0 || e.call(u, x); + } + function oe(r) { + var e; + if (x--, (e = u.monitorRunDependencies) === null || e === void 0 || e.call(u, x), x == 0 && Z) { + var t = Z; + Z = null, t(); + } + } + function sr(r) { + var e; + (e = u.onAbort) === null || e === void 0 || e.call(u, r), r = "Aborted(" + r + ")", N(r), wr = !0, r += ". Build with -sASSERTIONS for more info."; + var t = new WebAssembly.RuntimeError(r); + throw J(t), t; + } + var se = "data:application/octet-stream;base64,", Fr = (r) => r.startsWith(se), H; + H = "zxing_writer.wasm", Fr(H) || (H = Qr(H)); + function Pr(r) { + if (r == H && X) + return new Uint8Array(X); + if (or) + return or(r); + throw "both async and sync fetching of the wasm failed"; + } + function ue(r) { + return !X && (br || Q) && typeof fetch == "function" ? fetch(r, { + credentials: "same-origin" + }).then((e) => { + if (!e.ok) + throw "failed to load wasm binary file at '" + r + "'"; + return e.arrayBuffer(); + }).catch(() => Pr(r)) : Promise.resolve().then(() => Pr(r)); + } + function Wr(r, e, t) { + return ue(r).then((n) => WebAssembly.instantiate(n, e)).then((n) => n).then(t, (n) => { + N(`failed to asynchronously prepare wasm: ${n}`), sr(n); + }); + } + function fe(r, e, t, n) { + return !r && typeof WebAssembly.instantiateStreaming == "function" && !Fr(e) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((a) => { + var i = WebAssembly.instantiateStreaming(a, t); + return i.then(n, function(o) { + return N(`wasm streaming compile failed: ${o}`), N("falling back to ArrayBuffer instantiation"), Wr(e, t, n); + }); + }) : Wr(e, t, n); + } + function ce() { + var r = { + a: Rt + }; + function e(n, a) { + return g = n.exports, Y = g.R, Ar(), Vr = g.V, ne(g.S), oe(), g; + } + ie(); + function t(n) { + e(n.instance); + } + if (u.instantiateWasm) + try { + return u.instantiateWasm(r, e); + } catch (n) { + N(`Module.instantiateWasm callback failed with error: ${n}`), J(n); + } + return fe(X, H, r, t).catch(J), {}; + } + var ur = (r) => { + for (; r.length > 0; ) + r.shift()(u); + }; + u.noExitRuntime; + var kr = [], le = (r) => { + var e = new fr(r); + return e.get_caught() || e.set_caught(!0), e.set_rethrown(!1), kr.push(e), Gr(e.excPtr), e.get_exception_ptr(); + }, M = 0, ve = () => { + T(0, 0); + var r = kr.pop(); + qr(r.excPtr), M = 0; + }; + function fr(r) { + this.excPtr = r, this.ptr = r - 24, this.set_type = function(e) { + _[this.ptr + 4 >> 2] = e; + }, this.get_type = function() { + return _[this.ptr + 4 >> 2]; + }, this.set_destructor = function(e) { + _[this.ptr + 8 >> 2] = e; + }, this.get_destructor = function() { + return _[this.ptr + 8 >> 2]; + }, this.set_caught = function(e) { + e = e ? 1 : 0, U[this.ptr + 12 >> 0] = e; + }, this.get_caught = function() { + return U[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(e) { + e = e ? 1 : 0, U[this.ptr + 13 >> 0] = e; + }, this.get_rethrown = function() { + return U[this.ptr + 13 >> 0] != 0; + }, this.init = function(e, t) { + this.set_adjusted_ptr(0), this.set_type(e), this.set_destructor(t); + }, this.set_adjusted_ptr = function(e) { + _[this.ptr + 16 >> 2] = e; + }, this.get_adjusted_ptr = function() { + return _[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var e = zr(this.get_type()); + if (e) + return _[this.excPtr >> 2]; + var t = this.get_adjusted_ptr(); + return t !== 0 ? t : this.excPtr; + }; + } + var de = (r) => { + throw M || (M = r), M; + }, cr = (r) => { + var e = M; + if (!e) + return G(0), 0; + var t = new fr(e); + t.set_adjusted_ptr(e); + var n = t.get_type(); + if (!n) + return G(0), e; + for (var a in r) { + var i = r[a]; + if (i === 0 || i === n) + break; + var o = t.ptr + 16; + if (Kr(i, n, o)) + return G(i), e; + } + return G(n), e; + }, _e = () => cr([]), he = (r) => cr([r]), pe = (r, e) => cr([r, e]), ge = (r, e, t) => { + var n = new fr(r); + throw n.init(e, t), M = r, M; + }, rr = {}, lr = (r) => { + for (; r.length; ) { + var e = r.pop(), t = r.pop(); + t(e); + } + }; + function vr(r) { + return this.fromWireType(j[r >> 2]); + } + var V = {}, D = {}, er = {}, Sr, Ur = (r) => { + throw new Sr(r); + }, jr = (r, e, t) => { + r.forEach(function(s) { + er[s] = e; + }); + function n(s) { + var f = t(s); + f.length !== r.length && Ur("Mismatched type converter count"); + for (var c = 0; c < r.length; ++c) + F(r[c], f[c]); + } + var a = new Array(e.length), i = [], o = 0; + e.forEach((s, f) => { + D.hasOwnProperty(s) ? a[f] = D[s] : (i.push(s), V.hasOwnProperty(s) || (V[s] = []), V[s].push(() => { + a[f] = D[s], ++o, o === i.length && n(a); + })); + }), i.length === 0 && n(a); + }, ye = (r) => { + var e = rr[r]; + delete rr[r]; + var t = e.rawConstructor, n = e.rawDestructor, a = e.fields, i = a.map((o) => o.getterReturnType).concat(a.map((o) => o.setterArgumentType)); + jr([r], i, (o) => { + var s = {}; + return a.forEach((f, c) => { + var l = f.fieldName, v = o[c], h = f.getter, d = f.getterContext, k = o[c + a.length], C = f.setter, m = f.setterContext; + s[l] = { + read: (K) => v.fromWireType(h(d, K)), + write: (K, pr) => { + var ir = []; + C(m, K, k.toWireType(ir, pr)), lr(ir); + } + }; + }), [{ + name: e.name, + fromWireType: (f) => { + var c = {}; + for (var l in s) + c[l] = s[l].read(f); + return n(f), c; + }, + toWireType: (f, c) => { + for (var l in s) + if (!(l in c)) + throw new TypeError(`Missing field: "${l}"`); + var v = t(); + for (l in s) + s[l].write(v, c[l]); + return f !== null && f.push(n, v), v; + }, + argPackAdvance: P, + readValueFromPointer: vr, + destructorFunction: n + }]; + }); + }, me = (r, e, t, n, a) => { + }, be = () => { + for (var r = new Array(256), e = 0; e < 256; ++e) + r[e] = String.fromCharCode(e); + xr = r; + }, xr, p = (r) => { + for (var e = "", t = r; y[t]; ) + e += xr[y[t++]]; + return e; + }, Mr, b = (r) => { + throw new Mr(r); + }; + function we(r, e) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var n = e.name; + if (r || b(`type "${n}" must have a positive integer typeid pointer`), D.hasOwnProperty(r)) { + if (t.ignoreDuplicateRegistrations) + return; + b(`Cannot register type '${n}' twice`); + } + if (D[r] = e, delete er[r], V.hasOwnProperty(r)) { + var a = V[r]; + delete V[r], a.forEach((i) => i()); + } + } + function F(r, e) { + let t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in e)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return we(r, e, t); + } + var P = 8, Te = (r, e, t, n) => { + e = p(e), F(r, { + name: e, + fromWireType: function(a) { + return !!a; + }, + toWireType: function(a, i) { + return i ? t : n; + }, + argPackAdvance: P, + readValueFromPointer: function(a) { + return this.fromWireType(y[a]); + }, + destructorFunction: null + }); + }; + function $e() { + Object.assign(Dr.prototype, { + get(r) { + return this.allocated[r]; + }, + has(r) { + return this.allocated[r] !== void 0; + }, + allocate(r) { + var e = this.freelist.pop() || this.allocated.length; + return this.allocated[e] = r, e; + }, + free(r) { + this.allocated[r] = void 0, this.freelist.push(r); + } + }); + } + function Dr() { + this.allocated = [void 0], this.freelist = []; + } + var $ = new Dr(), dr = (r) => { + r >= $.reserved && --$.get(r).refcount === 0 && $.free(r); + }, Ae = () => { + for (var r = 0, e = $.reserved; e < $.allocated.length; ++e) + $.allocated[e] !== void 0 && ++r; + return r; + }, Ee = () => { + $.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: !0 + }, { + value: !1 + }), $.reserved = $.allocated.length, u.count_emval_handles = Ae; + }, I = { + toValue: (r) => (r || b("Cannot use deleted val. handle = " + r), $.get(r).value), + toHandle: (r) => { + switch (r) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + return $.allocate({ + refcount: 1, + value: r + }); + } + } + }, Ce = (r, e) => { + e = p(e), F(r, { + name: e, + fromWireType: (t) => { + var n = I.toValue(t); + return dr(t), n; + }, + toWireType: (t, n) => I.toHandle(n), + argPackAdvance: P, + readValueFromPointer: vr, + destructorFunction: null + }); + }, Re = (r, e, t) => { + if (r[e].overloadTable === void 0) { + var n = r[e]; + r[e] = function() { + return r[e].overloadTable.hasOwnProperty(arguments.length) || b(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${r[e].overloadTable})!`), r[e].overloadTable[arguments.length].apply(this, arguments); + }, r[e].overloadTable = [], r[e].overloadTable[n.argCount] = n; + } + }, Ir = (r, e, t) => { + u.hasOwnProperty(r) ? ((t === void 0 || u[r].overloadTable !== void 0 && u[r].overloadTable[t] !== void 0) && b(`Cannot register public name '${r}' twice`), Re(u, r, r), u.hasOwnProperty(t) && b(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`), u[r].overloadTable[t] = e) : (u[r] = e, t !== void 0 && (u[r].numArguments = t)); + }, Fe = (r, e, t) => { + switch (e) { + case 1: + return t ? function(n) { + return this.fromWireType(U[n >> 0]); + } : function(n) { + return this.fromWireType(y[n >> 0]); + }; + case 2: + return t ? function(n) { + return this.fromWireType(O[n >> 1]); + } : function(n) { + return this.fromWireType(L[n >> 1]); + }; + case 4: + return t ? function(n) { + return this.fromWireType(j[n >> 2]); + } : function(n) { + return this.fromWireType(_[n >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${e}): ${r}`); + } + }, Pe = (r, e, t, n) => { + e = p(e); + function a() { + } + a.values = {}, F(r, { + name: e, + constructor: a, + fromWireType: function(i) { + return this.constructor.values[i]; + }, + toWireType: (i, o) => o.value, + argPackAdvance: P, + readValueFromPointer: Fe(e, t, n), + destructorFunction: null + }), Ir(e, a); + }, tr = (r, e) => Object.defineProperty(e, "name", { + value: r + }), Or = (r) => { + var e = Zr(r), t = p(e); + return W(e), t; + }, Hr = (r, e) => { + var t = D[r]; + return t === void 0 && b(e + " has unknown type " + Or(r)), t; + }, We = (r, e, t) => { + var n = Hr(r, "enum"); + e = p(e); + var a = n.constructor, i = Object.create(n.constructor.prototype, { + value: { + value: t + }, + constructor: { + value: tr(`${n.name}_${e}`, function() { + }) + } + }); + a.values[t] = i, a[e] = i; + }, ke = (r, e) => { + switch (e) { + case 4: + return function(t) { + return this.fromWireType(Tr[t >> 2]); + }; + case 8: + return function(t) { + return this.fromWireType($r[t >> 3]); + }; + default: + throw new TypeError(`invalid float width (${e}): ${r}`); + } + }, Se = (r, e, t) => { + e = p(e), F(r, { + name: e, + fromWireType: (n) => n, + toWireType: (n, a) => a, + argPackAdvance: P, + readValueFromPointer: ke(e, t), + destructorFunction: null + }); + }; + function Ue(r) { + for (var e = 1; e < r.length; ++e) + if (r[e] !== null && r[e].destructorFunction === void 0) + return !0; + return !1; + } + function je(r, e, t, n, a, i) { + var o = e.length; + o < 2 && b("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var s = e[1] !== null && t !== null, f = Ue(e), c = e[0].name !== "void", l = o - 2, v = new Array(l), h = [], d = [], k = function() { + arguments.length !== l && b(`function ${r} called with ${arguments.length} arguments, expected ${l}`), d.length = 0; + var C; + h.length = s ? 2 : 1, h[0] = a, s && (C = e[1].toWireType(d, this), h[1] = C); + for (var m = 0; m < l; ++m) + v[m] = e[m + 2].toWireType(d, arguments[m]), h.push(v[m]); + var K = n.apply(null, h); + function pr(ir) { + if (f) + lr(d); + else + for (var B = s ? 1 : 2; B < e.length; B++) { + var Ot = B === 1 ? C : v[B - 2]; + e[B].destructorFunction !== null && e[B].destructorFunction(Ot); + } + if (c) + return e[0].fromWireType(ir); + } + return pr(K); + }; + return tr(r, k); + } + var xe = (r, e) => { + for (var t = [], n = 0; n < r; n++) + t.push(_[e + n * 4 >> 2]); + return t; + }, Me = (r, e, t) => { + u.hasOwnProperty(r) || Ur("Replacing nonexistant public symbol"), u[r].overloadTable !== void 0 && t !== void 0 ? u[r].overloadTable[t] = e : (u[r] = e, u[r].argCount = t); + }, De = (r, e, t) => { + var n = u["dynCall_" + r]; + return t && t.length ? n.apply(null, [e].concat(t)) : n.call(null, e); + }, nr = [], Vr, w = (r) => { + var e = nr[r]; + return e || (r >= nr.length && (nr.length = r + 1), nr[r] = e = Vr.get(r)), e; + }, Ie = (r, e, t) => { + if (r.includes("j")) + return De(r, e, t); + var n = w(e).apply(null, t); + return n; + }, Oe = (r, e) => { + var t = []; + return function() { + return t.length = 0, Object.assign(t, arguments), Ie(r, e, t); + }; + }, q = (r, e) => { + r = p(r); + function t() { + return r.includes("j") ? Oe(r, e) : w(e); + } + var n = t(); + return typeof n != "function" && b(`unknown function pointer with signature ${r}: ${e}`), n; + }, He = (r, e) => { + var t = tr(e, function(n) { + this.name = e, this.message = n; + var a = new Error(n).stack; + a !== void 0 && (this.stack = this.toString() + ` +` + a.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return t.prototype = Object.create(r.prototype), t.prototype.constructor = t, t.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, t; + }, Br, Ve = (r, e) => { + var t = [], n = {}; + function a(i) { + if (!n[i] && !D[i]) { + if (er[i]) { + er[i].forEach(a); + return; + } + t.push(i), n[i] = !0; + } + } + throw e.forEach(a), new Br(`${r}: ` + t.map(Or).join([", "])); + }, Be = (r) => { + r = r.trim(); + const e = r.indexOf("("); + return e !== -1 ? r.substr(0, e) : r; + }, Ne = (r, e, t, n, a, i, o) => { + var s = xe(e, t); + r = p(r), r = Be(r), a = q(n, a), Ir(r, function() { + Ve(`Cannot call ${r} due to unbound types`, s); + }, e - 1), jr([], s, function(f) { + var c = [f[0], null].concat(f.slice(1)); + return Me(r, je(r, c, null, a, i), e - 1), []; + }); + }, Xe = (r, e, t) => { + switch (e) { + case 1: + return t ? (n) => U[n >> 0] : (n) => y[n >> 0]; + case 2: + return t ? (n) => O[n >> 1] : (n) => L[n >> 1]; + case 4: + return t ? (n) => j[n >> 2] : (n) => _[n >> 2]; + default: + throw new TypeError(`invalid integer width (${e}): ${r}`); + } + }, Le = (r, e, t, n, a) => { + e = p(e); + var i = (l) => l; + if (n === 0) { + var o = 32 - 8 * t; + i = (l) => l << o >>> o; + } + var s = e.includes("unsigned"), f = (l, v) => { + }, c; + s ? c = function(l, v) { + return f(v, this.name), v >>> 0; + } : c = function(l, v) { + return f(v, this.name), v; + }, F(r, { + name: e, + fromWireType: i, + toWireType: c, + argPackAdvance: P, + readValueFromPointer: Xe(e, t, n !== 0), + destructorFunction: null + }); + }, Ze = (r, e, t) => { + var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], a = n[e]; + function i(o) { + var s = _[o >> 2], f = _[o + 4 >> 2]; + return new a(U.buffer, f, s); + } + t = p(t), F(r, { + name: t, + fromWireType: i, + argPackAdvance: P, + readValueFromPointer: i + }, { + ignoreDuplicateRegistrations: !0 + }); + }; + function qe(r) { + return this.fromWireType(_[r >> 2]); + } + var Ge = (r, e, t, n) => { + if (!(n > 0)) + return 0; + for (var a = t, i = t + n - 1, o = 0; o < r.length; ++o) { + var s = r.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var f = r.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | f & 1023; + } + if (s <= 127) { + if (t >= i) + break; + e[t++] = s; + } else if (s <= 2047) { + if (t + 1 >= i) + break; + e[t++] = 192 | s >> 6, e[t++] = 128 | s & 63; + } else if (s <= 65535) { + if (t + 2 >= i) + break; + e[t++] = 224 | s >> 12, e[t++] = 128 | s >> 6 & 63, e[t++] = 128 | s & 63; + } else { + if (t + 3 >= i) + break; + e[t++] = 240 | s >> 18, e[t++] = 128 | s >> 12 & 63, e[t++] = 128 | s >> 6 & 63, e[t++] = 128 | s & 63; + } + } + return e[t] = 0, t - a; + }, Ke = (r, e, t) => Ge(r, y, e, t), ze = (r) => { + for (var e = 0, t = 0; t < r.length; ++t) { + var n = r.charCodeAt(t); + n <= 127 ? e++ : n <= 2047 ? e += 2 : n >= 55296 && n <= 57343 ? (e += 4, ++t) : e += 3; + } + return e; + }, Nr = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, Je = (r, e, t) => { + for (var n = e + t, a = e; r[a] && !(a >= n); ) + ++a; + if (a - e > 16 && r.buffer && Nr) + return Nr.decode(r.subarray(e, a)); + for (var i = ""; e < a; ) { + var o = r[e++]; + if (!(o & 128)) { + i += String.fromCharCode(o); + continue; + } + var s = r[e++] & 63; + if ((o & 224) == 192) { + i += String.fromCharCode((o & 31) << 6 | s); + continue; + } + var f = r[e++] & 63; + if ((o & 240) == 224 ? o = (o & 15) << 12 | s << 6 | f : o = (o & 7) << 18 | s << 12 | f << 6 | r[e++] & 63, o < 65536) + i += String.fromCharCode(o); + else { + var c = o - 65536; + i += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); + } + } + return i; + }, Qe = (r, e) => r ? Je(y, r, e) : "", Ye = (r, e) => { + e = p(e); + var t = e === "std::string"; + F(r, { + name: e, + fromWireType(n) { + var a = _[n >> 2], i = n + 4, o; + if (t) + for (var s = i, f = 0; f <= a; ++f) { + var c = i + f; + if (f == a || y[c] == 0) { + var l = c - s, v = Qe(s, l); + o === void 0 ? o = v : (o += "\0", o += v), s = c + 1; + } + } + else { + for (var h = new Array(a), f = 0; f < a; ++f) + h[f] = String.fromCharCode(y[i + f]); + o = h.join(""); + } + return W(n), o; + }, + toWireType(n, a) { + a instanceof ArrayBuffer && (a = new Uint8Array(a)); + var i, o = typeof a == "string"; + o || a instanceof Uint8Array || a instanceof Uint8ClampedArray || a instanceof Int8Array || b("Cannot pass non-string to std::string"), t && o ? i = ze(a) : i = a.length; + var s = hr(4 + i + 1), f = s + 4; + if (_[s >> 2] = i, t && o) + Ke(a, f, i + 1); + else if (o) + for (var c = 0; c < i; ++c) { + var l = a.charCodeAt(c); + l > 255 && (W(f), b("String has UTF-16 code units that do not fit in 8 bits")), y[f + c] = l; + } + else + for (var c = 0; c < i; ++c) + y[f + c] = a[c]; + return n !== null && n.push(W, s), s; + }, + argPackAdvance: P, + readValueFromPointer: qe, + destructorFunction(n) { + W(n); + } + }); + }, Xr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, rt = (r, e) => { + for (var t = r, n = t >> 1, a = n + e / 2; !(n >= a) && L[n]; ) + ++n; + if (t = n << 1, t - r > 32 && Xr) + return Xr.decode(y.subarray(r, t)); + for (var i = "", o = 0; !(o >= e / 2); ++o) { + var s = O[r + o * 2 >> 1]; + if (s == 0) + break; + i += String.fromCharCode(s); + } + return i; + }, et = (r, e, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 2) + return 0; + t -= 2; + for (var a = e, i = t < r.length * 2 ? t / 2 : r.length, o = 0; o < i; ++o) { + var s = r.charCodeAt(o); + O[e >> 1] = s, e += 2; + } + return O[e >> 1] = 0, e - a; + }, tt = (r) => r.length * 2, nt = (r, e) => { + for (var t = 0, n = ""; !(t >= e / 4); ) { + var a = j[r + t * 4 >> 2]; + if (a == 0) + break; + if (++t, a >= 65536) { + var i = a - 65536; + n += String.fromCharCode(55296 | i >> 10, 56320 | i & 1023); + } else + n += String.fromCharCode(a); + } + return n; + }, at = (r, e, t) => { + var n; + if ((n = t) !== null && n !== void 0 || (t = 2147483647), t < 4) + return 0; + for (var a = e, i = a + t - 4, o = 0; o < r.length; ++o) { + var s = r.charCodeAt(o); + if (s >= 55296 && s <= 57343) { + var f = r.charCodeAt(++o); + s = 65536 + ((s & 1023) << 10) | f & 1023; + } + if (j[e >> 2] = s, e += 4, e + 4 > i) + break; + } + return j[e >> 2] = 0, e - a; + }, it = (r) => { + for (var e = 0, t = 0; t < r.length; ++t) { + var n = r.charCodeAt(t); + n >= 55296 && n <= 57343 && ++t, e += 4; + } + return e; + }, ot = (r, e, t) => { + t = p(t); + var n, a, i, o, s; + e === 2 ? (n = rt, a = et, o = tt, i = () => L, s = 1) : e === 4 && (n = nt, a = at, o = it, i = () => _, s = 2), F(r, { + name: t, + fromWireType: (f) => { + for (var c = _[f >> 2], l = i(), v, h = f + 4, d = 0; d <= c; ++d) { + var k = f + 4 + d * e; + if (d == c || l[k >> s] == 0) { + var C = k - h, m = n(h, C); + v === void 0 ? v = m : (v += "\0", v += m), h = k + e; + } + } + return W(f), v; + }, + toWireType: (f, c) => { + typeof c != "string" && b(`Cannot pass non-string to C++ string type ${t}`); + var l = o(c), v = hr(4 + l + e); + return _[v >> 2] = l >> s, a(c, v + 4, l + e), f !== null && f.push(W, v), v; + }, + argPackAdvance: P, + readValueFromPointer: vr, + destructorFunction(f) { + W(f); + } + }); + }, st = (r, e, t, n, a, i) => { + rr[r] = { + name: p(e), + rawConstructor: q(t, n), + rawDestructor: q(a, i), + fields: [] + }; + }, ut = (r, e, t, n, a, i, o, s, f, c) => { + rr[r].fields.push({ + fieldName: p(e), + getterReturnType: t, + getter: q(n, a), + getterContext: i, + setterArgumentType: o, + setter: q(s, f), + setterContext: c + }); + }, ft = (r, e) => { + e = p(e), F(r, { + isVoid: !0, + name: e, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (t, n) => { + } + }); + }, _r = [], ct = (r, e, t, n) => (r = _r[r], e = I.toValue(e), r(null, e, t, n)), lt = {}, vt = (r) => { + var e = lt[r]; + return e === void 0 ? p(r) : e; + }, Lr = () => { + if (typeof globalThis == "object") + return globalThis; + function r(e) { + e.$$$embind_global$$$ = e; + var t = typeof $$$embind_global$$$ == "object" && e.$$$embind_global$$$ == e; + return t || delete e.$$$embind_global$$$, t; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && r(global) ? $$$embind_global$$$ = global : typeof self == "object" && r(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, dt = (r) => r === 0 ? I.toHandle(Lr()) : (r = vt(r), I.toHandle(Lr()[r])), _t = (r) => { + var e = _r.length; + return _r.push(r), e; + }, ht = (r, e) => { + for (var t = new Array(r), n = 0; n < r; ++n) + t[n] = Hr(_[e + n * 4 >> 2], "parameter " + n); + return t; + }, pt = Reflect.construct, gt = (r, e, t) => { + var n = [], a = r.toWireType(n, t); + return n.length && (_[e >> 2] = I.toHandle(n)), a; + }, yt = (r, e, t) => { + var n = ht(r, e), a = n.shift(); + r--; + var i = new Array(r), o = (f, c, l, v) => { + for (var h = 0, d = 0; d < r; ++d) + i[d] = n[d].readValueFromPointer(v + h), h += n[d].argPackAdvance; + for (var k = t === 1 ? pt(c, i) : c.apply(f, i), d = 0; d < r; ++d) { + var C, m; + (C = (m = n[d]).deleteObject) === null || C === void 0 || C.call(m, i[d]); + } + return gt(a, l, k); + }, s = `methodCaller<(${n.map((f) => f.name).join(", ")}) => ${a.name}>`; + return _t(tr(s, o)); + }, mt = (r) => { + r > 4 && ($.get(r).refcount += 1); + }, bt = (r) => { + var e = I.toValue(r); + lr(e), dr(r); + }, wt = () => { + sr(""); + }, Tt = (r, e, t) => y.copyWithin(r, e, e + t), $t = () => 2147483648, At = (r) => { + var e = Y.buffer, t = (r - e.byteLength + 65535) / 65536; + try { + return Y.grow(t), Ar(), 1; + } catch { + } + }, Et = (r) => { + var e = y.length; + r >>>= 0; + var t = $t(); + if (r > t) + return !1; + for (var n = (f, c) => f + (c - f % c) % c, a = 1; a <= 4; a *= 2) { + var i = e * (1 + 0.2 / a); + i = Math.min(i, r + 100663296); + var o = Math.min(t, n(Math.max(r, i), 65536)), s = At(o); + if (s) + return !0; + } + return !1; + }, Ct = (r) => r; + Sr = u.InternalError = class extends Error { + constructor(e) { + super(e), this.name = "InternalError"; + } + }, be(), Mr = u.BindingError = class extends Error { + constructor(e) { + super(e), this.name = "BindingError"; + } + }, $e(), Ee(), Br = u.UnboundTypeError = He(Error, "UnboundTypeError"); + var Rt = { + r: le, + q: ve, + g: _e, + d: he, + k: pe, + a: ge, + i: de, + M: ye, + C: me, + H: Te, + G: Ce, + K: Pe, + b: We, + v: Se, + L: Ne, + h: Le, + e: Ze, + u: Ye, + p: ot, + w: st, + N: ut, + I: ft, + z: ct, + P: dr, + B: dt, + A: yt, + x: mt, + Q: bt, + s: wt, + F: Tt, + E: Et, + y: Ut, + c: Ft, + l: jt, + n: St, + o: xt, + f: Pt, + t: It, + m: Dt, + D: kt, + J: Wt, + j: Mt, + O: Ct + }, g = ce(), hr = u._malloc = (r) => (hr = u._malloc = g.T)(r), W = u._free = (r) => (W = u._free = g.U)(r), Zr = (r) => (Zr = g.W)(r), T = (r, e) => (T = g.X)(r, e), G = (r) => (G = g.Y)(r), A = () => (A = g.Z)(), E = (r) => (E = g._)(r), qr = (r) => (qr = g.$)(r), Gr = (r) => (Gr = g.aa)(r), Kr = (r, e, t) => (Kr = g.ba)(r, e, t), zr = (r) => (zr = g.ca)(r); + function Ft(r, e) { + var t = A(); + try { + return w(r)(e); + } catch (n) { + if (E(t), n !== n + 0) + throw n; + T(1, 0); + } + } + function Pt(r, e) { + var t = A(); + try { + w(r)(e); + } catch (n) { + if (E(t), n !== n + 0) + throw n; + T(1, 0); + } + } + function Wt(r, e, t, n, a, i) { + var o = A(); + try { + w(r)(e, t, n, a, i); + } catch (s) { + if (E(o), s !== s + 0) + throw s; + T(1, 0); + } + } + function kt(r, e, t, n, a) { + var i = A(); + try { + w(r)(e, t, n, a); + } catch (o) { + if (E(i), o !== o + 0) + throw o; + T(1, 0); + } + } + function St(r, e, t, n) { + var a = A(); + try { + return w(r)(e, t, n); + } catch (i) { + if (E(a), i !== i + 0) + throw i; + T(1, 0); + } + } + function Ut(r, e, t, n, a) { + var i = A(); + try { + return w(r)(e, t, n, a); + } catch (o) { + if (E(i), o !== o + 0) + throw o; + T(1, 0); + } + } + function jt(r, e, t) { + var n = A(); + try { + return w(r)(e, t); + } catch (a) { + if (E(n), a !== a + 0) + throw a; + T(1, 0); + } + } + function xt(r) { + var e = A(); + try { + w(r)(); + } catch (t) { + if (E(e), t !== t + 0) + throw t; + T(1, 0); + } + } + function Mt(r, e, t, n, a, i, o, s, f, c, l) { + var v = A(); + try { + w(r)(e, t, n, a, i, o, s, f, c, l); + } catch (h) { + if (E(v), h !== h + 0) + throw h; + T(1, 0); + } + } + function Dt(r, e, t, n) { + var a = A(); + try { + w(r)(e, t, n); + } catch (i) { + if (E(a), i !== i + 0) + throw i; + T(1, 0); + } + } + function It(r, e, t) { + var n = A(); + try { + w(r)(e, t); + } catch (a) { + if (E(n), a !== a + 0) + throw a; + T(1, 0); + } + } + var ar; + Z = function r() { + ar || Jr(), ar || (Z = r); + }; + function Jr() { + if (x > 0 || (Yr(), x > 0)) + return; + function r() { + ar || (ar = !0, u.calledRun = !0, !wr && (re(), yr(u), u.onRuntimeInitialized && u.onRuntimeInitialized(), ee())); + } + u.setStatus ? (u.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + u.setStatus(""); + }, 1), r(); + }, 1)) : r(); + } + if (u.preInit) + for (typeof u.preInit == "function" && (u.preInit = [u.preInit]); u.preInit.length > 0; ) + u.preInit.pop()(); + return Jr(), z.ready; + }; +})(); +function Zt(S) { + return Ht( + gr, + S + ); +} +function qt(S) { + return Vt( + gr, + S + ); +} +async function Gt(S, z) { + return Bt( + gr, + S, + z + ); +} +export { + Jt as barcodeFormats, + Qt as characterSets, + Yt as defaultEncodeHints, + rn as defaultWriterOptions, + Zt as getZXingModule, + en as purgeZXingModule, + qt as setZXingModuleOverrides, + Gt as writeBarcodeToImageFile, + tn as writeInputEccLevels +}; diff --git a/node_modules/zxing-wasm/dist/full/zxing_full.wasm b/node_modules/zxing-wasm/dist/full/zxing_full.wasm new file mode 100644 index 0000000..0f1e57d Binary files /dev/null and b/node_modules/zxing-wasm/dist/full/zxing_full.wasm differ diff --git a/node_modules/zxing-wasm/dist/iife/full/index.js b/node_modules/zxing-wasm/dist/iife/full/index.js new file mode 100644 index 0000000..38e060f --- /dev/null +++ b/node_modules/zxing-wasm/dist/iife/full/index.js @@ -0,0 +1,3 @@ +var ZXingWASM=function(O){"use strict";var le=(()=>{var h=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(p={}){var u=p,U,$;u.ready=new Promise((e,r)=>{U=e,$=r});var j=Object.assign({},u),z="./this.program",Q=typeof window=="object",N=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var k="";function J(e){return u.locateFile?u.locateFile(e,k):k+e}var ne;(Q||N)&&(N?k=self.location.href:typeof document<"u"&&document.currentScript&&(k=document.currentScript.src),h&&(k=h),k.indexOf("blob:")!==0?k=k.substr(0,k.replace(/[?#].*/,"").lastIndexOf("/")+1):k="",N&&(ne=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),u.print||console.log.bind(console);var X=u.printErr||console.error.bind(console);Object.assign(u,j),j=null,u.arguments&&u.arguments,u.thisProgram&&(z=u.thisProgram),u.quit&&u.quit;var ce;u.wasmBinary&&(ce=u.wasmBinary),typeof WebAssembly!="object"&&Te("no native wasm support detected");var we,fr=!1,x,H,ae,fe,M,w,vr,dr;function hr(){var e=we.buffer;u.HEAP8=x=new Int8Array(e),u.HEAP16=ae=new Int16Array(e),u.HEAPU8=H=new Uint8Array(e),u.HEAPU16=fe=new Uint16Array(e),u.HEAP32=M=new Int32Array(e),u.HEAPU32=w=new Uint32Array(e),u.HEAPF32=vr=new Float32Array(e),u.HEAPF64=dr=new Float64Array(e)}var pr=[],gr=[],_r=[];function wt(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)Pt(u.preRun.shift());He(pr)}function Tt(){He(gr)}function Ct(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)At(u.postRun.shift());He(_r)}function Pt(e){pr.unshift(e)}function St(e){gr.unshift(e)}function At(e){_r.unshift(e)}var K=0,ve=null;function Et(e){var r;K++,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K)}function Ft(e){var r;if(K--,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K),K==0&&ve){var t=ve;ve=null,t()}}function Te(e){var r;(r=u.onAbort)===null||r===void 0||r.call(u,e),e="Aborted("+e+")",X(e),fr=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw $(t),t}var Rt="data:application/octet-stream;base64,",mr=e=>e.startsWith(Rt),ie;ie="zxing_full.wasm",mr(ie)||(ie=J(ie));function yr(e){if(e==ie&&ce)return new Uint8Array(ce);if(ne)return ne(e);throw"both async and sync fetching of the wasm failed"}function Ot(e){return!ce&&(Q||N)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>yr(e)):Promise.resolve().then(()=>yr(e))}function br(e,r,t){return Ot(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{X(`failed to asynchronously prepare wasm: ${n}`),Te(n)})}function Dt(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!mr(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(o){return X(`wasm streaming compile failed: ${o}`),X("falling back to ArrayBuffer instantiation"),br(r,t,n)})}):br(r,t,n)}function Wt(){var e={a:$a};function r(n,a){return R=n.exports,we=R.ja,hr(),Rr=R.na,St(R.ka),Ft(),R}Et();function t(n){r(n.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(e,r)}catch(n){X(`Module.instantiateWasm callback failed with error: ${n}`),$(n)}return Dt(ce,ie,e,t).catch($),{}}var He=e=>{for(;e.length>0;)e.shift()(u)};u.noExitRuntime;var Ce=[],Pe=0,It=e=>{var r=new Be(e);return r.get_caught()||(r.set_caught(!0),Pe--),r.set_rethrown(!1),Ce.push(r),Yr(r.excPtr),r.get_exception_ptr()},Z=0,kt=()=>{T(0,0);var e=Ce.pop();Vr(e.excPtr),Z=0};function Be(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){w[this.ptr+4>>2]=r},this.get_type=function(){return w[this.ptr+4>>2]},this.set_destructor=function(r){w[this.ptr+8>>2]=r},this.get_destructor=function(){return w[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,x[this.ptr+12>>0]=r},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,x[this.ptr+13>>0]=r},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){w[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return w[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Nr(this.get_type());if(r)return w[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Mt=e=>{throw Z||(Z=e),Z},xe=e=>{var r=Z;if(!r)return ye(0),0;var t=new Be(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return ye(0),r;for(var a in e){var i=e[a];if(i===0||i===n)break;var o=t.ptr+16;if(zr(i,n,o))return ye(i),r}return ye(n),r},Ut=()=>xe([]),jt=e=>xe([e]),Ht=(e,r)=>xe([e,r]),Bt=()=>{var e=Ce.pop();e||Te("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(Ce.push(e),e.set_rethrown(!0),e.set_caught(!1),Pe++),Z=r,Z},xt=(e,r,t)=>{var n=new Be(e);throw n.init(r,t),Z=e,Pe++,Z},Lt=()=>Pe,Se={},Le=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function Ve(e){return this.fromWireType(M[e>>2])}var oe={},ee={},Ae={},$r,Ee=e=>{throw new $r(e)},re=(e,r,t)=>{e.forEach(function(s){Ae[s]=r});function n(s){var l=t(s);l.length!==e.length&&Ee("Mismatched type converter count");for(var f=0;f{ee.hasOwnProperty(s)?a[l]=ee[s]:(i.push(s),oe.hasOwnProperty(s)||(oe[s]=[]),oe[s].push(()=>{a[l]=ee[s],++o,o===i.length&&n(a)}))}),i.length===0&&n(a)},Vt=e=>{var r=Se[e];delete Se[e];var t=r.rawConstructor,n=r.rawDestructor,a=r.fields,i=a.map(o=>o.getterReturnType).concat(a.map(o=>o.setterArgumentType));re([e],i,o=>{var s={};return a.forEach((l,f)=>{var v=l.fieldName,g=o[f],_=l.getter,m=l.getterContext,A=o[f+a.length],E=l.setter,b=l.setterContext;s[v]={read:I=>g.fromWireType(_(m,I)),write:(I,c)=>{var d=[];E(b,I,A.toWireType(d,c)),Le(d)}}}),[{name:r.name,fromWireType:l=>{var f={};for(var v in s)f[v]=s[v].read(l);return n(l),f},toWireType:(l,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var g=t();for(v in s)s[v].write(g,f[v]);return l!==null&&l.push(n,g),g},argPackAdvance:Y,readValueFromPointer:Ve,destructorFunction:n}]})},Yt=(e,r,t,n,a)=>{},zt=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);wr=e},wr,W=e=>{for(var r="",t=e;H[t];)r+=wr[H[t++]];return r},se,y=e=>{throw new se(e)};function Nt(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||y(`type "${n}" must have a positive integer typeid pointer`),ee.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;y(`Cannot register type '${n}' twice`)}if(ee[e]=r,delete Ae[e],oe.hasOwnProperty(e)){var a=oe[e];delete oe[e],a.forEach(i=>i())}}function V(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Nt(e,r,t)}var Y=8,Xt=(e,r,t,n)=>{r=W(r),V(e,{name:r,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:Y,readValueFromPointer:function(a){return this.fromWireType(H[a])},destructorFunction:null})},Zt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Ye=e=>{function r(t){return t.$$.ptrType.registeredClass.name}y(r(e)+" instance already deleted")},ze=!1,Tr=e=>{},Gt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Cr=e=>{e.count.value-=1;var r=e.count.value===0;r&&Gt(e)},Pr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=Pr(e,r,t.baseClass);return n===null?null:t.downcast(n)},Sr={},qt=()=>Object.keys(pe).length,Qt=()=>{var e=[];for(var r in pe)pe.hasOwnProperty(r)&&e.push(pe[r]);return e},de=[],Ne=()=>{for(;de.length;){var e=de.pop();e.$$.deleteScheduled=!1,e.delete()}},he,Jt=e=>{he=e,de.length&&he&&he(Ne)},Kt=()=>{u.getInheritedInstanceCount=qt,u.getLiveInheritedInstances=Qt,u.flushPendingDeletes=Ne,u.setDelayFunction=Jt},pe={},en=(e,r)=>{for(r===void 0&&y("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},rn=(e,r)=>(r=en(e,r),pe[r]),Fe=(e,r)=>{(!r.ptrType||!r.ptr)&&Ee("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&Ee("Both smartPtrType and smartPtr must be specified"),r.count={value:1},ge(Object.create(e,{$$:{value:r,writable:!0}}))};function tn(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=rn(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function a(){return this.isSmartPointer?Fe(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):Fe(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i=this.registeredClass.getActualType(r),o=Sr[i];if(!o)return a.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var l=Pr(r,this.registeredClass,s.registeredClass);return l===null?a.call(this):this.isSmartPointer?Fe(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):Fe(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}var ge=e=>typeof FinalizationRegistry>"u"?(ge=r=>r,e):(ze=new FinalizationRegistry(r=>{Cr(r.$$)}),ge=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var a={$$:t};ze.register(r,a,r)}return r},Tr=r=>ze.unregister(r),ge(e)),nn=()=>{Object.assign(Re.prototype,{isAliasOf(e){if(!(this instanceof Re)||!(e instanceof Re))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,a=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return r===n&&t===a},clone(){if(this.$$.ptr||Ye(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=ge(Object.create(Object.getPrototypeOf(this),{$$:{value:Zt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),Tr(this),Cr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),de.push(this),de.length===1&&he&&he(Ne),this.$$.deleteScheduled=!0,this}})};function Re(){}var _e=(e,r)=>Object.defineProperty(r,"name",{value:e}),Ar=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||y(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},Xe=(e,r,t)=>{u.hasOwnProperty(e)?((t===void 0||u[e].overloadTable!==void 0&&u[e].overloadTable[t]!==void 0)&&y(`Cannot register public name '${e}' twice`),Ar(u,e,e),u.hasOwnProperty(t)&&y(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),u[e].overloadTable[t]=r):(u[e]=r,t!==void 0&&(u[e].numArguments=t))},an=48,on=57,sn=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=an&&r<=on?`_${e}`:e};function un(e,r,t,n,a,i,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=a,this.getActualType=i,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var Ze=(e,r,t)=>{for(;r!==t;)r.upcast||y(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function ln(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Ke(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ze(r.$$.ptr,t,this.registeredClass);return n}function cn(e,r){var t;if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&y(`Cannot pass "${Ke(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=Ze(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&y("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var a=r.clone();t=this.rawShare(t,G.toHandle(()=>a.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:y("Unsupporting sharing policy")}return t}function fn(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Ke(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=Ze(r.$$.ptr,t,this.registeredClass);return n}function Er(e){return this.fromWireType(w[e>>2])}var vn=()=>{Object.assign(Oe.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:Y,readValueFromPointer:Er,deleteObject(e){e!==null&&e.delete()},fromWireType:tn})};function Oe(e,r,t,n,a,i,o,s,l,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=a,this.pointeeType=i,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=v,!a&&r.baseClass===void 0?n?(this.toWireType=ln,this.destructorFunction=null):(this.toWireType=fn,this.destructorFunction=null):this.toWireType=cn}var Fr=(e,r,t)=>{u.hasOwnProperty(e)||Ee("Replacing nonexistant public symbol"),u[e].overloadTable!==void 0&&t!==void 0?u[e].overloadTable[t]=r:(u[e]=r,u[e].argCount=t)},dn=(e,r,t)=>{var n=u["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},De=[],Rr,C=e=>{var r=De[e];return r||(e>=De.length&&(De.length=e+1),De[e]=r=Rr.get(e)),r},hn=(e,r,t)=>{if(e.includes("j"))return dn(e,r,t);var n=C(r).apply(null,t);return n},pn=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),hn(e,r,t)}},L=(e,r)=>{e=W(e);function t(){return e.includes("j")?pn(e,r):C(r)}var n=t();return typeof n!="function"&&y(`unknown function pointer with signature ${e}: ${r}`),n},gn=(e,r)=>{var t=_e(r,function(n){this.name=r,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Or,Dr=e=>{var r=Lr(e),t=W(r);return q(r),t},We=(e,r)=>{var t=[],n={};function a(i){if(!n[i]&&!ee[i]){if(Ae[i]){Ae[i].forEach(a);return}t.push(i),n[i]=!0}}throw r.forEach(a),new Or(`${e}: `+t.map(Dr).join([", "]))},_n=(e,r,t,n,a,i,o,s,l,f,v,g,_)=>{v=W(v),i=L(a,i),s&&(s=L(o,s)),f&&(f=L(l,f)),_=L(g,_);var m=sn(v);Xe(m,function(){We(`Cannot construct ${v} due to unbound types`,[n])}),re([e,r,t],n?[n]:[],function(A){A=A[0];var E,b;n?(E=A.registeredClass,b=E.instancePrototype):b=Re.prototype;var I=_e(v,function(){if(Object.getPrototypeOf(this)!==c)throw new se("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new se(v+" has no accessible constructor");var qr=d.constructor_body[arguments.length];if(qr===void 0)throw new se(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return qr.apply(this,arguments)}),c=Object.create(b,{constructor:{value:I}});I.prototype=c;var d=new un(v,I,c,_,E,i,s,f);if(d.baseClass){var F,D;(D=(F=d.baseClass).__derivedClasses)!==null&&D!==void 0||(F.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var ue=new Oe(v,d,!0,!1,!1),Me=new Oe(v+"*",d,!1,!1,!1),Gr=new Oe(v+" const*",d,!1,!0,!1);return Sr[e]={pointerType:Me,constPointerType:Gr},Fr(m,I),[ue,Me,Gr]})},Ge=(e,r)=>{for(var t=[],n=0;n>2]);return t};function mn(e){for(var r=1;r{var o=Ge(r,t);a=L(n,a),re([],[e],function(s){s=s[0];var l=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new se(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{We(`Cannot construct ${s.name} due to unbound types`,o)},re([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=qe(l,f,null,a,i),[])),[]})},Wr=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},bn=(e,r,t,n,a,i,o,s,l)=>{var f=Ge(t,n);r=W(r),r=Wr(r),i=L(a,i),re([],[e],function(v){v=v[0];var g=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function _(){We(`Cannot call ${g} due to unbound types`,f)}var m=v.registeredClass.instancePrototype,A=m[r];return A===void 0||A.overloadTable===void 0&&A.className!==v.name&&A.argCount===t-2?(_.argCount=t-2,_.className=v.name,m[r]=_):(Ar(m,r,g),m[r].overloadTable[t-2]=_),re([],f,function(E){var b=qe(g,E,v,i,o);return m[r].overloadTable===void 0?(b.argCount=t-2,m[r]=b):m[r].overloadTable[t-2]=b,[]}),[]})};function $n(){Object.assign(Ir.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Ir(){this.allocated=[void 0],this.freelist=[]}var B=new Ir,Qe=e=>{e>=B.reserved&&--B.get(e).refcount===0&&B.free(e)},wn=()=>{for(var e=0,r=B.reserved;r{B.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),B.reserved=B.allocated.length,u.count_emval_handles=wn},G={toValue:e=>(e||y("Cannot use deleted val. handle = "+e),B.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return B.allocate({refcount:1,value:e})}}},Cn=(e,r)=>{r=W(r),V(e,{name:r,fromWireType:t=>{var n=G.toValue(t);return Qe(t),n},toWireType:(t,n)=>G.toHandle(n),argPackAdvance:Y,readValueFromPointer:Ve,destructorFunction:null})},Pn=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(x[n>>0])}:function(n){return this.fromWireType(H[n>>0])};case 2:return t?function(n){return this.fromWireType(ae[n>>1])}:function(n){return this.fromWireType(fe[n>>1])};case 4:return t?function(n){return this.fromWireType(M[n>>2])}:function(n){return this.fromWireType(w[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Sn=(e,r,t,n)=>{r=W(r);function a(){}a.values={},V(e,{name:r,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,o)=>o.value,argPackAdvance:Y,readValueFromPointer:Pn(r,t,n),destructorFunction:null}),Xe(r,a)},Je=(e,r)=>{var t=ee[e];return t===void 0&&y(r+" has unknown type "+Dr(e)),t},An=(e,r,t)=>{var n=Je(e,"enum");r=W(r);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:_e(`${n.name}_${r}`,function(){})}});a.values[t]=i,a[r]=i},Ke=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},En=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(vr[t>>2])};case 8:return function(t){return this.fromWireType(dr[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},Fn=(e,r,t)=>{r=W(r),V(e,{name:r,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:Y,readValueFromPointer:En(r,t),destructorFunction:null})},Rn=(e,r,t,n,a,i,o)=>{var s=Ge(r,t);e=W(e),e=Wr(e),a=L(n,a),Xe(e,function(){We(`Cannot call ${e} due to unbound types`,s)},r-1),re([],s,function(l){var f=[l[0],null].concat(l.slice(1));return Fr(e,qe(e,f,null,a,i),r-1),[]})},On=(e,r,t)=>{switch(r){case 1:return t?n=>x[n>>0]:n=>H[n>>0];case 2:return t?n=>ae[n>>1]:n=>fe[n>>1];case 4:return t?n=>M[n>>2]:n=>w[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Dn=(e,r,t,n,a)=>{r=W(r);var i=v=>v;if(n===0){var o=32-8*t;i=v=>v<>>o}var s=r.includes("unsigned"),l=(v,g)=>{},f;s?f=function(v,g){return l(g,this.name),g>>>0}:f=function(v,g){return l(g,this.name),g},V(e,{name:r,fromWireType:i,toWireType:f,argPackAdvance:Y,readValueFromPointer:On(r,t,n!==0),destructorFunction:null})},Wn=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[r];function i(o){var s=w[o>>2],l=w[o+4>>2];return new a(x.buffer,l,s)}t=W(t),V(e,{name:t,fromWireType:i,argPackAdvance:Y,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},kr=(e,r,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-a},In=(e,r,t)=>kr(e,H,r,t),Mr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Ur=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,kn=(e,r,t)=>{for(var n=r+t,a=r;e[a]&&!(a>=n);)++a;if(a-r>16&&e.buffer&&Ur)return Ur.decode(e.subarray(r,a));for(var i="";r>10,56320|f&1023)}}return i},er=(e,r)=>e?kn(H,e,r):"",Mn=(e,r)=>{r=W(r);var t=r==="std::string";V(e,{name:r,fromWireType(n){var a=w[n>>2],i=n+4,o;if(t)for(var s=i,l=0;l<=a;++l){var f=i+l;if(l==a||H[f]==0){var v=f-s,g=er(s,v);o===void 0?o=g:(o+="\0",o+=g),s=f+1}}else{for(var _=new Array(a),l=0;l>2]=i,t&&o)In(a,l,i+1);else if(o)for(var f=0;f255&&(q(l),y("String has UTF-16 code units that do not fit in 8 bits")),H[l+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,a=n+r/2;!(n>=a)&&fe[n];)++n;if(t=n<<1,t-e>32&&jr)return jr.decode(H.subarray(e,t));for(var i="",o=0;!(o>=r/2);++o){var s=ae[e+o*2>>1];if(s==0)break;i+=String.fromCharCode(s)}return i},jn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=r,i=t>1]=s,r+=2}return ae[r>>1]=0,r-a},Hn=e=>e.length*2,Bn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var a=M[e+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},xn=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=r,i=a+t-4,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(M[r>>2]=s,r+=4,r+4>i)break}return M[r>>2]=0,r-a},Ln=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},Vn=(e,r,t)=>{t=W(t);var n,a,i,o,s;r===2?(n=Un,a=jn,o=Hn,i=()=>fe,s=1):r===4&&(n=Bn,a=xn,o=Ln,i=()=>w,s=2),V(e,{name:t,fromWireType:l=>{for(var f=w[l>>2],v=i(),g,_=l+4,m=0;m<=f;++m){var A=l+4+m*r;if(m==f||v[A>>s]==0){var E=A-_,b=n(_,E);g===void 0?g=b:(g+="\0",g+=b),_=A+r}}return q(l),g},toWireType:(l,f)=>{typeof f!="string"&&y(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),g=nr(4+v+r);return w[g>>2]=v>>s,a(f,g+4,v+r),l!==null&&l.push(q,g),g},argPackAdvance:Y,readValueFromPointer:Ve,destructorFunction(l){q(l)}})},Yn=(e,r,t,n,a,i)=>{Se[e]={name:W(r),rawConstructor:L(t,n),rawDestructor:L(a,i),fields:[]}},zn=(e,r,t,n,a,i,o,s,l,f)=>{Se[e].fields.push({fieldName:W(r),getterReturnType:t,getter:L(n,a),getterContext:i,setterArgumentType:o,setter:L(s,l),setterContext:f})},Nn=(e,r)=>{r=W(r),V(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},rr=[],Xn=(e,r,t,n)=>(e=rr[e],r=G.toValue(r),e(null,r,t,n)),Zn={},Gn=e=>{var r=Zn[e];return r===void 0?W(e):r},Hr=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},qn=e=>e===0?G.toHandle(Hr()):(e=Gn(e),G.toHandle(Hr()[e])),Qn=e=>{var r=rr.length;return rr.push(e),r},Jn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},Kn=Reflect.construct,ea=(e,r,t)=>{var n=[],a=e.toWireType(n,t);return n.length&&(w[r>>2]=G.toHandle(n)),a},ra=(e,r,t)=>{var n=Jn(e,r),a=n.shift();e--;var i=new Array(e),o=(l,f,v,g)=>{for(var _=0,m=0;ml.name).join(", ")}) => ${a.name}>`;return Qn(_e(s,o))},ta=e=>{e>4&&(B.get(e).refcount+=1)},na=e=>{var r=G.toValue(e);Le(r),Qe(e)},aa=(e,r)=>{e=Je(e,"_emval_take_value");var t=e.readValueFromPointer(r);return G.toHandle(t)},ia=()=>{Te("")},oa=(e,r,t)=>H.copyWithin(e,r,r+t),sa=()=>2147483648,ua=e=>{var r=we.buffer,t=(e-r.byteLength+65535)/65536;try{return we.grow(t),hr(),1}catch{}},la=e=>{var r=H.length;e>>>=0;var t=sa();if(e>t)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var i=r*(1+.2/a);i=Math.min(i,e+100663296);var o=Math.min(t,n(Math.max(e,i),65536)),s=ua(o);if(s)return!0}return!1},tr={},ca=()=>z||"./this.program",me=()=>{if(!me.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:ca()};for(var t in tr)tr[t]===void 0?delete r[t]:r[t]=tr[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);me.strings=n}return me.strings},fa=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);x[r>>0]=0},va=(e,r)=>{var t=0;return me().forEach((n,a)=>{var i=r+t;w[e+a*4>>2]=i,fa(n,i),t+=n.length+1}),0},da=(e,r)=>{var t=me();w[e>>2]=t.length;var n=0;return t.forEach(a=>n+=a.length+1),w[r>>2]=n,0},ha=e=>e,Ie=e=>e%4===0&&(e%100!==0||e%400===0),pa=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Br=[31,29,31,30,31,30,31,31,30,31,30,31],xr=[31,28,31,30,31,30,31,31,30,31,30,31],ga=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=Ie(t.getFullYear()),a=t.getMonth(),i=(n?Br:xr)[a];if(r>i-t.getDate())r-=i-t.getDate()+1,t.setDate(1),a<11?t.setMonth(a+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function _a(e,r,t){var n=t>0?t:Mr(e)+1,a=new Array(n),i=kr(e,a,0,a.length);return r&&(a.length=i),a}var ma=(e,r)=>{x.set(e,r)},ya=(e,r,t,n)=>{var a=w[n+40>>2],i={tm_sec:M[n>>2],tm_min:M[n+4>>2],tm_hour:M[n+8>>2],tm_mday:M[n+12>>2],tm_mon:M[n+16>>2],tm_year:M[n+20>>2],tm_wday:M[n+24>>2],tm_yday:M[n+28>>2],tm_isdst:M[n+32>>2],tm_gmtoff:M[n+36>>2],tm_zone:a?er(a):""},o=er(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in s)o=o.replace(new RegExp(l,"g"),s[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function g(c,d,F){for(var D=typeof c=="number"?c.toString():c||"";D.length0?1:0}var D;return(D=F(c.getFullYear()-d.getFullYear()))===0&&(D=F(c.getMonth()-d.getMonth()))===0&&(D=F(c.getDate()-d.getDate())),D}function A(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function E(c){var d=ga(new Date(c.tm_year+1900,0,1),c.tm_yday),F=new Date(d.getFullYear(),0,4),D=new Date(d.getFullYear()+1,0,4),ue=A(F),Me=A(D);return m(ue,d)<=0?m(Me,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var b={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return _(d/100|0,2)},"%d":c=>_(c.tm_mday,2),"%e":c=>g(c.tm_mday,2," "),"%g":c=>E(c).toString().substring(2),"%G":c=>E(c),"%H":c=>_(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),_(d,2)},"%j":c=>_(c.tm_mday+pa(Ie(c.tm_year+1900)?Br:xr,c.tm_mon-1),3),"%m":c=>_(c.tm_mon+1,2),"%M":c=>_(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>_(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return _(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var D=(c.tm_wday+371-c.tm_yday)%7;D!=4&&(D!=3||!Ie(c.tm_year))&&(d=1)}}else{d=52;var F=(c.tm_wday+7-c.tm_yday-1)%7;(F==4||F==5&&Ie(c.tm_year%400-1))&&d++}return _(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return _(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,F=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(F?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var l in b)o.includes(l)&&(o=o.replace(new RegExp(l,"g"),b[l](i)));o=o.replace(/\0\0/g,"%");var I=_a(o,!1);return I.length>r?0:(ma(I,e),I.length-1)},ba=(e,r,t,n,a)=>ya(e,r,t,n);$r=u.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},zt(),se=u.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},nn(),Kt(),vn(),Or=u.UnboundTypeError=gn(Error,"UnboundTypeError"),$n(),Tn();var $a={s:It,t:kt,b:Ut,g:jt,m:Ht,K:Bt,e:xt,W:Lt,d:Mt,ea:Vt,R:Yt,$:Xt,da:_n,ca:yn,x:bn,Z:Cn,y:Sn,j:An,M:Fn,E:Rn,u:Dn,q:Wn,L:Mn,D:Vn,w:Yn,fa:zn,aa:Nn,S:Xn,ia:Qe,ha:qn,_:ra,N:ta,P:na,ba:aa,C:ia,Y:oa,X:la,U:va,V:da,G:ja,B:Sa,H:Ua,p:Ha,a:wa,f:Ea,n:Pa,k:Ra,J:ka,v:Ia,I:Ma,A:xa,Q:Va,l:Fa,i:Aa,c:Ca,o:Ta,F:Da,ga:Oa,r:Ba,h:Wa,z:La,O:ha,T:ba},R=Wt(),q=u._free=e=>(q=u._free=R.la)(e),nr=u._malloc=e=>(nr=u._malloc=R.ma)(e),Lr=e=>(Lr=R.oa)(e),T=(e,r)=>(T=R.pa)(e,r),ye=e=>(ye=R.qa)(e),P=()=>(P=R.ra)(),S=e=>(S=R.sa)(e),Vr=e=>(Vr=R.ta)(e),Yr=e=>(Yr=R.ua)(e),zr=(e,r,t)=>(zr=R.va)(e,r,t),Nr=e=>(Nr=R.wa)(e);u.dynCall_viijii=(e,r,t,n,a,i,o)=>(u.dynCall_viijii=R.xa)(e,r,t,n,a,i,o);var Xr=u.dynCall_jiiii=(e,r,t,n,a)=>(Xr=u.dynCall_jiiii=R.ya)(e,r,t,n,a);u.dynCall_iiiiij=(e,r,t,n,a,i,o)=>(u.dynCall_iiiiij=R.za)(e,r,t,n,a,i,o),u.dynCall_iiiiijj=(e,r,t,n,a,i,o,s,l)=>(u.dynCall_iiiiijj=R.Aa)(e,r,t,n,a,i,o,s,l),u.dynCall_iiiiiijj=(e,r,t,n,a,i,o,s,l,f)=>(u.dynCall_iiiiiijj=R.Ba)(e,r,t,n,a,i,o,s,l,f);function wa(e,r){var t=P();try{return C(e)(r)}catch(n){if(S(t),n!==n+0)throw n;T(1,0)}}function Ta(e,r,t,n){var a=P();try{C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function Ca(e,r,t){var n=P();try{C(e)(r,t)}catch(a){if(S(n),a!==a+0)throw a;T(1,0)}}function Pa(e,r,t,n){var a=P();try{return C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function Sa(e,r,t,n,a){var i=P();try{return C(e)(r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}function Aa(e,r){var t=P();try{C(e)(r)}catch(n){if(S(t),n!==n+0)throw n;T(1,0)}}function Ea(e,r,t){var n=P();try{return C(e)(r,t)}catch(a){if(S(n),a!==a+0)throw a;T(1,0)}}function Fa(e){var r=P();try{C(e)()}catch(t){if(S(r),t!==t+0)throw t;T(1,0)}}function Ra(e,r,t,n,a){var i=P();try{return C(e)(r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}function Oa(e,r,t,n,a,i){var o=P();try{C(e)(r,t,n,a,i)}catch(s){if(S(o),s!==s+0)throw s;T(1,0)}}function Da(e,r,t,n,a){var i=P();try{C(e)(r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}function Wa(e,r,t,n,a,i,o,s,l,f,v){var g=P();try{C(e)(r,t,n,a,i,o,s,l,f,v)}catch(_){if(S(g),_!==_+0)throw _;T(1,0)}}function Ia(e,r,t,n,a,i,o){var s=P();try{return C(e)(r,t,n,a,i,o)}catch(l){if(S(s),l!==l+0)throw l;T(1,0)}}function ka(e,r,t,n,a,i){var o=P();try{return C(e)(r,t,n,a,i)}catch(s){if(S(o),s!==s+0)throw s;T(1,0)}}function Ma(e,r,t,n,a,i,o,s){var l=P();try{return C(e)(r,t,n,a,i,o,s)}catch(f){if(S(l),f!==f+0)throw f;T(1,0)}}function Ua(e,r,t,n){var a=P();try{return C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function ja(e,r,t,n){var a=P();try{return C(e)(r,t,n)}catch(i){if(S(a),i!==i+0)throw i;T(1,0)}}function Ha(e){var r=P();try{return C(e)()}catch(t){if(S(r),t!==t+0)throw t;T(1,0)}}function Ba(e,r,t,n,a,i,o,s){var l=P();try{C(e)(r,t,n,a,i,o,s)}catch(f){if(S(l),f!==f+0)throw f;T(1,0)}}function xa(e,r,t,n,a,i,o,s,l,f,v,g){var _=P();try{return C(e)(r,t,n,a,i,o,s,l,f,v,g)}catch(m){if(S(_),m!==m+0)throw m;T(1,0)}}function La(e,r,t,n,a,i,o,s,l,f,v,g,_,m,A,E){var b=P();try{C(e)(r,t,n,a,i,o,s,l,f,v,g,_,m,A,E)}catch(I){if(S(b),I!==I+0)throw I;T(1,0)}}function Va(e,r,t,n,a){var i=P();try{return Xr(e,r,t,n,a)}catch(o){if(S(i),o!==o+0)throw o;T(1,0)}}var ke;ve=function e(){ke||Zr(),ke||(ve=e)};function Zr(){if(K>0||(wt(),K>0))return;function e(){ke||(ke=!0,u.calledRun=!0,!fr&&(Tt(),U(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Ct()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),e()},1)):e()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Zr(),p.ready}})();const Ue=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Qr(h){return h.join("|")}function Jr(h){const p=ar(h);let u=0,U=Ue.length-1;for(;u<=U;){const $=Math.floor((u+U)/2),j=Ue[$],z=ar(j);if(z===p)return j;z{const u=h.match(/_(.+?)\.wasm$/);return u?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${u[1]}/${h}`:p+h}};let be=new WeakMap;function $e(h,p){var j;const u=be.get(h);if(u!=null&&u.modulePromise&&(p===void 0||Object.is(p,u.moduleOverrides)))return u.modulePromise;const U=(j=p!=null?p:u==null?void 0:u.moduleOverrides)!=null?j:ft,$=h({...U});return be.set(h,{moduleOverrides:U,modulePromise:$}),$}function vt(){be=new WeakMap}function dt(h,p){be.set(h,{moduleOverrides:p})}async function ht(h,p,u=te){const U={...te,...u},$=await $e(h),{size:j}=p,z=new Uint8Array(await p.arrayBuffer()),Q=$._malloc(j);$.HEAPU8.set(z,Q);const N=$.readBarcodesFromImage(Q,j,sr($,U));$._free(Q);const k=[];for(let J=0;J{var h=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(m={}){var u=m,j,w;u.ready=new Promise((e,r)=>{j=e,w=r});var H=Object.assign({},u),N="./this.program",J=typeof window=="object",X=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var I="";function Q(e){return u.locateFile?u.locateFile(e,I):I+e}var ne;(J||X)&&(X?I=self.location.href:typeof document<"u"&&document.currentScript&&(I=document.currentScript.src),h&&(I=h),I.indexOf("blob:")!==0?I=I.substr(0,I.replace(/[?#].*/,"").lastIndexOf("/")+1):I="",X&&(ne=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)})),u.print||console.log.bind(console);var z=u.printErr||console.error.bind(console);Object.assign(u,H),H=null,u.arguments&&u.arguments,u.thisProgram&&(N=u.thisProgram),u.quit&&u.quit;var le;u.wasmBinary&&(le=u.wasmBinary),typeof WebAssembly!="object"&&we("no native wasm support detected");var $e,ur=!1,x,U,ae,ce,W,$,lr,cr;function fr(){var e=$e.buffer;u.HEAP8=x=new Int8Array(e),u.HEAP16=ae=new Int16Array(e),u.HEAPU8=U=new Uint8Array(e),u.HEAPU16=ce=new Uint16Array(e),u.HEAP32=W=new Int32Array(e),u.HEAPU32=$=new Uint32Array(e),u.HEAPF32=lr=new Float32Array(e),u.HEAPF64=cr=new Float64Array(e)}var vr=[],dr=[],hr=[];function pt(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)mt(u.preRun.shift());je(vr)}function _t(){je(dr)}function gt(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)bt(u.postRun.shift());je(hr)}function mt(e){vr.unshift(e)}function yt(e){dr.unshift(e)}function bt(e){hr.unshift(e)}var K=0,fe=null;function $t(e){var r;K++,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K)}function wt(e){var r;if(K--,(r=u.monitorRunDependencies)===null||r===void 0||r.call(u,K),K==0&&fe){var t=fe;fe=null,t()}}function we(e){var r;(r=u.onAbort)===null||r===void 0||r.call(u,e),e="Aborted("+e+")",z(e),ur=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw w(t),t}var Tt="data:application/octet-stream;base64,",pr=e=>e.startsWith(Tt),ie;ie="zxing_reader.wasm",pr(ie)||(ie=Q(ie));function _r(e){if(e==ie&&le)return new Uint8Array(le);if(ne)return ne(e);throw"both async and sync fetching of the wasm failed"}function Ct(e){return!le&&(J||X)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(r=>{if(!r.ok)throw"failed to load wasm binary file at '"+e+"'";return r.arrayBuffer()}).catch(()=>_r(e)):Promise.resolve().then(()=>_r(e))}function gr(e,r,t){return Ct(e).then(n=>WebAssembly.instantiate(n,r)).then(n=>n).then(t,n=>{z(`failed to asynchronously prepare wasm: ${n}`),we(n)})}function Pt(e,r,t,n){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!pr(r)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(o){return z(`wasm streaming compile failed: ${o}`),z("falling back to ArrayBuffer instantiation"),gr(r,t,n)})}):gr(r,t,n)}function St(){var e={a:ha};function r(n,a){return R=n.exports,$e=R.ia,fr(),Ar=R.ma,yt(R.ja),wt(),R}$t();function t(n){r(n.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(e,r)}catch(n){z(`Module.instantiateWasm callback failed with error: ${n}`),w(n)}return Pt(le,ie,e,t).catch(w),{}}var je=e=>{for(;e.length>0;)e.shift()(u)};u.noExitRuntime;var Te=[],Ce=0,At=e=>{var r=new He(e);return r.get_caught()||(r.set_caught(!0),Ce--),r.set_rethrown(!1),Te.push(r),xr(r.excPtr),r.get_exception_ptr()},Z=0,Et=()=>{T(0,0);var e=Te.pop();Br(e.excPtr),Z=0};function He(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){$[this.ptr+4>>2]=r},this.get_type=function(){return $[this.ptr+4>>2]},this.set_destructor=function(r){$[this.ptr+8>>2]=r},this.get_destructor=function(){return $[this.ptr+8>>2]},this.set_caught=function(r){r=r?1:0,x[this.ptr+12>>0]=r},this.get_caught=function(){return x[this.ptr+12>>0]!=0},this.set_rethrown=function(r){r=r?1:0,x[this.ptr+13>>0]=r},this.get_rethrown=function(){return x[this.ptr+13>>0]!=0},this.init=function(r,t){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(t)},this.set_adjusted_ptr=function(r){$[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return $[this.ptr+16>>2]},this.get_exception_ptr=function(){var r=Yr(this.get_type());if(r)return $[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var Ft=e=>{throw Z||(Z=e),Z},Be=e=>{var r=Z;if(!r)return me(0),0;var t=new He(r);t.set_adjusted_ptr(r);var n=t.get_type();if(!n)return me(0),r;for(var a in e){var i=e[a];if(i===0||i===n)break;var o=t.ptr+16;if(Vr(i,n,o))return me(i),r}return me(n),r},Rt=()=>Be([]),Ot=e=>Be([e]),Dt=(e,r)=>Be([e,r]),kt=()=>{var e=Te.pop();e||we("no exception to throw");var r=e.excPtr;throw e.get_rethrown()||(Te.push(e),e.set_rethrown(!0),e.set_caught(!1),Ce++),Z=r,Z},It=(e,r,t)=>{var n=new He(e);throw n.init(r,t),Z=e,Ce++,Z},Wt=()=>Ce,Pe={},xe=e=>{for(;e.length;){var r=e.pop(),t=e.pop();t(r)}};function Ve(e){return this.fromWireType(W[e>>2])}var oe={},ee={},Se={},mr,Ae=e=>{throw new mr(e)},re=(e,r,t)=>{e.forEach(function(s){Se[s]=r});function n(s){var l=t(s);l.length!==e.length&&Ae("Mismatched type converter count");for(var f=0;f{ee.hasOwnProperty(s)?a[l]=ee[s]:(i.push(s),oe.hasOwnProperty(s)||(oe[s]=[]),oe[s].push(()=>{a[l]=ee[s],++o,o===i.length&&n(a)}))}),i.length===0&&n(a)},Mt=e=>{var r=Pe[e];delete Pe[e];var t=r.rawConstructor,n=r.rawDestructor,a=r.fields,i=a.map(o=>o.getterReturnType).concat(a.map(o=>o.setterArgumentType));re([e],i,o=>{var s={};return a.forEach((l,f)=>{var v=l.fieldName,p=o[f],_=l.getter,g=l.getterContext,C=o[f+a.length],E=l.setter,b=l.setterContext;s[v]={read:k=>p.fromWireType(_(g,k)),write:(k,c)=>{var d=[];E(b,k,C.toWireType(d,c)),xe(d)}}}),[{name:r.name,fromWireType:l=>{var f={};for(var v in s)f[v]=s[v].read(l);return n(l),f},toWireType:(l,f)=>{for(var v in s)if(!(v in f))throw new TypeError(`Missing field: "${v}"`);var p=t();for(v in s)s[v].write(p,f[v]);return l!==null&&l.push(n,p),p},argPackAdvance:L,readValueFromPointer:Ve,destructorFunction:n}]})},Ut=(e,r,t,n,a)=>{},jt=()=>{for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);yr=e},yr,D=e=>{for(var r="",t=e;U[t];)r+=yr[U[t++]];return r},se,y=e=>{throw new se(e)};function Ht(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=r.name;if(e||y(`type "${n}" must have a positive integer typeid pointer`),ee.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;y(`Cannot register type '${n}' twice`)}if(ee[e]=r,delete Se[e],oe.hasOwnProperty(e)){var a=oe[e];delete oe[e],a.forEach(i=>i())}}function Y(e,r){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Ht(e,r,t)}var L=8,Bt=(e,r,t,n)=>{r=D(r),Y(e,{name:r,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:L,readValueFromPointer:function(a){return this.fromWireType(U[a])},destructorFunction:null})},xt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Ye=e=>{function r(t){return t.$$.ptrType.registeredClass.name}y(r(e)+" instance already deleted")},Le=!1,br=e=>{},Vt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},$r=e=>{e.count.value-=1;var r=e.count.value===0;r&&Vt(e)},wr=(e,r,t)=>{if(r===t)return e;if(t.baseClass===void 0)return null;var n=wr(e,r,t.baseClass);return n===null?null:t.downcast(n)},Tr={},Yt=()=>Object.keys(he).length,Lt=()=>{var e=[];for(var r in he)he.hasOwnProperty(r)&&e.push(he[r]);return e},ve=[],Ne=()=>{for(;ve.length;){var e=ve.pop();e.$$.deleteScheduled=!1,e.delete()}},de,Nt=e=>{de=e,ve.length&&de&&de(Ne)},Xt=()=>{u.getInheritedInstanceCount=Yt,u.getLiveInheritedInstances=Lt,u.flushPendingDeletes=Ne,u.setDelayFunction=Nt},he={},zt=(e,r)=>{for(r===void 0&&y("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r},Zt=(e,r)=>(r=zt(e,r),he[r]),Ee=(e,r)=>{(!r.ptrType||!r.ptr)&&Ae("makeClassHandle requires ptr and ptrType");var t=!!r.smartPtrType,n=!!r.smartPtr;return t!==n&&Ae("Both smartPtrType and smartPtr must be specified"),r.count={value:1},pe(Object.create(e,{$$:{value:r,writable:!0}}))};function Gt(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=Zt(this.registeredClass,r);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function a(){return this.isSmartPointer?Ee(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):Ee(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var i=this.registeredClass.getActualType(r),o=Tr[i];if(!o)return a.call(this);var s;this.isConst?s=o.constPointerType:s=o.pointerType;var l=wr(r,this.registeredClass,s.registeredClass);return l===null?a.call(this):this.isSmartPointer?Ee(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):Ee(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}var pe=e=>typeof FinalizationRegistry>"u"?(pe=r=>r,e):(Le=new FinalizationRegistry(r=>{$r(r.$$)}),pe=r=>{var t=r.$$,n=!!t.smartPtr;if(n){var a={$$:t};Le.register(r,a,r)}return r},br=r=>Le.unregister(r),pe(e)),qt=()=>{Object.assign(Fe.prototype,{isAliasOf(e){if(!(this instanceof Fe)||!(e instanceof Fe))return!1;var r=this.$$.ptrType.registeredClass,t=this.$$.ptr;e.$$=e.$$;for(var n=e.$$.ptrType.registeredClass,a=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)a=n.upcast(a),n=n.baseClass;return r===n&&t===a},clone(){if(this.$$.ptr||Ye(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=pe(Object.create(Object.getPrototypeOf(this),{$$:{value:xt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),br(this),$r(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ye(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&y("Object already scheduled for deletion"),ve.push(this),ve.length===1&&de&&de(Ne),this.$$.deleteScheduled=!0,this}})};function Fe(){}var _e=(e,r)=>Object.defineProperty(r,"name",{value:e}),Cr=(e,r,t)=>{if(e[r].overloadTable===void 0){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||y(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[r].overloadTable})!`),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}},Xe=(e,r,t)=>{u.hasOwnProperty(e)?((t===void 0||u[e].overloadTable!==void 0&&u[e].overloadTable[t]!==void 0)&&y(`Cannot register public name '${e}' twice`),Cr(u,e,e),u.hasOwnProperty(t)&&y(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),u[e].overloadTable[t]=r):(u[e]=r,t!==void 0&&(u[e].numArguments=t))},Jt=48,Qt=57,Kt=e=>{if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var r=e.charCodeAt(0);return r>=Jt&&r<=Qt?`_${e}`:e};function en(e,r,t,n,a,i,o,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=a,this.getActualType=i,this.upcast=o,this.downcast=s,this.pureVirtualFunctions=[]}var ze=(e,r,t)=>{for(;r!==t;)r.upcast||y(`Expected null or instance of ${t.name}, got an instance of ${r.name}`),e=r.upcast(e),r=r.baseClass;return e};function rn(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Qe(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=ze(r.$$.ptr,t,this.registeredClass);return n}function tn(e,r){var t;if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),this.isSmartPointer?(t=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,t),t):0;(!r||!r.$$)&&y(`Cannot pass "${Qe(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);var n=r.$$.ptrType.registeredClass;if(t=ze(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(r.$$.smartPtr===void 0&&y("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:y(`Cannot convert argument of type ${r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var a=r.clone();t=this.rawShare(t,G.toHandle(()=>a.delete())),e!==null&&e.push(this.rawDestructor,t)}break;default:y("Unsupporting sharing policy")}return t}function nn(e,r){if(r===null)return this.isReference&&y(`null is not a valid ${this.name}`),0;r.$$||y(`Cannot pass "${Qe(r)}" as a ${this.name}`),r.$$.ptr||y(`Cannot pass deleted object as a pointer of type ${this.name}`),r.$$.ptrType.isConst&&y(`Cannot convert argument of type ${r.$$.ptrType.name} to parameter type ${this.name}`);var t=r.$$.ptrType.registeredClass,n=ze(r.$$.ptr,t,this.registeredClass);return n}function Pr(e){return this.fromWireType($[e>>2])}var an=()=>{Object.assign(Re.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){var r;(r=this.rawDestructor)===null||r===void 0||r.call(this,e)},argPackAdvance:L,readValueFromPointer:Pr,deleteObject(e){e!==null&&e.delete()},fromWireType:Gt})};function Re(e,r,t,n,a,i,o,s,l,f,v){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=a,this.pointeeType=i,this.sharingPolicy=o,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=f,this.rawDestructor=v,!a&&r.baseClass===void 0?n?(this.toWireType=rn,this.destructorFunction=null):(this.toWireType=nn,this.destructorFunction=null):this.toWireType=tn}var Sr=(e,r,t)=>{u.hasOwnProperty(e)||Ae("Replacing nonexistant public symbol"),u[e].overloadTable!==void 0&&t!==void 0?u[e].overloadTable[t]=r:(u[e]=r,u[e].argCount=t)},on=(e,r,t)=>{var n=u["dynCall_"+e];return t&&t.length?n.apply(null,[r].concat(t)):n.call(null,r)},Oe=[],Ar,P=e=>{var r=Oe[e];return r||(e>=Oe.length&&(Oe.length=e+1),Oe[e]=r=Ar.get(e)),r},sn=(e,r,t)=>{if(e.includes("j"))return on(e,r,t);var n=P(r).apply(null,t);return n},un=(e,r)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),sn(e,r,t)}},V=(e,r)=>{e=D(e);function t(){return e.includes("j")?un(e,r):P(r)}var n=t();return typeof n!="function"&&y(`unknown function pointer with signature ${e}: ${r}`),n},ln=(e,r)=>{var t=_e(r,function(n){this.name=r,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},Er,Fr=e=>{var r=Hr(e),t=D(r);return q(r),t},De=(e,r)=>{var t=[],n={};function a(i){if(!n[i]&&!ee[i]){if(Se[i]){Se[i].forEach(a);return}t.push(i),n[i]=!0}}throw r.forEach(a),new Er(`${e}: `+t.map(Fr).join([", "]))},cn=(e,r,t,n,a,i,o,s,l,f,v,p,_)=>{v=D(v),i=V(a,i),s&&(s=V(o,s)),f&&(f=V(l,f)),_=V(p,_);var g=Kt(v);Xe(g,function(){De(`Cannot construct ${v} due to unbound types`,[n])}),re([e,r,t],n?[n]:[],function(C){C=C[0];var E,b;n?(E=C.registeredClass,b=E.instancePrototype):b=Fe.prototype;var k=_e(v,function(){if(Object.getPrototypeOf(this)!==c)throw new se("Use 'new' to construct "+v);if(d.constructor_body===void 0)throw new se(v+" has no accessible constructor");var zr=d.constructor_body[arguments.length];if(zr===void 0)throw new se(`Tried to invoke ctor of ${v} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(d.constructor_body).toString()}) parameters instead!`);return zr.apply(this,arguments)}),c=Object.create(b,{constructor:{value:k}});k.prototype=c;var d=new en(v,k,c,_,E,i,s,f);if(d.baseClass){var F,O;(O=(F=d.baseClass).__derivedClasses)!==null&&O!==void 0||(F.__derivedClasses=[]),d.baseClass.__derivedClasses.push(d)}var ue=new Re(v,d,!0,!1,!1),We=new Re(v+"*",d,!1,!1,!1),Xr=new Re(v+" const*",d,!1,!0,!1);return Tr[e]={pointerType:We,constPointerType:Xr},Sr(g,k),[ue,We,Xr]})},Ze=(e,r)=>{for(var t=[],n=0;n>2]);return t};function fn(e){for(var r=1;r{var o=Ze(r,t);a=V(n,a),re([],[e],function(s){s=s[0];var l=`constructor ${s.name}`;if(s.registeredClass.constructor_body===void 0&&(s.registeredClass.constructor_body=[]),s.registeredClass.constructor_body[r-1]!==void 0)throw new se(`Cannot register multiple constructors with identical number of parameters (${r-1}) for class '${s.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return s.registeredClass.constructor_body[r-1]=()=>{De(`Cannot construct ${s.name} due to unbound types`,o)},re([],o,f=>(f.splice(1,0,null),s.registeredClass.constructor_body[r-1]=Ge(l,f,null,a,i),[])),[]})},Rr=e=>{e=e.trim();const r=e.indexOf("(");return r!==-1?e.substr(0,r):e},dn=(e,r,t,n,a,i,o,s,l)=>{var f=Ze(t,n);r=D(r),r=Rr(r),i=V(a,i),re([],[e],function(v){v=v[0];var p=`${v.name}.${r}`;r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&v.registeredClass.pureVirtualFunctions.push(r);function _(){De(`Cannot call ${p} due to unbound types`,f)}var g=v.registeredClass.instancePrototype,C=g[r];return C===void 0||C.overloadTable===void 0&&C.className!==v.name&&C.argCount===t-2?(_.argCount=t-2,_.className=v.name,g[r]=_):(Cr(g,r,p),g[r].overloadTable[t-2]=_),re([],f,function(E){var b=Ge(p,E,v,i,o);return g[r].overloadTable===void 0?(b.argCount=t-2,g[r]=b):g[r].overloadTable[t-2]=b,[]}),[]})};function hn(){Object.assign(Or.prototype,{get(e){return this.allocated[e]},has(e){return this.allocated[e]!==void 0},allocate(e){var r=this.freelist.pop()||this.allocated.length;return this.allocated[r]=e,r},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Or(){this.allocated=[void 0],this.freelist=[]}var B=new Or,qe=e=>{e>=B.reserved&&--B.get(e).refcount===0&&B.free(e)},pn=()=>{for(var e=0,r=B.reserved;r{B.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),B.reserved=B.allocated.length,u.count_emval_handles=pn},G={toValue:e=>(e||y("Cannot use deleted val. handle = "+e),B.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return B.allocate({refcount:1,value:e})}}},gn=(e,r)=>{r=D(r),Y(e,{name:r,fromWireType:t=>{var n=G.toValue(t);return qe(t),n},toWireType:(t,n)=>G.toHandle(n),argPackAdvance:L,readValueFromPointer:Ve,destructorFunction:null})},mn=(e,r,t)=>{switch(r){case 1:return t?function(n){return this.fromWireType(x[n>>0])}:function(n){return this.fromWireType(U[n>>0])};case 2:return t?function(n){return this.fromWireType(ae[n>>1])}:function(n){return this.fromWireType(ce[n>>1])};case 4:return t?function(n){return this.fromWireType(W[n>>2])}:function(n){return this.fromWireType($[n>>2])};default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},yn=(e,r,t,n)=>{r=D(r);function a(){}a.values={},Y(e,{name:r,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,o)=>o.value,argPackAdvance:L,readValueFromPointer:mn(r,t,n),destructorFunction:null}),Xe(r,a)},Je=(e,r)=>{var t=ee[e];return t===void 0&&y(r+" has unknown type "+Fr(e)),t},bn=(e,r,t)=>{var n=Je(e,"enum");r=D(r);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:_e(`${n.name}_${r}`,function(){})}});a.values[t]=i,a[r]=i},Qe=e=>{if(e===null)return"null";var r=typeof e;return r==="object"||r==="array"||r==="function"?e.toString():""+e},$n=(e,r)=>{switch(r){case 4:return function(t){return this.fromWireType(lr[t>>2])};case 8:return function(t){return this.fromWireType(cr[t>>3])};default:throw new TypeError(`invalid float width (${r}): ${e}`)}},wn=(e,r,t)=>{r=D(r),Y(e,{name:r,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:L,readValueFromPointer:$n(r,t),destructorFunction:null})},Tn=(e,r,t,n,a,i,o)=>{var s=Ze(r,t);e=D(e),e=Rr(e),a=V(n,a),Xe(e,function(){De(`Cannot call ${e} due to unbound types`,s)},r-1),re([],s,function(l){var f=[l[0],null].concat(l.slice(1));return Sr(e,Ge(e,f,null,a,i),r-1),[]})},Cn=(e,r,t)=>{switch(r){case 1:return t?n=>x[n>>0]:n=>U[n>>0];case 2:return t?n=>ae[n>>1]:n=>ce[n>>1];case 4:return t?n=>W[n>>2]:n=>$[n>>2];default:throw new TypeError(`invalid integer width (${r}): ${e}`)}},Pn=(e,r,t,n,a)=>{r=D(r);var i=v=>v;if(n===0){var o=32-8*t;i=v=>v<>>o}var s=r.includes("unsigned"),l=(v,p)=>{},f;s?f=function(v,p){return l(p,this.name),p>>>0}:f=function(v,p){return l(p,this.name),p},Y(e,{name:r,fromWireType:i,toWireType:f,argPackAdvance:L,readValueFromPointer:Cn(r,t,n!==0),destructorFunction:null})},Sn=(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[r];function i(o){var s=$[o>>2],l=$[o+4>>2];return new a(x.buffer,l,s)}t=D(t),Y(e,{name:t,fromWireType:i,argPackAdvance:L,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})},Dr=(e,r,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-a},An=(e,r,t)=>Dr(e,U,r,t),kr=e=>{for(var r=0,t=0;t=55296&&n<=57343?(r+=4,++t):r+=3}return r},Ir=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,En=(e,r,t)=>{for(var n=r+t,a=r;e[a]&&!(a>=n);)++a;if(a-r>16&&e.buffer&&Ir)return Ir.decode(e.subarray(r,a));for(var i="";r>10,56320|f&1023)}}return i},Ke=(e,r)=>e?En(U,e,r):"",Fn=(e,r)=>{r=D(r);var t=r==="std::string";Y(e,{name:r,fromWireType(n){var a=$[n>>2],i=n+4,o;if(t)for(var s=i,l=0;l<=a;++l){var f=i+l;if(l==a||U[f]==0){var v=f-s,p=Ke(s,v);o===void 0?o=p:(o+="\0",o+=p),s=f+1}}else{for(var _=new Array(a),l=0;l>2]=i,t&&o)An(a,l,i+1);else if(o)for(var f=0;f255&&(q(l),y("String has UTF-16 code units that do not fit in 8 bits")),U[l+f]=v}else for(var f=0;f{for(var t=e,n=t>>1,a=n+r/2;!(n>=a)&&ce[n];)++n;if(t=n<<1,t-e>32&&Wr)return Wr.decode(U.subarray(e,t));for(var i="",o=0;!(o>=r/2);++o){var s=ae[e+o*2>>1];if(s==0)break;i+=String.fromCharCode(s)}return i},On=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=r,i=t>1]=s,r+=2}return ae[r>>1]=0,r-a},Dn=e=>e.length*2,kn=(e,r)=>{for(var t=0,n="";!(t>=r/4);){var a=W[e+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},In=(e,r,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=r,i=a+t-4,o=0;o=55296&&s<=57343){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023}if(W[r>>2]=s,r+=4,r+4>i)break}return W[r>>2]=0,r-a},Wn=e=>{for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r},Mn=(e,r,t)=>{t=D(t);var n,a,i,o,s;r===2?(n=Rn,a=On,o=Dn,i=()=>ce,s=1):r===4&&(n=kn,a=In,o=Wn,i=()=>$,s=2),Y(e,{name:t,fromWireType:l=>{for(var f=$[l>>2],v=i(),p,_=l+4,g=0;g<=f;++g){var C=l+4+g*r;if(g==f||v[C>>s]==0){var E=C-_,b=n(_,E);p===void 0?p=b:(p+="\0",p+=b),_=C+r}}return q(l),p},toWireType:(l,f)=>{typeof f!="string"&&y(`Cannot pass non-string to C++ string type ${t}`);var v=o(f),p=tr(4+v+r);return $[p>>2]=v>>s,a(f,p+4,v+r),l!==null&&l.push(q,p),p},argPackAdvance:L,readValueFromPointer:Ve,destructorFunction(l){q(l)}})},Un=(e,r,t,n,a,i)=>{Pe[e]={name:D(r),rawConstructor:V(t,n),rawDestructor:V(a,i),fields:[]}},jn=(e,r,t,n,a,i,o,s,l,f)=>{Pe[e].fields.push({fieldName:D(r),getterReturnType:t,getter:V(n,a),getterContext:i,setterArgumentType:o,setter:V(s,l),setterContext:f})},Hn=(e,r)=>{r=D(r),Y(e,{isVoid:!0,name:r,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},er=[],Bn=(e,r,t,n)=>(e=er[e],r=G.toValue(r),e(null,r,t,n)),xn={},Vn=e=>{var r=xn[e];return r===void 0?D(e):r},Mr=()=>{if(typeof globalThis=="object")return globalThis;function e(r){r.$$$embind_global$$$=r;var t=typeof $$$embind_global$$$=="object"&&r.$$$embind_global$$$==r;return t||delete r.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&e(global)?$$$embind_global$$$=global:typeof self=="object"&&e(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Yn=e=>e===0?G.toHandle(Mr()):(e=Vn(e),G.toHandle(Mr()[e])),Ln=e=>{var r=er.length;return er.push(e),r},Nn=(e,r)=>{for(var t=new Array(e),n=0;n>2],"parameter "+n);return t},Xn=Reflect.construct,zn=(e,r,t)=>{var n=[],a=e.toWireType(n,t);return n.length&&($[r>>2]=G.toHandle(n)),a},Zn=(e,r,t)=>{var n=Nn(e,r),a=n.shift();e--;var i=new Array(e),o=(l,f,v,p)=>{for(var _=0,g=0;gl.name).join(", ")}) => ${a.name}>`;return Ln(_e(s,o))},Gn=e=>{e>4&&(B.get(e).refcount+=1)},qn=e=>{var r=G.toValue(e);xe(r),qe(e)},Jn=(e,r)=>{e=Je(e,"_emval_take_value");var t=e.readValueFromPointer(r);return G.toHandle(t)},Qn=()=>{we("")},Kn=(e,r,t)=>U.copyWithin(e,r,r+t),ea=()=>2147483648,ra=e=>{var r=$e.buffer,t=(e-r.byteLength+65535)/65536;try{return $e.grow(t),fr(),1}catch{}},ta=e=>{var r=U.length;e>>>=0;var t=ea();if(e>t)return!1;for(var n=(l,f)=>l+(f-l%f)%f,a=1;a<=4;a*=2){var i=r*(1+.2/a);i=Math.min(i,e+100663296);var o=Math.min(t,n(Math.max(e,i),65536)),s=ra(o);if(s)return!0}return!1},rr={},na=()=>N||"./this.program",ge=()=>{if(!ge.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:na()};for(var t in rr)rr[t]===void 0?delete r[t]:r[t]=rr[t];var n=[];for(var t in r)n.push(`${t}=${r[t]}`);ge.strings=n}return ge.strings},aa=(e,r)=>{for(var t=0;t>0]=e.charCodeAt(t);x[r>>0]=0},ia=(e,r)=>{var t=0;return ge().forEach((n,a)=>{var i=r+t;$[e+a*4>>2]=i,aa(n,i),t+=n.length+1}),0},oa=(e,r)=>{var t=ge();$[e>>2]=t.length;var n=0;return t.forEach(a=>n+=a.length+1),$[r>>2]=n,0},sa=e=>e,ke=e=>e%4===0&&(e%100!==0||e%400===0),ua=(e,r)=>{for(var t=0,n=0;n<=r;t+=e[n++]);return t},Ur=[31,29,31,30,31,30,31,31,30,31,30,31],jr=[31,28,31,30,31,30,31,31,30,31,30,31],la=(e,r)=>{for(var t=new Date(e.getTime());r>0;){var n=ke(t.getFullYear()),a=t.getMonth(),i=(n?Ur:jr)[a];if(r>i-t.getDate())r-=i-t.getDate()+1,t.setDate(1),a<11?t.setMonth(a+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+r),t}return t};function ca(e,r,t){var n=t>0?t:kr(e)+1,a=new Array(n),i=Dr(e,a,0,a.length);return r&&(a.length=i),a}var fa=(e,r)=>{x.set(e,r)},va=(e,r,t,n)=>{var a=$[n+40>>2],i={tm_sec:W[n>>2],tm_min:W[n+4>>2],tm_hour:W[n+8>>2],tm_mday:W[n+12>>2],tm_mon:W[n+16>>2],tm_year:W[n+20>>2],tm_wday:W[n+24>>2],tm_yday:W[n+28>>2],tm_isdst:W[n+32>>2],tm_gmtoff:W[n+36>>2],tm_zone:a?Ke(a):""},o=Ke(t),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in s)o=o.replace(new RegExp(l,"g"),s[l]);var f=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],v=["January","February","March","April","May","June","July","August","September","October","November","December"];function p(c,d,F){for(var O=typeof c=="number"?c.toString():c||"";O.length0?1:0}var O;return(O=F(c.getFullYear()-d.getFullYear()))===0&&(O=F(c.getMonth()-d.getMonth()))===0&&(O=F(c.getDate()-d.getDate())),O}function C(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function E(c){var d=la(new Date(c.tm_year+1900,0,1),c.tm_yday),F=new Date(d.getFullYear(),0,4),O=new Date(d.getFullYear()+1,0,4),ue=C(F),We=C(O);return g(ue,d)<=0?g(We,d)<=0?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var b={"%a":c=>f[c.tm_wday].substring(0,3),"%A":c=>f[c.tm_wday],"%b":c=>v[c.tm_mon].substring(0,3),"%B":c=>v[c.tm_mon],"%C":c=>{var d=c.tm_year+1900;return _(d/100|0,2)},"%d":c=>_(c.tm_mday,2),"%e":c=>p(c.tm_mday,2," "),"%g":c=>E(c).toString().substring(2),"%G":c=>E(c),"%H":c=>_(c.tm_hour,2),"%I":c=>{var d=c.tm_hour;return d==0?d=12:d>12&&(d-=12),_(d,2)},"%j":c=>_(c.tm_mday+ua(ke(c.tm_year+1900)?Ur:jr,c.tm_mon-1),3),"%m":c=>_(c.tm_mon+1,2),"%M":c=>_(c.tm_min,2),"%n":()=>` +`,"%p":c=>c.tm_hour>=0&&c.tm_hour<12?"AM":"PM","%S":c=>_(c.tm_sec,2),"%t":()=>" ","%u":c=>c.tm_wday||7,"%U":c=>{var d=c.tm_yday+7-c.tm_wday;return _(Math.floor(d/7),2)},"%V":c=>{var d=Math.floor((c.tm_yday+7-(c.tm_wday+6)%7)/7);if((c.tm_wday+371-c.tm_yday-2)%7<=2&&d++,d){if(d==53){var O=(c.tm_wday+371-c.tm_yday)%7;O!=4&&(O!=3||!ke(c.tm_year))&&(d=1)}}else{d=52;var F=(c.tm_wday+7-c.tm_yday-1)%7;(F==4||F==5&&ke(c.tm_year%400-1))&&d++}return _(d,2)},"%w":c=>c.tm_wday,"%W":c=>{var d=c.tm_yday+7-(c.tm_wday+6)%7;return _(Math.floor(d/7),2)},"%y":c=>(c.tm_year+1900).toString().substring(2),"%Y":c=>c.tm_year+1900,"%z":c=>{var d=c.tm_gmtoff,F=d>=0;return d=Math.abs(d)/60,d=d/60*100+d%60,(F?"+":"-")+("0000"+d).slice(-4)},"%Z":c=>c.tm_zone,"%%":()=>"%"};o=o.replace(/%%/g,"\0\0");for(var l in b)o.includes(l)&&(o=o.replace(new RegExp(l,"g"),b[l](i)));o=o.replace(/\0\0/g,"%");var k=ca(o,!1);return k.length>r?0:(fa(k,e),k.length-1)},da=(e,r,t,n,a)=>va(e,r,t,n);mr=u.InternalError=class extends Error{constructor(r){super(r),this.name="InternalError"}},jt(),se=u.BindingError=class extends Error{constructor(r){super(r),this.name="BindingError"}},qt(),Xt(),an(),Er=u.UnboundTypeError=ln(Error,"UnboundTypeError"),hn(),_n();var ha={s:At,u:Et,b:Rt,g:Ot,q:Dt,J:kt,f:It,V:Wt,d:Ft,da:Mt,Q:Ut,_:Bt,ca:cn,ba:vn,w:dn,Y:gn,x:yn,h:bn,L:wn,M:Tn,t:Pn,o:Sn,K:Fn,C:Mn,A:Un,ea:jn,$:Hn,R:Bn,ha:qe,fa:Yn,Z:Zn,N:Gn,O:qn,aa:Jn,B:Qn,X:Kn,W:ta,T:ia,U:oa,E:Ra,D:ya,F:Fa,n:Oa,a:pa,e:$a,m:ma,k:Ta,H:Aa,v:Pa,G:Ea,z:ka,P:Wa,l:wa,j:ba,c:ga,p:_a,I:Sa,r:Da,i:Ca,y:Ia,ga:sa,S:da},R=St(),q=u._free=e=>(q=u._free=R.ka)(e),tr=u._malloc=e=>(tr=u._malloc=R.la)(e),Hr=e=>(Hr=R.na)(e),T=(e,r)=>(T=R.oa)(e,r),me=e=>(me=R.pa)(e),S=()=>(S=R.qa)(),A=e=>(A=R.ra)(e),Br=e=>(Br=R.sa)(e),xr=e=>(xr=R.ta)(e),Vr=(e,r,t)=>(Vr=R.ua)(e,r,t),Yr=e=>(Yr=R.va)(e);u.dynCall_viijii=(e,r,t,n,a,i,o)=>(u.dynCall_viijii=R.wa)(e,r,t,n,a,i,o);var Lr=u.dynCall_jiiii=(e,r,t,n,a)=>(Lr=u.dynCall_jiiii=R.xa)(e,r,t,n,a);u.dynCall_iiiiij=(e,r,t,n,a,i,o)=>(u.dynCall_iiiiij=R.ya)(e,r,t,n,a,i,o),u.dynCall_iiiiijj=(e,r,t,n,a,i,o,s,l)=>(u.dynCall_iiiiijj=R.za)(e,r,t,n,a,i,o,s,l),u.dynCall_iiiiiijj=(e,r,t,n,a,i,o,s,l,f)=>(u.dynCall_iiiiiijj=R.Aa)(e,r,t,n,a,i,o,s,l,f);function pa(e,r){var t=S();try{return P(e)(r)}catch(n){if(A(t),n!==n+0)throw n;T(1,0)}}function _a(e,r,t,n){var a=S();try{P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function ga(e,r,t){var n=S();try{P(e)(r,t)}catch(a){if(A(n),a!==a+0)throw a;T(1,0)}}function ma(e,r,t,n){var a=S();try{return P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function ya(e,r,t,n,a){var i=S();try{return P(e)(r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}function ba(e,r){var t=S();try{P(e)(r)}catch(n){if(A(t),n!==n+0)throw n;T(1,0)}}function $a(e,r,t){var n=S();try{return P(e)(r,t)}catch(a){if(A(n),a!==a+0)throw a;T(1,0)}}function wa(e){var r=S();try{P(e)()}catch(t){if(A(r),t!==t+0)throw t;T(1,0)}}function Ta(e,r,t,n,a){var i=S();try{return P(e)(r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}function Ca(e,r,t,n,a,i,o,s,l,f,v){var p=S();try{P(e)(r,t,n,a,i,o,s,l,f,v)}catch(_){if(A(p),_!==_+0)throw _;T(1,0)}}function Pa(e,r,t,n,a,i,o){var s=S();try{return P(e)(r,t,n,a,i,o)}catch(l){if(A(s),l!==l+0)throw l;T(1,0)}}function Sa(e,r,t,n,a){var i=S();try{P(e)(r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}function Aa(e,r,t,n,a,i){var o=S();try{return P(e)(r,t,n,a,i)}catch(s){if(A(o),s!==s+0)throw s;T(1,0)}}function Ea(e,r,t,n,a,i,o,s){var l=S();try{return P(e)(r,t,n,a,i,o,s)}catch(f){if(A(l),f!==f+0)throw f;T(1,0)}}function Fa(e,r,t,n){var a=S();try{return P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function Ra(e,r,t,n){var a=S();try{return P(e)(r,t,n)}catch(i){if(A(a),i!==i+0)throw i;T(1,0)}}function Oa(e){var r=S();try{return P(e)()}catch(t){if(A(r),t!==t+0)throw t;T(1,0)}}function Da(e,r,t,n,a,i,o,s){var l=S();try{P(e)(r,t,n,a,i,o,s)}catch(f){if(A(l),f!==f+0)throw f;T(1,0)}}function ka(e,r,t,n,a,i,o,s,l,f,v,p){var _=S();try{return P(e)(r,t,n,a,i,o,s,l,f,v,p)}catch(g){if(A(_),g!==g+0)throw g;T(1,0)}}function Ia(e,r,t,n,a,i,o,s,l,f,v,p,_,g,C,E){var b=S();try{P(e)(r,t,n,a,i,o,s,l,f,v,p,_,g,C,E)}catch(k){if(A(b),k!==k+0)throw k;T(1,0)}}function Wa(e,r,t,n,a){var i=S();try{return Lr(e,r,t,n,a)}catch(o){if(A(i),o!==o+0)throw o;T(1,0)}}var Ie;fe=function e(){Ie||Nr(),Ie||(fe=e)};function Nr(){if(K>0||(pt(),K>0))return;function e(){Ie||(Ie=!0,u.calledRun=!0,!ur&&(_t(),j(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),gt()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),e()},1)):e()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Nr(),m.ready}})();const Me=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"];function Zr(h){return h.join("|")}function Gr(h){const m=nr(h);let u=0,j=Me.length-1;for(;u<=j;){const w=Math.floor((u+j)/2),H=Me[w],N=nr(H);if(N===m)return H;N{const u=h.match(/_(.+?)\.wasm$/);return u?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${u[1]}/${h}`:m+h}};let be=new WeakMap;function Ue(h,m){var H;const u=be.get(h);if(u!=null&&u.modulePromise&&(m===void 0||Object.is(m,u.moduleOverrides)))return u.modulePromise;const j=(H=m!=null?m:u==null?void 0:u.moduleOverrides)!=null?H:ot,w=h({...j});return be.set(h,{moduleOverrides:j,modulePromise:w}),w}function st(){be=new WeakMap}function ut(h,m){be.set(h,{moduleOverrides:m})}async function lt(h,m,u=te){const j={...te,...u},w=await Ue(h),{size:H}=m,N=new Uint8Array(await m.arrayBuffer()),J=w._malloc(H);w.HEAPU8.set(N,J);const X=w.readBarcodesFromImage(J,H,ir(w,j));w._free(J);const I=[];for(let Q=0;Q{var d=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(_={}){var o=_,D,S;o.ready=new Promise((r,e)=>{D=r,S=e});var j=Object.assign({},o),Cr=typeof window=="object",tr=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;var W="";function pe(r){return o.locateFile?o.locateFile(r,W):W+r}var vr;(Cr||tr)&&(tr?W=self.location.href:typeof document<"u"&&document.currentScript&&(W=document.currentScript.src),d&&(W=d),W.indexOf("blob:")!==0?W=W.substr(0,W.replace(/[?#].*/,"").lastIndexOf("/")+1):W="",tr&&(vr=r=>{var e=new XMLHttpRequest;return e.open("GET",r,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)})),o.print||console.log.bind(console);var Q=o.printErr||console.error.bind(console);Object.assign(o,j),j=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit;var G;o.wasmBinary&&(G=o.wasmBinary),typeof WebAssembly!="object"&&dr("no native wasm support detected");var nr,Er=!1,M,b,Z,J,H,p,Rr,Fr;function Pr(){var r=nr.buffer;o.HEAP8=M=new Int8Array(r),o.HEAP16=Z=new Int16Array(r),o.HEAPU8=b=new Uint8Array(r),o.HEAPU16=J=new Uint16Array(r),o.HEAP32=H=new Int32Array(r),o.HEAPU32=p=new Uint32Array(r),o.HEAPF32=Rr=new Float32Array(r),o.HEAPF64=Fr=new Float64Array(r)}var Sr=[],Wr=[],Ir=[];function ge(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)be(o.preRun.shift());_r(Sr)}function me(){_r(Wr)}function ye(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)Te(o.postRun.shift());_r(Ir)}function be(r){Sr.unshift(r)}function we(r){Wr.unshift(r)}function Te(r){Ir.unshift(r)}var B=0,K=null;function Ae(r){var e;B++,(e=o.monitorRunDependencies)===null||e===void 0||e.call(o,B)}function $e(r){var e;if(B--,(e=o.monitorRunDependencies)===null||e===void 0||e.call(o,B),B==0&&K){var t=K;K=null,t()}}function dr(r){var e;(e=o.onAbort)===null||e===void 0||e.call(o,r),r="Aborted("+r+")",Q(r),Er=!0,r+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(r);throw S(t),t}var Ce="data:application/octet-stream;base64,",kr=r=>r.startsWith(Ce),L;L="zxing_writer.wasm",kr(L)||(L=pe(L));function Or(r){if(r==L&&G)return new Uint8Array(G);if(vr)return vr(r);throw"both async and sync fetching of the wasm failed"}function Ee(r){return!G&&(Cr||tr)&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(e=>{if(!e.ok)throw"failed to load wasm binary file at '"+r+"'";return e.arrayBuffer()}).catch(()=>Or(r)):Promise.resolve().then(()=>Or(r))}function Ur(r,e,t){return Ee(r).then(n=>WebAssembly.instantiate(n,e)).then(n=>n).then(t,n=>{Q(`failed to asynchronously prepare wasm: ${n}`),dr(n)})}function Re(r,e,t,n){return!r&&typeof WebAssembly.instantiateStreaming=="function"&&!kr(e)&&typeof fetch=="function"?fetch(e,{credentials:"same-origin"}).then(a=>{var i=WebAssembly.instantiateStreaming(a,t);return i.then(n,function(s){return Q(`wasm streaming compile failed: ${s}`),Q("falling back to ArrayBuffer instantiation"),Ur(e,t,n)})}):Ur(e,t,n)}function Fe(){var r={a:Lt};function e(n,a){return y=n.exports,nr=y.R,Pr(),Nr=y.V,we(y.S),$e(),y}Ae();function t(n){e(n.instance)}if(o.instantiateWasm)try{return o.instantiateWasm(r,e)}catch(n){Q(`Module.instantiateWasm callback failed with error: ${n}`),S(n)}return Re(G,L,r,t).catch(S),{}}var _r=r=>{for(;r.length>0;)r.shift()(o)};o.noExitRuntime;var Mr=[],Pe=r=>{var e=new hr(r);return e.get_caught()||e.set_caught(!0),e.set_rethrown(!1),Mr.push(e),zr(e.excPtr),e.get_exception_ptr()},V=0,Se=()=>{$(0,0);var r=Mr.pop();Yr(r.excPtr),V=0};function hr(r){this.excPtr=r,this.ptr=r-24,this.set_type=function(e){p[this.ptr+4>>2]=e},this.get_type=function(){return p[this.ptr+4>>2]},this.set_destructor=function(e){p[this.ptr+8>>2]=e},this.get_destructor=function(){return p[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,M[this.ptr+12>>0]=e},this.get_caught=function(){return M[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,M[this.ptr+13>>0]=e},this.get_rethrown=function(){return M[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){p[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return p[this.ptr+16>>2]},this.get_exception_ptr=function(){var e=ee(this.get_type());if(e)return p[this.excPtr>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.excPtr}}var We=r=>{throw V||(V=r),V},pr=r=>{var e=V;if(!e)return z(0),0;var t=new hr(e);t.set_adjusted_ptr(e);var n=t.get_type();if(!n)return z(0),e;for(var a in r){var i=r[a];if(i===0||i===n)break;var s=t.ptr+16;if(re(i,n,s))return z(i),e}return z(n),e},Ie=()=>pr([]),ke=r=>pr([r]),Oe=(r,e)=>pr([r,e]),Ue=(r,e,t)=>{var n=new hr(r);throw n.init(e,t),V=r,V},ar={},gr=r=>{for(;r.length;){var e=r.pop(),t=r.pop();t(e)}};function mr(r){return this.fromWireType(H[r>>2])}var N={},x={},ir={},Dr,jr=r=>{throw new Dr(r)},Hr=(r,e,t)=>{r.forEach(function(u){ir[u]=e});function n(u){var c=t(u);c.length!==r.length&&jr("Mismatched type converter count");for(var f=0;f{x.hasOwnProperty(u)?a[c]=x[u]:(i.push(u),N.hasOwnProperty(u)||(N[u]=[]),N[u].push(()=>{a[c]=x[u],++s,s===i.length&&n(a)}))}),i.length===0&&n(a)},Me=r=>{var e=ar[r];delete ar[r];var t=e.rawConstructor,n=e.rawDestructor,a=e.fields,i=a.map(s=>s.getterReturnType).concat(a.map(s=>s.setterArgumentType));Hr([r],i,s=>{var u={};return a.forEach((c,f)=>{var l=c.fieldName,v=s[f],g=c.getter,h=c.getterContext,U=s[f+a.length],P=c.setter,w=c.setterContext;u[l]={read:rr=>v.fromWireType(g(h,rr)),write:(rr,Tr)=>{var cr=[];P(w,rr,U.toWireType(cr,Tr)),gr(cr)}}}),[{name:e.name,fromWireType:c=>{var f={};for(var l in u)f[l]=u[l].read(c);return n(c),f},toWireType:(c,f)=>{for(var l in u)if(!(l in f))throw new TypeError(`Missing field: "${l}"`);var v=t();for(l in u)u[l].write(v,f[l]);return c!==null&&c.push(n,v),v},argPackAdvance:k,readValueFromPointer:mr,destructorFunction:n}]})},De=(r,e,t,n,a)=>{},je=()=>{for(var r=new Array(256),e=0;e<256;++e)r[e]=String.fromCharCode(e);Br=r},Br,m=r=>{for(var e="",t=r;b[t];)e+=Br[b[t++]];return e},Vr,T=r=>{throw new Vr(r)};function He(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var n=e.name;if(r||T(`type "${n}" must have a positive integer typeid pointer`),x.hasOwnProperty(r)){if(t.ignoreDuplicateRegistrations)return;T(`Cannot register type '${n}' twice`)}if(x[r]=e,delete ir[r],N.hasOwnProperty(r)){var a=N[r];delete N[r],a.forEach(i=>i())}}function I(r,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in e))throw new TypeError("registerType registeredInstance requires argPackAdvance");return He(r,e,t)}var k=8,Be=(r,e,t,n)=>{e=m(e),I(r,{name:e,fromWireType:function(a){return!!a},toWireType:function(a,i){return i?t:n},argPackAdvance:k,readValueFromPointer:function(a){return this.fromWireType(b[a])},destructorFunction:null})};function Ve(){Object.assign(xr.prototype,{get(r){return this.allocated[r]},has(r){return this.allocated[r]!==void 0},allocate(r){var e=this.freelist.pop()||this.allocated.length;return this.allocated[e]=r,e},free(r){this.allocated[r]=void 0,this.freelist.push(r)}})}function xr(){this.allocated=[void 0],this.freelist=[]}var C=new xr,yr=r=>{r>=C.reserved&&--C.get(r).refcount===0&&C.free(r)},xe=()=>{for(var r=0,e=C.reserved;e{C.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),C.reserved=C.allocated.length,o.count_emval_handles=xe},X={toValue:r=>(r||T("Cannot use deleted val. handle = "+r),C.get(r).value),toHandle:r=>{switch(r){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return C.allocate({refcount:1,value:r})}}},Ze=(r,e)=>{e=m(e),I(r,{name:e,fromWireType:t=>{var n=X.toValue(t);return yr(t),n},toWireType:(t,n)=>X.toHandle(n),argPackAdvance:k,readValueFromPointer:mr,destructorFunction:null})},Le=(r,e,t)=>{if(r[e].overloadTable===void 0){var n=r[e];r[e]=function(){return r[e].overloadTable.hasOwnProperty(arguments.length)||T(`Function '${t}' called with an invalid number of arguments (${arguments.length}) - expects one of (${r[e].overloadTable})!`),r[e].overloadTable[arguments.length].apply(this,arguments)},r[e].overloadTable=[],r[e].overloadTable[n.argCount]=n}},Xr=(r,e,t)=>{o.hasOwnProperty(r)?((t===void 0||o[r].overloadTable!==void 0&&o[r].overloadTable[t]!==void 0)&&T(`Cannot register public name '${r}' twice`),Le(o,r,r),o.hasOwnProperty(t)&&T(`Cannot register multiple overloads of a function with the same number of arguments (${t})!`),o[r].overloadTable[t]=e):(o[r]=e,t!==void 0&&(o[r].numArguments=t))},Ne=(r,e,t)=>{switch(e){case 1:return t?function(n){return this.fromWireType(M[n>>0])}:function(n){return this.fromWireType(b[n>>0])};case 2:return t?function(n){return this.fromWireType(Z[n>>1])}:function(n){return this.fromWireType(J[n>>1])};case 4:return t?function(n){return this.fromWireType(H[n>>2])}:function(n){return this.fromWireType(p[n>>2])};default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},qe=(r,e,t,n)=>{e=m(e);function a(){}a.values={},I(r,{name:e,constructor:a,fromWireType:function(i){return this.constructor.values[i]},toWireType:(i,s)=>s.value,argPackAdvance:k,readValueFromPointer:Ne(e,t,n),destructorFunction:null}),Xr(e,a)},or=(r,e)=>Object.defineProperty(e,"name",{value:r}),Zr=r=>{var e=Kr(r),t=m(e);return O(e),t},Lr=(r,e)=>{var t=x[r];return t===void 0&&T(e+" has unknown type "+Zr(r)),t},Qe=(r,e,t)=>{var n=Lr(r,"enum");e=m(e);var a=n.constructor,i=Object.create(n.constructor.prototype,{value:{value:t},constructor:{value:or(`${n.name}_${e}`,function(){})}});a.values[t]=i,a[e]=i},Ge=(r,e)=>{switch(e){case 4:return function(t){return this.fromWireType(Rr[t>>2])};case 8:return function(t){return this.fromWireType(Fr[t>>3])};default:throw new TypeError(`invalid float width (${e}): ${r}`)}},Je=(r,e,t)=>{e=m(e),I(r,{name:e,fromWireType:n=>n,toWireType:(n,a)=>a,argPackAdvance:k,readValueFromPointer:Ge(e,t),destructorFunction:null})};function Ke(r){for(var e=1;e{for(var t=[],n=0;n>2]);return t},rt=(r,e,t)=>{o.hasOwnProperty(r)||jr("Replacing nonexistant public symbol"),o[r].overloadTable!==void 0&&t!==void 0?o[r].overloadTable[t]=e:(o[r]=e,o[r].argCount=t)},et=(r,e,t)=>{var n=o["dynCall_"+r];return t&&t.length?n.apply(null,[e].concat(t)):n.call(null,e)},sr=[],Nr,A=r=>{var e=sr[r];return e||(r>=sr.length&&(sr.length=r+1),sr[r]=e=Nr.get(r)),e},tt=(r,e,t)=>{if(r.includes("j"))return et(r,e,t);var n=A(e).apply(null,t);return n},nt=(r,e)=>{var t=[];return function(){return t.length=0,Object.assign(t,arguments),tt(r,e,t)}},Y=(r,e)=>{r=m(r);function t(){return r.includes("j")?nt(r,e):A(e)}var n=t();return typeof n!="function"&&T(`unknown function pointer with signature ${r}: ${e}`),n},at=(r,e)=>{var t=or(e,function(n){this.name=e,this.message=n;var a=new Error(n).stack;a!==void 0&&(this.stack=this.toString()+` +`+a.replace(/^Error(:[^\n]*)?\n/,""))});return t.prototype=Object.create(r.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},t},qr,it=(r,e)=>{var t=[],n={};function a(i){if(!n[i]&&!x[i]){if(ir[i]){ir[i].forEach(a);return}t.push(i),n[i]=!0}}throw e.forEach(a),new qr(`${r}: `+t.map(Zr).join([", "]))},ot=r=>{r=r.trim();const e=r.indexOf("(");return e!==-1?r.substr(0,e):r},st=(r,e,t,n,a,i,s)=>{var u=ze(e,t);r=m(r),r=ot(r),a=Y(n,a),Xr(r,function(){it(`Cannot call ${r} due to unbound types`,u)},e-1),Hr([],u,function(c){var f=[c[0],null].concat(c.slice(1));return rt(r,Ye(r,f,null,a,i),e-1),[]})},ut=(r,e,t)=>{switch(e){case 1:return t?n=>M[n>>0]:n=>b[n>>0];case 2:return t?n=>Z[n>>1]:n=>J[n>>1];case 4:return t?n=>H[n>>2]:n=>p[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${r}`)}},ct=(r,e,t,n,a)=>{e=m(e);var i=l=>l;if(n===0){var s=32-8*t;i=l=>l<>>s}var u=e.includes("unsigned"),c=(l,v)=>{},f;u?f=function(l,v){return c(v,this.name),v>>>0}:f=function(l,v){return c(v,this.name),v},I(r,{name:e,fromWireType:i,toWireType:f,argPackAdvance:k,readValueFromPointer:ut(e,t,n!==0),destructorFunction:null})},ft=(r,e,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],a=n[e];function i(s){var u=p[s>>2],c=p[s+4>>2];return new a(M.buffer,c,u)}t=m(t),I(r,{name:t,fromWireType:i,argPackAdvance:k,readValueFromPointer:i},{ignoreDuplicateRegistrations:!0})};function lt(r){return this.fromWireType(p[r>>2])}var vt=(r,e,t,n)=>{if(!(n>0))return 0;for(var a=t,i=t+n-1,s=0;s=55296&&u<=57343){var c=r.charCodeAt(++s);u=65536+((u&1023)<<10)|c&1023}if(u<=127){if(t>=i)break;e[t++]=u}else if(u<=2047){if(t+1>=i)break;e[t++]=192|u>>6,e[t++]=128|u&63}else if(u<=65535){if(t+2>=i)break;e[t++]=224|u>>12,e[t++]=128|u>>6&63,e[t++]=128|u&63}else{if(t+3>=i)break;e[t++]=240|u>>18,e[t++]=128|u>>12&63,e[t++]=128|u>>6&63,e[t++]=128|u&63}}return e[t]=0,t-a},dt=(r,e,t)=>vt(r,b,e,t),_t=r=>{for(var e=0,t=0;t=55296&&n<=57343?(e+=4,++t):e+=3}return e},Qr=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,ht=(r,e,t)=>{for(var n=e+t,a=e;r[a]&&!(a>=n);)++a;if(a-e>16&&r.buffer&&Qr)return Qr.decode(r.subarray(e,a));for(var i="";e>10,56320|f&1023)}}return i},pt=(r,e)=>r?ht(b,r,e):"",gt=(r,e)=>{e=m(e);var t=e==="std::string";I(r,{name:e,fromWireType(n){var a=p[n>>2],i=n+4,s;if(t)for(var u=i,c=0;c<=a;++c){var f=i+c;if(c==a||b[f]==0){var l=f-u,v=pt(u,l);s===void 0?s=v:(s+="\0",s+=v),u=f+1}}else{for(var g=new Array(a),c=0;c>2]=i,t&&s)dt(a,c,i+1);else if(s)for(var f=0;f255&&(O(c),T("String has UTF-16 code units that do not fit in 8 bits")),b[c+f]=l}else for(var f=0;f{for(var t=r,n=t>>1,a=n+e/2;!(n>=a)&&J[n];)++n;if(t=n<<1,t-r>32&&Gr)return Gr.decode(b.subarray(r,t));for(var i="",s=0;!(s>=e/2);++s){var u=Z[r+s*2>>1];if(u==0)break;i+=String.fromCharCode(u)}return i},yt=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<2)return 0;t-=2;for(var a=e,i=t>1]=u,e+=2}return Z[e>>1]=0,e-a},bt=r=>r.length*2,wt=(r,e)=>{for(var t=0,n="";!(t>=e/4);){var a=H[r+t*4>>2];if(a==0)break;if(++t,a>=65536){var i=a-65536;n+=String.fromCharCode(55296|i>>10,56320|i&1023)}else n+=String.fromCharCode(a)}return n},Tt=(r,e,t)=>{var n;if((n=t)!==null&&n!==void 0||(t=2147483647),t<4)return 0;for(var a=e,i=a+t-4,s=0;s=55296&&u<=57343){var c=r.charCodeAt(++s);u=65536+((u&1023)<<10)|c&1023}if(H[e>>2]=u,e+=4,e+4>i)break}return H[e>>2]=0,e-a},At=r=>{for(var e=0,t=0;t=55296&&n<=57343&&++t,e+=4}return e},$t=(r,e,t)=>{t=m(t);var n,a,i,s,u;e===2?(n=mt,a=yt,s=bt,i=()=>J,u=1):e===4&&(n=wt,a=Tt,s=At,i=()=>p,u=2),I(r,{name:t,fromWireType:c=>{for(var f=p[c>>2],l=i(),v,g=c+4,h=0;h<=f;++h){var U=c+4+h*e;if(h==f||l[U>>u]==0){var P=U-g,w=n(g,P);v===void 0?v=w:(v+="\0",v+=w),g=U+e}}return O(c),v},toWireType:(c,f)=>{typeof f!="string"&&T(`Cannot pass non-string to C++ string type ${t}`);var l=s(f),v=wr(4+l+e);return p[v>>2]=l>>u,a(f,v+4,l+e),c!==null&&c.push(O,v),v},argPackAdvance:k,readValueFromPointer:mr,destructorFunction(c){O(c)}})},Ct=(r,e,t,n,a,i)=>{ar[r]={name:m(e),rawConstructor:Y(t,n),rawDestructor:Y(a,i),fields:[]}},Et=(r,e,t,n,a,i,s,u,c,f)=>{ar[r].fields.push({fieldName:m(e),getterReturnType:t,getter:Y(n,a),getterContext:i,setterArgumentType:s,setter:Y(u,c),setterContext:f})},Rt=(r,e)=>{e=m(e),I(r,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:()=>{},toWireType:(t,n)=>{}})},br=[],Ft=(r,e,t,n)=>(r=br[r],e=X.toValue(e),r(null,e,t,n)),Pt={},St=r=>{var e=Pt[r];return e===void 0?m(r):e},Jr=()=>{if(typeof globalThis=="object")return globalThis;function r(e){e.$$$embind_global$$$=e;var t=typeof $$$embind_global$$$=="object"&&e.$$$embind_global$$$==e;return t||delete e.$$$embind_global$$$,t}if(typeof $$$embind_global$$$=="object"||(typeof global=="object"&&r(global)?$$$embind_global$$$=global:typeof self=="object"&&r(self)&&($$$embind_global$$$=self),typeof $$$embind_global$$$=="object"))return $$$embind_global$$$;throw Error("unable to get global object.")},Wt=r=>r===0?X.toHandle(Jr()):(r=St(r),X.toHandle(Jr()[r])),It=r=>{var e=br.length;return br.push(r),e},kt=(r,e)=>{for(var t=new Array(r),n=0;n>2],"parameter "+n);return t},Ot=Reflect.construct,Ut=(r,e,t)=>{var n=[],a=r.toWireType(n,t);return n.length&&(p[e>>2]=X.toHandle(n)),a},Mt=(r,e,t)=>{var n=kt(r,e),a=n.shift();r--;var i=new Array(r),s=(c,f,l,v)=>{for(var g=0,h=0;hc.name).join(", ")}) => ${a.name}>`;return It(or(u,s))},Dt=r=>{r>4&&(C.get(r).refcount+=1)},jt=r=>{var e=X.toValue(r);gr(e),yr(r)},Ht=()=>{dr("")},Bt=(r,e,t)=>b.copyWithin(r,e,e+t),Vt=()=>2147483648,xt=r=>{var e=nr.buffer,t=(r-e.byteLength+65535)/65536;try{return nr.grow(t),Pr(),1}catch{}},Xt=r=>{var e=b.length;r>>>=0;var t=Vt();if(r>t)return!1;for(var n=(c,f)=>c+(f-c%f)%f,a=1;a<=4;a*=2){var i=e*(1+.2/a);i=Math.min(i,r+100663296);var s=Math.min(t,n(Math.max(r,i),65536)),u=xt(s);if(u)return!0}return!1},Zt=r=>r;Dr=o.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},je(),Vr=o.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ve(),Xe(),qr=o.UnboundTypeError=at(Error,"UnboundTypeError");var Lt={r:Pe,q:Se,g:Ie,d:ke,k:Oe,a:Ue,i:We,M:Me,C:De,H:Be,G:Ze,K:qe,b:Qe,v:Je,L:st,h:ct,e:ft,u:gt,p:$t,w:Ct,N:Et,I:Rt,z:Ft,P:yr,B:Wt,A:Mt,x:Dt,Q:jt,s:Ht,F:Bt,E:Xt,y:Kt,c:Nt,l:Yt,n:Jt,o:zt,f:qt,t:tn,m:en,D:Gt,J:Qt,j:rn,O:Zt},y=Fe(),wr=o._malloc=r=>(wr=o._malloc=y.T)(r),O=o._free=r=>(O=o._free=y.U)(r),Kr=r=>(Kr=y.W)(r),$=(r,e)=>($=y.X)(r,e),z=r=>(z=y.Y)(r),E=()=>(E=y.Z)(),R=r=>(R=y._)(r),Yr=r=>(Yr=y.$)(r),zr=r=>(zr=y.aa)(r),re=(r,e,t)=>(re=y.ba)(r,e,t),ee=r=>(ee=y.ca)(r);function Nt(r,e){var t=E();try{return A(r)(e)}catch(n){if(R(t),n!==n+0)throw n;$(1,0)}}function qt(r,e){var t=E();try{A(r)(e)}catch(n){if(R(t),n!==n+0)throw n;$(1,0)}}function Qt(r,e,t,n,a,i){var s=E();try{A(r)(e,t,n,a,i)}catch(u){if(R(s),u!==u+0)throw u;$(1,0)}}function Gt(r,e,t,n,a){var i=E();try{A(r)(e,t,n,a)}catch(s){if(R(i),s!==s+0)throw s;$(1,0)}}function Jt(r,e,t,n){var a=E();try{return A(r)(e,t,n)}catch(i){if(R(a),i!==i+0)throw i;$(1,0)}}function Kt(r,e,t,n,a){var i=E();try{return A(r)(e,t,n,a)}catch(s){if(R(i),s!==s+0)throw s;$(1,0)}}function Yt(r,e,t){var n=E();try{return A(r)(e,t)}catch(a){if(R(n),a!==a+0)throw a;$(1,0)}}function zt(r){var e=E();try{A(r)()}catch(t){if(R(e),t!==t+0)throw t;$(1,0)}}function rn(r,e,t,n,a,i,s,u,c,f,l){var v=E();try{A(r)(e,t,n,a,i,s,u,c,f,l)}catch(g){if(R(v),g!==g+0)throw g;$(1,0)}}function en(r,e,t,n){var a=E();try{A(r)(e,t,n)}catch(i){if(R(a),i!==i+0)throw i;$(1,0)}}function tn(r,e,t){var n=E();try{A(r)(e,t)}catch(a){if(R(n),a!==a+0)throw a;$(1,0)}}var ur;K=function r(){ur||te(),ur||(K=r)};function te(){if(B>0||(ge(),B>0))return;function r(){ur||(ur=!0,o.calledRun=!0,!Er&&(me(),D(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),ye()))}o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),r()},1)):r()}if(o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return te(),_.ready}})();const ne=["Aztec","Codabar","Code128","Code39","Code93","DataBar","DataBarExpanded","DataMatrix","DXFilmEdge","EAN-13","EAN-8","ITF","Linear-Codes","Matrix-Codes","MaxiCode","MicroQRCode","None","PDF417","QRCode","rMQRCode","UPC-A","UPC-E"],ae=["Unknown","ASCII","ISO8859_1","ISO8859_2","ISO8859_3","ISO8859_4","ISO8859_5","ISO8859_6","ISO8859_7","ISO8859_8","ISO8859_9","ISO8859_10","ISO8859_11","ISO8859_13","ISO8859_14","ISO8859_15","ISO8859_16","Cp437","Cp1250","Cp1251","Cp1252","Cp1256","Shift_JIS","Big5","GB2312","GB18030","EUC_JP","EUC_KR","UTF16BE","UTF8","UTF16LE","UTF32BE","UTF32LE","BINARY"];function ie(d,_){return d.CharacterSet[_]}const oe=[-1,0,1,2,3,4,5,6,7,8],lr={width:200,height:200,format:"QRCode",characterSet:"UTF8",eccLevel:-1,margin:10};function se(d,_){return{..._,characterSet:ie(d,_.characterSet)}}function ue(d){const{image:_,error:o}=d;return _?{image:new Blob([new Uint8Array(_)],{type:"image/png"}),error:""}:{image:null,error:o}}const ce={locateFile:(d,_)=>{const o=d.match(/_(.+?)\.wasm$/);return o?`https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${o[1]}/${d}`:_+d}};let er=new WeakMap;function Ar(d,_){var j;const o=er.get(d);if(o!=null&&o.modulePromise&&(_===void 0||Object.is(_,o.moduleOverrides)))return o.modulePromise;const D=(j=_!=null?_:o==null?void 0:o.moduleOverrides)!=null?j:ce,S=d({...D});return er.set(d,{moduleOverrides:D,modulePromise:S}),S}function fe(){er=new WeakMap}function le(d,_){er.set(d,{moduleOverrides:_})}async function ve(d,_,o=lr){const D={...lr,...o},S=await Ar(d),j=S.writeBarcodeToImage(_,se(S,D));return ue(j)}const $r={...lr};function de(d){return Ar(fr,d)}function _e(d){return le(fr,d)}async function he(d,_){return ve(fr,d,_)}return F.barcodeFormats=ne,F.characterSets=ae,F.defaultEncodeHints=$r,F.defaultWriterOptions=$r,F.getZXingModule=de,F.purgeZXingModule=fe,F.setZXingModuleOverrides=_e,F.writeBarcodeToImageFile=he,F.writeInputEccLevels=oe,Object.defineProperty(F,Symbol.toStringTag,{value:"Module"}),F}({}); diff --git a/node_modules/zxing-wasm/dist/reader/zxing_reader.wasm b/node_modules/zxing-wasm/dist/reader/zxing_reader.wasm new file mode 100644 index 0000000..b69a994 Binary files /dev/null and b/node_modules/zxing-wasm/dist/reader/zxing_reader.wasm differ diff --git a/node_modules/zxing-wasm/dist/writer/zxing_writer.wasm b/node_modules/zxing-wasm/dist/writer/zxing_writer.wasm new file mode 100644 index 0000000..c33fa0d Binary files /dev/null and b/node_modules/zxing-wasm/dist/writer/zxing_writer.wasm differ diff --git a/node_modules/zxing-wasm/package.json b/node_modules/zxing-wasm/package.json new file mode 100644 index 0000000..6c5dbde --- /dev/null +++ b/node_modules/zxing-wasm/package.json @@ -0,0 +1,122 @@ +{ + "name": "zxing-wasm", + "description": "ZXing-C++ WebAssembly as an ES module with types", + "private": false, + "version": "1.1.3", + "type": "module", + "files": [ + "./dist" + ], + "main": "./dist/cjs/full/index.js", + "module": "./dist/es/full/index.js", + "exports": { + ".": { + "import": "./dist/es/full/index.js", + "require": "./dist/cjs/full/index.js", + "default": "./dist/es/full/index.js" + }, + "./full": { + "import": "./dist/es/full/index.js", + "require": "./dist/cjs/full/index.js", + "default": "./dist/es/full/index.js" + }, + "./reader": { + "import": "./dist/es/reader/index.js", + "require": "./dist/cjs/reader/index.js", + "default": "./dist/es/reader/index.js" + }, + "./writer": { + "import": "./dist/es/writer/index.js", + "require": "./dist/cjs/writer/index.js", + "default": "./dist/es/writer/index.js" + }, + "./reader/zxing_reader.wasm": "./dist/reader/zxing_reader.wasm", + "./writer/zxing_writer.wasm": "./dist/writer/zxing_writer.wasm", + "./full/zxing_full.wasm": "./dist/full/zxing_full.wasm" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Sec-ant/zxing-wasm.git" + }, + "homepage": "https://github.com/Sec-ant/zxing-wasm", + "bugs": { + "url": "https://github.com/Sec-ant/zxing-wasm/issues", + "email": "zzwu@zju.edu.cn" + }, + "keywords": [ + "qrcode", + "barcode", + "wasm", + "zxing", + "zxing-cpp", + "esmodule", + "webassembly" + ], + "author": { + "name": "Ze-Zheng Wu" + }, + "license": "MIT", + "copyFiles": [ + { + "from": "./src/reader/*.wasm", + "to": "./dist/reader/" + }, + { + "from": "./src/writer/*.wasm", + "to": "./dist/writer/" + }, + { + "from": "./src/full/*.wasm", + "to": "./dist/full/" + } + ], + "copyFilesSettings": { + "whenFileExists": "overwrite" + }, + "scripts": { + "submodule:init": "git submodule update --init", + "submodule:update": "git submodule update --remote", + "cmake": "emcmake cmake -S src/cpp -B build", + "build:wasm": "cmake --build build -j$(($(nproc) - 1))", + "copy:wasm": "copy-files-from-to", + "docs:dev": "conc \"npm:docs:preview\" \"typedoc --watch --excludeInternal\"", + "docs:build": "typedoc --excludeInternal", + "docs:preview": "vite preview --outDir ./docs", + "dev": "vite", + "lint": "eslint . --ext .ts", + "type-check": "tsc --noEmit --emitDeclarationOnly false", + "format": "prettier . --write", + "clear:dist": "rimraf dist", + "prebuild": "npm run lint && npm run type-check && npm run format && npm run clear:dist", + "build:es": "vite build", + "build:cjs": "tsx ./scripts/build-cjs.ts", + "build:iife": "tsx ./scripts/build-iife.ts", + "build": "conc \"npm:build:es\" \"npm:build:cjs\" \"npm:build:iife\"", + "postbuild:es": "tsc --declarationDir ./dist/es", + "postbuild:cjs": "tsc --declarationDir ./dist/cjs", + "postbuild": "conc \"npm:copy:wasm\" \"npm:docs:build\"", + "build:all": "npm run submodule:init && npm run cmake && npm run build:wasm && npm run build", + "preview": "vite preview", + "prepublishOnly": "npm run build:all", + "ncu": "npx npm-check-updates -u", + "postncu": "npm i" + }, + "devDependencies": { + "@types/node": "^20.10.5", + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "concurrently": "^8.2.2", + "copy-files-from-to": "^3.9.1", + "eslint": "^8.56.0", + "npm-check-updates": "^16.14.12", + "prettier": "^3.1.1", + "rimraf": "^5.0.5", + "tsx": "^4.7.0", + "typedoc": "^0.25.4", + "typescript": "^5.3.3", + "vite": "^5.0.10" + }, + "dependencies": { + "@types/emscripten": "^1.39.10" + } +} diff --git a/package-lock.json b/package-lock.json index 584f079..d4a936c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,8 @@ "packages": { "": { "dependencies": { - "vant": "^4.9.15" + "vant": "^4.9.15", + "vue-qrcode-reader": "^5.6.0" } }, "node_modules/@babel/helper-string-parser": { @@ -60,6 +61,16 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "peer": true }, + "node_modules/@types/dom-webcodecs": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz", + "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==" + }, + "node_modules/@types/emscripten": { + "version": "1.39.13", + "resolved": "https://registry.npmmirror.com/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==" + }, "node_modules/@vant/popperjs": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", @@ -172,6 +183,15 @@ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==" }, + "node_modules/barcode-detector": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/barcode-detector/-/barcode-detector-2.2.2.tgz", + "integrity": "sha512-JcSekql+EV93evfzF9zBr+Y6aRfkR+QFvgyzbwQ0dbymZXoAI9+WgT7H1E429f+3RKNncHz2CW98VQtaaKpmfQ==", + "dependencies": { + "@types/dom-webcodecs": "^0.1.11", + "zxing-wasm": "1.1.3" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", @@ -257,6 +277,11 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/sdp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/sdp/-/sdp-3.2.0.tgz", + "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", @@ -299,6 +324,38 @@ "optional": true } } + }, + "node_modules/vue-qrcode-reader": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/vue-qrcode-reader/-/vue-qrcode-reader-5.6.0.tgz", + "integrity": "sha512-uvaJqMRgR/1tt7XWAqaRBQf0mo3gudu5fXqZmtoq+87lvmM4dublJ7StO6ssNO3FaJqssG72hPhXWoBoYWJIeg==", + "dependencies": { + "barcode-detector": "2.2.2", + "webrtc-adapter": "8.2.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webrtc-adapter": { + "version": "8.2.3", + "resolved": "https://registry.npmmirror.com/webrtc-adapter/-/webrtc-adapter-8.2.3.tgz", + "integrity": "sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==", + "dependencies": { + "sdp": "^3.2.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.10.0" + } + }, + "node_modules/zxing-wasm": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/zxing-wasm/-/zxing-wasm-1.1.3.tgz", + "integrity": "sha512-MYm9k/5YVs4ZOTIFwlRjfFKD0crhefgbnt1+6TEpmKUDFp3E2uwqGSKwQOd2hOIsta/7Usq4hnpNRYTLoljnfA==", + "dependencies": { + "@types/emscripten": "^1.39.10" + } } } } diff --git a/package.json b/package.json index c7f748f..48119cd 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { - "vant": "^4.9.15" + "vant": "^4.9.15", + "vue-qrcode-reader": "^5.6.0" } } diff --git a/pages.json b/pages.json index c4d184c..501ecf0 100644 --- a/pages.json +++ b/pages.json @@ -1,5 +1,12 @@ { "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "登录" + } + + }, { "path": "pages/index/index", "style": { @@ -116,6 +123,42 @@ "bounce": "none" } } + }, + { + "path" : "pages/whiteEmbryo/w-scanCode", + "style" : + { + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } + }, + { + "path" : "pages/whiteEmbryo/w-warehouse", + "style" : + { + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } + }, + { + "path" : "pages/whiteEmbryo/w-list", + "style" : + { + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "disableScroll": true, + "app-plus": { + "bounce": "none" + } + } } ], "globalStyle": { diff --git a/pages/index/index.vue b/pages/index/index.vue index 4fc0369..c73f3a6 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -26,14 +26,14 @@ const ListData =ref([ path: '../maintenance/m-other', name: '其他要求项维护', }, - { - path: '../lecher/l-quality', - name: '色胚质检项维护', - }, - { - path: '../lecher/l-flaws', - name: '色胚质检瑕疵维护', - }, + // { + // path: '../lecher/l-quality', + // name: '色胚质检项维护', + // }, + // { + // path: '../lecher/l-flaws', + // name: '色胚质检瑕疵维护', + // }, { path: '../whiteEmbryo/w-warehousing', name: '白胚入库', @@ -46,6 +46,19 @@ const ListData =ref([ path: '../whiteEmbryo/w-suppliers', name: '供应商维护', }, + { + path: '../whiteEmbryo/w-scanCode', + name: '扫码入库', + }, + { + path: '../whiteEmbryo/w-warehouse', + name: '仓库维护', + }, + { + path: '../whiteEmbryo/w-list', + name: '白胚列表', + }, + ] as any[]) diff --git a/pages/lecher/l-flaws.vue b/pages/lecher/l-flaws.vue index 8116149..f36f70b 100644 --- a/pages/lecher/l-flaws.vue +++ b/pages/lecher/l-flaws.vue @@ -103,17 +103,17 @@ const submit =()=>{ .a-b{ display:flex; margin-bottom:10px; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0; } } -::v-deep(.van-field){ +::v-deep .van-field { font-size: 16px; } -::v-deep(.van-field__control){ +::v-deep .van-field__control { border-bottom: 1px solid #d7d7d7; } -::v-deep(.van-field__label){ +::v-deep .van-field__label { text-align: end; } .a-c{ @@ -121,7 +121,7 @@ const submit =()=>{ align-items: center; justify-content: space-around; margin:15px; - ::v-deep(.van-button--normal){ + ::v-deep .van-button--normal { padding: 5px; height: 30px; } diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..21132d5 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/pages/whiteEmbryo/scanCode.vue b/pages/whiteEmbryo/scanCode.vue deleted file mode 100644 index 08677f6..0000000 --- a/pages/whiteEmbryo/scanCode.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - diff --git a/pages/whiteEmbryo/w-level.vue b/pages/whiteEmbryo/w-level.vue index 8c34a31..8ddfc0b 100644 --- a/pages/whiteEmbryo/w-level.vue +++ b/pages/whiteEmbryo/w-level.vue @@ -1,23 +1,60 @@ @@ -42,7 +79,7 @@ const submit =()=>{ {{item.id}} 编辑    删除 + style="color: red" @click="delItem(item)">删除 @@ -53,12 +90,11 @@ const submit =()=>{

新增

@@ -87,7 +123,7 @@ const submit =()=>{ .grid-item{ border: 1px solid #f2f2f2; text-align: center; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0 5px; } } @@ -103,17 +139,17 @@ const submit =()=>{ .a-b{ display:flex; margin-bottom:10px; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0; } } -::v-deep(.van-field){ +::v-deep .van-field{ font-size: 16px; } -::v-deep(.van-field__control){ +::v-deep .van-field__control{ border-bottom: 1px solid #d7d7d7; } -::v-deep(.van-field__label){ +::v-deep .van-field__label{ text-align: end; } .a-c{ @@ -121,7 +157,7 @@ const submit =()=>{ align-items: center; justify-content: space-around; margin:15px; - ::v-deep(.van-button--normal){ + ::v-deep .van-button--normal{ padding: 5px; height: 30px; } diff --git a/pages/whiteEmbryo/w-list.vue b/pages/whiteEmbryo/w-list.vue new file mode 100644 index 0000000..722fe21 --- /dev/null +++ b/pages/whiteEmbryo/w-list.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/pages/whiteEmbryo/w-scanCode.vue b/pages/whiteEmbryo/w-scanCode.vue new file mode 100644 index 0000000..eb4e547 --- /dev/null +++ b/pages/whiteEmbryo/w-scanCode.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/pages/whiteEmbryo/w-suppliers.vue b/pages/whiteEmbryo/w-suppliers.vue index 7ec982c..28f5fe5 100644 --- a/pages/whiteEmbryo/w-suppliers.vue +++ b/pages/whiteEmbryo/w-suppliers.vue @@ -114,19 +114,19 @@ const submit =()=>{ .a-b{ display:flex; margin-bottom:10px; - ::v-deep(.van-cell){ + ::v-deep .van-cell{ padding: 0; } } -::v-deep(.van-field){ +::v-deep .van-field{ font-size: 16px; } .bot{ - ::v-deep(.van-field__control){ + ::v-deep .van-field__control { border-bottom: 1px solid #d7d7d7; } } -::v-deep(.van-field__label){ +::v-deep .van-field__label{ text-align: end; } .a-c{ @@ -134,7 +134,7 @@ const submit =()=>{ align-items: center; justify-content: space-around; margin:15px; - ::v-deep(.van-button--normal){ + ::v-deep .van-button--normal{ padding: 5px; height: 30px; } diff --git a/pages/whiteEmbryo/w-warehouse.vue b/pages/whiteEmbryo/w-warehouse.vue new file mode 100644 index 0000000..c34be93 --- /dev/null +++ b/pages/whiteEmbryo/w-warehouse.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/pages/whiteEmbryo/w-warehousing.vue b/pages/whiteEmbryo/w-warehousing.vue index 05305a1..a8227aa 100644 --- a/pages/whiteEmbryo/w-warehousing.vue +++ b/pages/whiteEmbryo/w-warehousing.vue @@ -1,7 +1,6 @@ @@ -96,14 +135,19 @@ const onConfirmDate = (val:any) =>{ - 扫一扫 + 扫一扫 + - @@ -111,9 +155,14 @@ const onConfirmDate = (val:any) =>{ + + +

总匹数:2 匹

+

总匹数:2 匹

+
+
- + diff --git a/uni_modules/cshaptx4869-scancode/package.json b/uni_modules/cshaptx4869-scancode/package.json new file mode 100644 index 0000000..217a703 --- /dev/null +++ b/uni_modules/cshaptx4869-scancode/package.json @@ -0,0 +1,90 @@ +{ + "id": "cshaptx4869-scancode", + "displayName": "H5扫码", + "version": "1.0.4", + "description": "可看做是H5端的 uni.scanCode(OBJECT) 接口", + "keywords": [ + "h5扫码", + "二维码", + "闪光灯", + "摄像头", + "扫一扫" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dependencies": { + "vue-qrcode-reader": "^5.5.3" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "y" + }, + "client": { + "Vue": { + "vue2": "n", + "vue3": "y" + }, + "App": { + "app-vue": "u", + "app-nvue": "u", + "app-uvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "u", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/cshaptx4869-scancode/readme.md b/uni_modules/cshaptx4869-scancode/readme.md new file mode 100644 index 0000000..7acabde --- /dev/null +++ b/uni_modules/cshaptx4869-scancode/readme.md @@ -0,0 +1,82 @@ +# H5扫码 + +## 简介 + +基于 [vue-qrcode-reader](https://github.com/gruhn/vue-qrcode-reader) 库封装的 H5 扫码组件。 + +特性: + +- 支持手电筒 +- 支持摄像头切换 +- 支持一次扫多个二维码,可自行选择识别哪一个 + + + +## **示例** + +安装依赖 + +```bash +npm install vue-qrcode-reader +``` + +使用 + +```vue + + + +``` + diff --git a/unpackage/dist/cache/.vite/deps/_metadata.json b/unpackage/dist/cache/.vite/deps/_metadata.json index 1a5aad1..1578cce 100644 --- a/unpackage/dist/cache/.vite/deps/_metadata.json +++ b/unpackage/dist/cache/.vite/deps/_metadata.json @@ -1,13 +1,19 @@ { - "hash": "5d0f2bdd", + "hash": "2d8d98b4", "configHash": "407aa7e3", - "lockfileHash": "85d8c394", - "browserHash": "76804dc8", + "lockfileHash": "44fc196e", + "browserHash": "5ce248a5", "optimized": { "vant": { "src": "../../../../../node_modules/vant/es/index.mjs", "file": "vant.js", - "fileHash": "4b21b997", + "fileHash": "bcbc483d", + "needsInterop": false + }, + "vue-qrcode-reader": { + "src": "../../../../../node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js", + "file": "vue-qrcode-reader.js", + "fileHash": "51d6bc17", "needsInterop": false } }, diff --git a/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js new file mode 100644 index 0000000..de689a9 --- /dev/null +++ b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js @@ -0,0 +1,3323 @@ +// ../../../../aliyunGit/ckgl/node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js +import { defineComponent as jt, ref as we, watch as We, onMounted as vo, onUnmounted as yo, computed as Ut, openBlock as Lt, createElementBlock as Ht, createElementVNode as nt, normalizeStyle as go, withDirectives as wo, vShow as bo, renderSlot as Dr, withModifiers as at } from "vue"; +var Mr = (r, o, i) => { + if (!o.has(r)) + throw TypeError("Cannot " + i); +}; +var br = (r, o, i) => (Mr(r, o, "read from private field"), i ? i.call(r) : o.get(r)); +var Co = (r, o, i) => { + if (o.has(r)) + throw TypeError("Cannot add the same private member more than once"); + o instanceof WeakSet ? o.add(r) : o.set(r, i); +}; +var $o = (r, o, i, c) => (Mr(r, o, "write to private field"), o.set(r, i), i); +var Ar = [ + ["aztec", "Aztec"], + ["code_128", "Code128"], + ["code_39", "Code39"], + ["code_93", "Code93"], + ["codabar", "Codabar"], + ["databar", "DataBar"], + ["databar_expanded", "DataBarExpanded"], + ["data_matrix", "DataMatrix"], + ["dx_film_edge", "DXFilmEdge"], + ["ean_13", "EAN-13"], + ["ean_8", "EAN-8"], + ["itf", "ITF"], + ["maxi_code", "MaxiCode"], + ["micro_qr_code", "MicroQRCode"], + ["pdf417", "PDF417"], + ["qr_code", "QRCode"], + ["rm_qr_code", "rMQRCode"], + ["upc_a", "UPC-A"], + ["upc_e", "UPC-E"], + ["linear_codes", "Linear-Codes"], + ["matrix_codes", "Matrix-Codes"] +]; +var _o = [...Ar, ["unknown"]].map((r) => r[0]); +var it = new Map( + Ar +); +function So(r) { + for (const [o, i] of it) + if (r === i) + return o; + return "unknown"; +} +function Po(r) { + if (xr(r)) + return { + width: r.naturalWidth, + height: r.naturalHeight + }; + if (Rr(r)) + return { + width: r.width.baseVal.value, + height: r.height.baseVal.value + }; + if (kr(r)) + return { + width: r.videoWidth, + height: r.videoHeight + }; + if (Fr(r)) + return { + width: r.width, + height: r.height + }; + if (Wr(r)) + return { + width: r.displayWidth, + height: r.displayHeight + }; + if (Ir(r)) + return { + width: r.width, + height: r.height + }; + if (Ur(r)) + return { + width: r.width, + height: r.height + }; + throw new TypeError( + "The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'." + ); +} +function xr(r) { + try { + return r instanceof HTMLImageElement; + } catch (o) { + return false; + } +} +function Rr(r) { + try { + return r instanceof SVGImageElement; + } catch (o) { + return false; + } +} +function kr(r) { + try { + return r instanceof HTMLVideoElement; + } catch (o) { + return false; + } +} +function Ir(r) { + try { + return r instanceof HTMLCanvasElement; + } catch (o) { + return false; + } +} +function Fr(r) { + try { + return r instanceof ImageBitmap; + } catch (o) { + return false; + } +} +function Ur(r) { + try { + return r instanceof OffscreenCanvas; + } catch (o) { + return false; + } +} +function Wr(r) { + try { + return r instanceof VideoFrame; + } catch (o) { + return false; + } +} +function jr(r) { + try { + return r instanceof Blob; + } catch (o) { + return false; + } +} +function To(r) { + try { + return r instanceof ImageData; + } catch (o) { + return false; + } +} +function Eo(r, o) { + try { + const i = new OffscreenCanvas(r, o); + if (i.getContext("2d") instanceof OffscreenCanvasRenderingContext2D) + return i; + throw void 0; + } catch (i) { + const c = document.createElement("canvas"); + return c.width = r, c.height = o, c; + } +} +async function Lr(r) { + if (xr(r) && !await Ao(r)) + throw new DOMException( + "Failed to load or decode HTMLImageElement.", + "InvalidStateError" + ); + if (Rr(r) && !await xo(r)) + throw new DOMException( + "Failed to load or decode SVGImageElement.", + "InvalidStateError" + ); + if (Wr(r) && Ro(r)) + throw new DOMException("VideoFrame is closed.", "InvalidStateError"); + if (kr(r) && (r.readyState === 0 || r.readyState === 1)) + throw new DOMException("Invalid element or state.", "InvalidStateError"); + if (Fr(r) && Io(r)) + throw new DOMException( + "The image source is detached.", + "InvalidStateError" + ); + const { width: o, height: i } = Po(r); + if (o === 0 || i === 0) + return null; + const c = Eo(o, i).getContext("2d"); + c.drawImage(r, 0, 0); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Oo(r) { + let o; + try { + if (globalThis.createImageBitmap) + o = await createImageBitmap(r); + else if (globalThis.Image) { + o = new Image(); + let i = ""; + try { + i = URL.createObjectURL(r), o.src = i, await o.decode(); + } finally { + URL.revokeObjectURL(i); + } + } else + return r; + } catch (i) { + throw new DOMException( + "Failed to load or decode Blob.", + "InvalidStateError" + ); + } + return await Lr(o); +} +function Do(r) { + const { width: o, height: i } = r; + if (o === 0 || i === 0) + return null; + const c = r.getContext("2d"); + try { + return c.getImageData(0, 0, o, i); + } catch (l) { + throw new DOMException("Source would taint origin.", "SecurityError"); + } +} +async function Mo(r) { + if (jr(r)) + return await Oo(r); + if (To(r)) { + if (ko(r)) + throw new DOMException( + "The image data has been detached.", + "InvalidStateError" + ); + return r; + } + return Ir(r) || Ur(r) ? Do(r) : await Lr(r); +} +async function Ao(r) { + try { + return await r.decode(), true; + } catch (o) { + return false; + } +} +async function xo(r) { + var o; + try { + return await ((o = r.decode) == null ? void 0 : o.call(r)), true; + } catch (i) { + return false; + } +} +function Ro(r) { + return r.format === null; +} +function ko(r) { + return r.data.buffer.byteLength === 0; +} +function Io(r) { + return r.width === 0 && r.height === 0; +} +function Cr(r, o) { + return r instanceof DOMException ? new DOMException(`${o}: ${r.message}`, r.name) : r instanceof Error ? new r.constructor(`${o}: ${r.message}`) : new Error(`${o}: ${r}`); +} +var $r = [ + "Aztec", + "Codabar", + "Code128", + "Code39", + "Code93", + "DataBar", + "DataBarExpanded", + "DataMatrix", + "DXFilmEdge", + "EAN-13", + "EAN-8", + "ITF", + "Linear-Codes", + "Matrix-Codes", + "MaxiCode", + "MicroQRCode", + "None", + "PDF417", + "QRCode", + "rMQRCode", + "UPC-A", + "UPC-E" +]; +function Fo(r) { + return r.join("|"); +} +function Uo(r) { + const o = _r(r); + let i = 0, c = $r.length - 1; + for (; i <= c; ) { + const l = Math.floor((i + c) / 2), h = $r[l], v = _r(h); + if (v === o) + return h; + v < o ? i = l + 1 : c = l - 1; + } + return "None"; +} +function _r(r) { + return r.toLowerCase().replace(/_-\[\]/g, ""); +} +function Wo(r, o) { + return r.Binarizer[o]; +} +function jo(r, o) { + return r.CharacterSet[o]; +} +var Lo = [ + "Text", + "Binary", + "Mixed", + "GS1", + "ISO15434", + "UnknownECI" +]; +function Ho(r) { + return Lo[r.value]; +} +function Bo(r, o) { + return r.EanAddOnSymbol[o]; +} +function Vo(r, o) { + return r.TextMode[o]; +} +var Ee = { + formats: [], + tryHarder: true, + tryRotate: true, + tryInvert: true, + tryDownscale: true, + binarizer: "LocalAverage", + isPure: false, + downscaleFactor: 3, + downscaleThreshold: 500, + minLineCount: 2, + maxNumberOfSymbols: 255, + tryCode39ExtendedMode: false, + validateCode39CheckSum: false, + validateITFCheckSum: false, + returnCodabarStartEnd: false, + returnErrors: false, + eanAddOnSymbol: "Read", + textMode: "Plain", + characterSet: "Unknown" +}; +function Hr(r, o) { + return { + ...o, + formats: Fo(o.formats), + binarizer: Wo(r, o.binarizer), + eanAddOnSymbol: Bo( + r, + o.eanAddOnSymbol + ), + textMode: Vo(r, o.textMode), + characterSet: jo( + r, + o.characterSet + ) + }; +} +function Br(r) { + return { + ...r, + format: Uo(r.format), + eccLevel: r.eccLevel, + contentType: Ho(r.contentType) + }; +} +var qo = { + locateFile: (r, o) => { + const i = r.match(/_(.+?)\.wasm$/); + return i ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}` : o + r; + } +}; +var Wt = /* @__PURE__ */ new WeakMap(); +function Bt(r, o) { + var i; + const c = Wt.get(r); + if (c != null && c.modulePromise && o === void 0) + return c.modulePromise; + const l = (i = c == null ? void 0 : c.moduleOverrides) != null ? i : qo, h = r({ + ...l + }); + return Wt.set(r, { + moduleOverrides: l, + modulePromise: h + }), h; +} +function No(r, o) { + Wt.set(r, { + moduleOverrides: o + }); +} +async function zo(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { size: h } = o, v = new Uint8Array(await o.arrayBuffer()), g = l._malloc(h); + l.HEAPU8.set(v, g); + const b = l.readBarcodesFromImage( + g, + h, + Hr(l, c) + ); + l._free(g); + const p = []; + for (let C = 0; C < b.size(); ++C) + p.push( + Br(b.get(C)) + ); + return p; +} +async function Go(r, o, i = Ee) { + const c = { + ...Ee, + ...i + }, l = await Bt(r), { + data: h, + width: v, + height: g, + data: { byteLength: b } + } = o, p = l._malloc(b); + l.HEAPU8.set(h, p); + const C = l.readBarcodesFromPixmap( + p, + v, + g, + Hr(l, c) + ); + l._free(p); + const S = []; + for (let $ = 0; $ < C.size(); ++$) + S.push( + Br(C.get($)) + ); + return S; +} +({ + ...Ee, + formats: [...Ee.formats] +}); +var lt = (() => { + var r = typeof document < "u" && document.currentScript ? document.currentScript.src : void 0; + return function(o = {}) { + var i = o, c, l; + i.ready = new Promise((e, t) => { + c = e, l = t; + }); + var h = Object.assign({}, i), v = "./this.program", g = typeof window == "object", b = typeof importScripts == "function"; + typeof process == "object" && typeof process.versions == "object" && process.versions.node; + var p = ""; + function C(e) { + return i.locateFile ? i.locateFile(e, p) : p + e; + } + var S; + (g || b) && (b ? p = self.location.href : typeof document < "u" && document.currentScript && (p = document.currentScript.src), r && (p = r), p.indexOf("blob:") !== 0 ? p = p.substr(0, p.replace(/[?#].*/, "").lastIndexOf("/") + 1) : p = "", b && (S = (e) => { + var t = new XMLHttpRequest(); + return t.open("GET", e, false), t.responseType = "arraybuffer", t.send(null), new Uint8Array(t.response); + })), i.print || console.log.bind(console); + var $ = i.printErr || console.error.bind(console); + Object.assign(i, h), h = null, i.arguments && i.arguments, i.thisProgram && (v = i.thisProgram), i.quit && i.quit; + var F; + i.wasmBinary && (F = i.wasmBinary), typeof WebAssembly != "object" && Z("no native wasm support detected"); + var U, W = false, R, A, X, k, D, M, le, oe; + function be() { + var e = U.buffer; + i.HEAP8 = R = new Int8Array(e), i.HEAP16 = X = new Int16Array(e), i.HEAPU8 = A = new Uint8Array(e), i.HEAPU16 = k = new Uint16Array(e), i.HEAP32 = D = new Int32Array(e), i.HEAPU32 = M = new Uint32Array(e), i.HEAPF32 = le = new Float32Array(e), i.HEAPF64 = oe = new Float64Array(e); + } + var Ce = [], Oe = [], De = []; + function Le() { + if (i.preRun) + for (typeof i.preRun == "function" && (i.preRun = [i.preRun]); i.preRun.length; ) + ht(i.preRun.shift()); + gt(Ce); + } + function dt() { + gt(Oe); + } + function ft() { + if (i.postRun) + for (typeof i.postRun == "function" && (i.postRun = [i.postRun]); i.postRun.length; ) + Me(i.postRun.shift()); + gt(De); + } + function ht(e) { + Ce.unshift(e); + } + function pt(e) { + Oe.unshift(e); + } + function Me(e) { + De.unshift(e); + } + var te = 0, ve = null; + function mt(e) { + var t; + te++, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te); + } + function de(e) { + var t; + if (te--, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te), te == 0 && ve) { + var n = ve; + ve = null, n(); + } + } + function Z(e) { + var t; + (t = i.onAbort) === null || t === void 0 || t.call(i, e), e = "Aborted(" + e + ")", $(e), W = true, e += ". Build with -sASSERTIONS for more info."; + var n = new WebAssembly.RuntimeError(e); + throw l(n), n; + } + var vt = "data:application/octet-stream;base64,", He = (e) => e.startsWith(vt), fe; + fe = "zxing_reader.wasm", He(fe) || (fe = C(fe)); + function Be(e) { + if (e == fe && F) + return new Uint8Array(F); + if (S) + return S(e); + throw "both async and sync fetching of the wasm failed"; + } + function yt(e) { + return !F && (g || b) && typeof fetch == "function" ? fetch(e, { + credentials: "same-origin" + }).then((t) => { + if (!t.ok) + throw "failed to load wasm binary file at '" + e + "'"; + return t.arrayBuffer(); + }).catch(() => Be(e)) : Promise.resolve().then(() => Be(e)); + } + function Ve(e, t, n) { + return yt(e).then((a) => WebAssembly.instantiate(a, t)).then((a) => a).then(n, (a) => { + $(`failed to asynchronously prepare wasm: ${a}`), Z(a); + }); + } + function an(e, t, n, a) { + return !e && typeof WebAssembly.instantiateStreaming == "function" && !He(t) && typeof fetch == "function" ? fetch(t, { + credentials: "same-origin" + }).then((s) => { + var u = WebAssembly.instantiateStreaming(s, n); + return u.then(a, function(d) { + return $(`wasm streaming compile failed: ${d}`), $("falling back to ArrayBuffer instantiation"), Ve(t, n, a); + }); + }) : Ve(t, n, a); + } + function on() { + var e = { + a: Ga + }; + function t(a, s) { + return z = a.exports, U = z.ia, be(), Kt = z.ma, pt(z.ja), de(), z; + } + mt(); + function n(a) { + t(a.instance); + } + if (i.instantiateWasm) + try { + return i.instantiateWasm(e, t); + } catch (a) { + $(`Module.instantiateWasm callback failed with error: ${a}`), l(a); + } + return an(F, fe, e, n).catch(l), {}; + } + var gt = (e) => { + for (; e.length > 0; ) + e.shift()(i); + }; + i.noExitRuntime; + var qe = [], Ne = 0, sn = (e) => { + var t = new wt(e); + return t.get_caught() || (t.set_caught(true), Ne--), t.set_rethrown(false), qe.push(t), hr(t.excPtr), t.get_exception_ptr(); + }, ie = 0, cn = () => { + j(0, 0); + var e = qe.pop(); + fr(e.excPtr), ie = 0; + }; + function wt(e) { + this.excPtr = e, this.ptr = e - 24, this.set_type = function(t) { + M[this.ptr + 4 >> 2] = t; + }, this.get_type = function() { + return M[this.ptr + 4 >> 2]; + }, this.set_destructor = function(t) { + M[this.ptr + 8 >> 2] = t; + }, this.get_destructor = function() { + return M[this.ptr + 8 >> 2]; + }, this.set_caught = function(t) { + t = t ? 1 : 0, R[this.ptr + 12 >> 0] = t; + }, this.get_caught = function() { + return R[this.ptr + 12 >> 0] != 0; + }, this.set_rethrown = function(t) { + t = t ? 1 : 0, R[this.ptr + 13 >> 0] = t; + }, this.get_rethrown = function() { + return R[this.ptr + 13 >> 0] != 0; + }, this.init = function(t, n) { + this.set_adjusted_ptr(0), this.set_type(t), this.set_destructor(n); + }, this.set_adjusted_ptr = function(t) { + M[this.ptr + 16 >> 2] = t; + }, this.get_adjusted_ptr = function() { + return M[this.ptr + 16 >> 2]; + }, this.get_exception_ptr = function() { + var t = mr(this.get_type()); + if (t) + return M[this.excPtr >> 2]; + var n = this.get_adjusted_ptr(); + return n !== 0 ? n : this.excPtr; + }; + } + var un = (e) => { + throw ie || (ie = e), ie; + }, bt = (e) => { + var t = ie; + if (!t) + return Ue(0), 0; + var n = new wt(t); + n.set_adjusted_ptr(t); + var a = n.get_type(); + if (!a) + return Ue(0), t; + for (var s in e) { + var u = e[s]; + if (u === 0 || u === a) + break; + var d = n.ptr + 16; + if (pr(u, a, d)) + return Ue(u), t; + } + return Ue(a), t; + }, ln = () => bt([]), dn = (e) => bt([e]), fn = (e, t) => bt([e, t]), hn = () => { + var e = qe.pop(); + e || Z("no exception to throw"); + var t = e.excPtr; + throw e.get_rethrown() || (qe.push(e), e.set_rethrown(true), e.set_caught(false), Ne++), ie = t, ie; + }, pn = (e, t, n) => { + var a = new wt(e); + throw a.init(t, n), ie = e, Ne++, ie; + }, mn = () => Ne, ze = {}, Ct = (e) => { + for (; e.length; ) { + var t = e.pop(), n = e.pop(); + n(t); + } + }; + function $t(e) { + return this.fromWireType(D[e >> 2]); + } + var $e = {}, ye = {}, Ge = {}, qt, Ye = (e) => { + throw new qt(e); + }, ge = (e, t, n) => { + e.forEach(function(f) { + Ge[f] = t; + }); + function a(f) { + var m = n(f); + m.length !== e.length && Ye("Mismatched type converter count"); + for (var w = 0; w < e.length; ++w) + re(e[w], m[w]); + } + var s = new Array(t.length), u = [], d = 0; + t.forEach((f, m) => { + ye.hasOwnProperty(f) ? s[m] = ye[f] : (u.push(f), $e.hasOwnProperty(f) || ($e[f] = []), $e[f].push(() => { + s[m] = ye[f], ++d, d === u.length && a(s); + })); + }), u.length === 0 && a(s); + }, vn = (e) => { + var t = ze[e]; + delete ze[e]; + var n = t.rawConstructor, a = t.rawDestructor, s = t.fields, u = s.map((d) => d.getterReturnType).concat(s.map((d) => d.setterArgumentType)); + ge([e], u, (d) => { + var f = {}; + return s.forEach((m, w) => { + var _ = m.fieldName, T = d[w], E = m.getter, O = m.getterContext, L = d[w + s.length], q = m.setter, I = m.setterContext; + f[_] = { + read: (J) => T.fromWireType(E(O, J)), + write: (J, y) => { + var P = []; + q(I, J, L.toWireType(P, y)), Ct(P); + } + }; + }), [{ + name: t.name, + fromWireType: (m) => { + var w = {}; + for (var _ in f) + w[_] = f[_].read(m); + return a(m), w; + }, + toWireType: (m, w) => { + for (var _ in f) + if (!(_ in w)) + throw new TypeError(`Missing field: "${_}"`); + var T = n(); + for (_ in f) + f[_].write(T, w[_]); + return m !== null && m.push(a, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: a + }]; + }); + }, yn = (e, t, n, a, s) => { + }, gn = () => { + for (var e = new Array(256), t = 0; t < 256; ++t) + e[t] = String.fromCharCode(t); + Nt = e; + }, Nt, Y = (e) => { + for (var t = "", n = e; A[n]; ) + t += Nt[A[n++]]; + return t; + }, _e, x = (e) => { + throw new _e(e); + }; + function wn(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var a = t.name; + if (e || x(`type "${a}" must have a positive integer typeid pointer`), ye.hasOwnProperty(e)) { + if (n.ignoreDuplicateRegistrations) + return; + x(`Cannot register type '${a}' twice`); + } + if (ye[e] = t, delete Ge[e], $e.hasOwnProperty(e)) { + var s = $e[e]; + delete $e[e], s.forEach((u) => u()); + } + } + function re(e, t) { + let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + if (!("argPackAdvance" in t)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return wn(e, t, n); + } + var ne = 8, bn = (e, t, n, a) => { + t = Y(t), re(e, { + name: t, + fromWireType: function(s) { + return !!s; + }, + toWireType: function(s, u) { + return u ? n : a; + }, + argPackAdvance: ne, + readValueFromPointer: function(s) { + return this.fromWireType(A[s]); + }, + destructorFunction: null + }); + }, Cn = (e) => ({ + count: e.count, + deleteScheduled: e.deleteScheduled, + preservePointerOnDelete: e.preservePointerOnDelete, + ptr: e.ptr, + ptrType: e.ptrType, + smartPtr: e.smartPtr, + smartPtrType: e.smartPtrType + }), _t = (e) => { + function t(n) { + return n.$$.ptrType.registeredClass.name; + } + x(t(e) + " instance already deleted"); + }, St = false, zt = (e) => { + }, $n = (e) => { + e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr); + }, Gt = (e) => { + e.count.value -= 1; + var t = e.count.value === 0; + t && $n(e); + }, Yt = (e, t, n) => { + if (t === n) + return e; + if (n.baseClass === void 0) + return null; + var a = Yt(e, t, n.baseClass); + return a === null ? null : n.downcast(a); + }, Jt = {}, _n = () => Object.keys(Re).length, Sn = () => { + var e = []; + for (var t in Re) + Re.hasOwnProperty(t) && e.push(Re[t]); + return e; + }, Ae = [], Pt = () => { + for (; Ae.length; ) { + var e = Ae.pop(); + e.$$.deleteScheduled = false, e.delete(); + } + }, xe, Pn = (e) => { + xe = e, Ae.length && xe && xe(Pt); + }, Tn = () => { + i.getInheritedInstanceCount = _n, i.getLiveInheritedInstances = Sn, i.flushPendingDeletes = Pt, i.setDelayFunction = Pn; + }, Re = {}, En = (e, t) => { + for (t === void 0 && x("ptr should not be undefined"); e.baseClass; ) + t = e.upcast(t), e = e.baseClass; + return t; + }, On = (e, t) => (t = En(e, t), Re[t]), Je = (e, t) => { + (!t.ptrType || !t.ptr) && Ye("makeClassHandle requires ptr and ptrType"); + var n = !!t.smartPtrType, a = !!t.smartPtr; + return n !== a && Ye("Both smartPtrType and smartPtr must be specified"), t.count = { + value: 1 + }, ke(Object.create(e, { + $$: { + value: t, + writable: true + } + })); + }; + function Dn(e) { + var t = this.getPointee(e); + if (!t) + return this.destructor(e), null; + var n = On(this.registeredClass, t); + if (n !== void 0) { + if (n.$$.count.value === 0) + return n.$$.ptr = t, n.$$.smartPtr = e, n.clone(); + var a = n.clone(); + return this.destructor(e), a; + } + function s() { + return this.isSmartPointer ? Je(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: t, + smartPtrType: this, + smartPtr: e + }) : Je(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: e + }); + } + var u = this.registeredClass.getActualType(t), d = Jt[u]; + if (!d) + return s.call(this); + var f; + this.isConst ? f = d.constPointerType : f = d.pointerType; + var m = Yt(t, this.registeredClass, f.registeredClass); + return m === null ? s.call(this) : this.isSmartPointer ? Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m, + smartPtrType: this, + smartPtr: e + }) : Je(f.registeredClass.instancePrototype, { + ptrType: f, + ptr: m + }); + } + var ke = (e) => typeof FinalizationRegistry > "u" ? (ke = (t) => t, e) : (St = new FinalizationRegistry((t) => { + Gt(t.$$); + }), ke = (t) => { + var n = t.$$, a = !!n.smartPtr; + if (a) { + var s = { + $$: n + }; + St.register(t, s, t); + } + return t; + }, zt = (t) => St.unregister(t), ke(e)), Mn = () => { + Object.assign(Qe.prototype, { + isAliasOf(e) { + if (!(this instanceof Qe) || !(e instanceof Qe)) + return false; + var t = this.$$.ptrType.registeredClass, n = this.$$.ptr; + e.$$ = e.$$; + for (var a = e.$$.ptrType.registeredClass, s = e.$$.ptr; t.baseClass; ) + n = t.upcast(n), t = t.baseClass; + for (; a.baseClass; ) + s = a.upcast(s), a = a.baseClass; + return t === a && n === s; + }, + clone() { + if (this.$$.ptr || _t(this), this.$$.preservePointerOnDelete) + return this.$$.count.value += 1, this; + var e = ke(Object.create(Object.getPrototypeOf(this), { + $$: { + value: Cn(this.$$) + } + })); + return e.$$.count.value += 1, e.$$.deleteScheduled = false, e; + }, + delete() { + this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), zt(this), Gt(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0); + }, + isDeleted() { + return !this.$$.ptr; + }, + deleteLater() { + return this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x("Object already scheduled for deletion"), Ae.push(this), Ae.length === 1 && xe && xe(Pt), this.$$.deleteScheduled = true, this; + } + }); + }; + function Qe() { + } + var Ie = (e, t) => Object.defineProperty(t, "name", { + value: e + }), Qt = (e, t, n) => { + if (e[t].overloadTable === void 0) { + var a = e[t]; + e[t] = function() { + return e[t].overloadTable.hasOwnProperty(arguments.length) || x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`), e[t].overloadTable[arguments.length].apply(this, arguments); + }, e[t].overloadTable = [], e[t].overloadTable[a.argCount] = a; + } + }, Tt = (e, t, n) => { + i.hasOwnProperty(e) ? ((n === void 0 || i[e].overloadTable !== void 0 && i[e].overloadTable[n] !== void 0) && x(`Cannot register public name '${e}' twice`), Qt(i, e, e), i.hasOwnProperty(n) && x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`), i[e].overloadTable[n] = t) : (i[e] = t, n !== void 0 && (i[e].numArguments = n)); + }, An = 48, xn = 57, Rn = (e) => { + if (e === void 0) + return "_unknown"; + e = e.replace(/[^a-zA-Z0-9_]/g, "$"); + var t = e.charCodeAt(0); + return t >= An && t <= xn ? `_${e}` : e; + }; + function kn(e, t, n, a, s, u, d, f) { + this.name = e, this.constructor = t, this.instancePrototype = n, this.rawDestructor = a, this.baseClass = s, this.getActualType = u, this.upcast = d, this.downcast = f, this.pureVirtualFunctions = []; + } + var Et = (e, t, n) => { + for (; t !== n; ) + t.upcast || x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`), e = t.upcast(e), t = t.baseClass; + return e; + }; + function In(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Fn(e, t) { + var n; + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), this.isSmartPointer ? (n = this.rawConstructor(), e !== null && e.push(this.rawDestructor, n), n) : 0; + (!t || !t.$$) && x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + var a = t.$$.ptrType.registeredClass; + if (n = Et(t.$$.ptr, a, this.registeredClass), this.isSmartPointer) + switch (t.$$.smartPtr === void 0 && x("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { + case 0: + t.$$.smartPtrType === this ? n = t.$$.smartPtr : x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`); + break; + case 1: + n = t.$$.smartPtr; + break; + case 2: + if (t.$$.smartPtrType === this) + n = t.$$.smartPtr; + else { + var s = t.clone(); + n = this.rawShare(n, se.toHandle(() => s.delete())), e !== null && e.push(this.rawDestructor, n); + } + break; + default: + x("Unsupporting sharing policy"); + } + return n; + } + function Un(e, t) { + if (t === null) + return this.isReference && x(`null is not a valid ${this.name}`), 0; + t.$$ || x(`Cannot pass "${xt(t)}" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`); + var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass); + return a; + } + function Xt(e) { + return this.fromWireType(M[e >> 2]); + } + var Wn = () => { + Object.assign(Xe.prototype, { + getPointee(e) { + return this.rawGetPointee && (e = this.rawGetPointee(e)), e; + }, + destructor(e) { + var t; + (t = this.rawDestructor) === null || t === void 0 || t.call(this, e); + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + deleteObject(e) { + e !== null && e.delete(); + }, + fromWireType: Dn + }); + }; + function Xe(e, t, n, a, s, u, d, f, m, w, _) { + this.name = e, this.registeredClass = t, this.isReference = n, this.isConst = a, this.isSmartPointer = s, this.pointeeType = u, this.sharingPolicy = d, this.rawGetPointee = f, this.rawConstructor = m, this.rawShare = w, this.rawDestructor = _, !s && t.baseClass === void 0 ? a ? (this.toWireType = In, this.destructorFunction = null) : (this.toWireType = Un, this.destructorFunction = null) : this.toWireType = Fn; + } + var Zt = (e, t, n) => { + i.hasOwnProperty(e) || Ye("Replacing nonexistant public symbol"), i[e].overloadTable !== void 0 && n !== void 0 ? i[e].overloadTable[n] = t : (i[e] = t, i[e].argCount = n); + }, jn = (e, t, n) => { + var a = i["dynCall_" + e]; + return n && n.length ? a.apply(null, [t].concat(n)) : a.call(null, t); + }, Ze = [], Kt, H = (e) => { + var t = Ze[e]; + return t || (e >= Ze.length && (Ze.length = e + 1), Ze[e] = t = Kt.get(e)), t; + }, Ln = (e, t, n) => { + if (e.includes("j")) + return jn(e, t, n); + var a = H(t).apply(null, n); + return a; + }, Hn = (e, t) => { + var n = []; + return function() { + return n.length = 0, Object.assign(n, arguments), Ln(e, t, n); + }; + }, ee = (e, t) => { + e = Y(e); + function n() { + return e.includes("j") ? Hn(e, t) : H(t); + } + var a = n(); + return typeof a != "function" && x(`unknown function pointer with signature ${e}: ${t}`), a; + }, Bn = (e, t) => { + var n = Ie(t, function(a) { + this.name = t, this.message = a; + var s = new Error(a).stack; + s !== void 0 && (this.stack = this.toString() + ` +` + s.replace(/^Error(:[^\n]*)?\n/, "")); + }); + return n.prototype = Object.create(e.prototype), n.prototype.constructor = n, n.prototype.toString = function() { + return this.message === void 0 ? this.name : `${this.name}: ${this.message}`; + }, n; + }, er, tr = (e) => { + var t = dr(e), n = Y(t); + return ce(t), n; + }, Ke = (e, t) => { + var n = [], a = {}; + function s(u) { + if (!a[u] && !ye[u]) { + if (Ge[u]) { + Ge[u].forEach(s); + return; + } + n.push(u), a[u] = true; + } + } + throw t.forEach(s), new er(`${e}: ` + n.map(tr).join([", "])); + }, Vn = (e, t, n, a, s, u, d, f, m, w, _, T, E) => { + _ = Y(_), u = ee(s, u), f && (f = ee(d, f)), w && (w = ee(m, w)), E = ee(T, E); + var O = Rn(_); + Tt(O, function() { + Ke(`Cannot construct ${_} due to unbound types`, [a]); + }), ge([e, t, n], a ? [a] : [], function(L) { + L = L[0]; + var q, I; + a ? (q = L.registeredClass, I = q.instancePrototype) : I = Qe.prototype; + var J = Ie(_, function() { + if (Object.getPrototypeOf(this) !== y) + throw new _e("Use 'new' to construct " + _); + if (P.constructor_body === void 0) + throw new _e(_ + " has no accessible constructor"); + var wr = P.constructor_body[arguments.length]; + if (wr === void 0) + throw new _e(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`); + return wr.apply(this, arguments); + }), y = Object.create(I, { + constructor: { + value: J + } + }); + J.prototype = y; + var P = new kn(_, J, y, E, q, u, f, w); + if (P.baseClass) { + var N, G; + (G = (N = P.baseClass).__derivedClasses) !== null && G !== void 0 || (N.__derivedClasses = []), P.baseClass.__derivedClasses.push(P); + } + var Se = new Xe(_, P, true, false, false), rt = new Xe(_ + "*", P, false, false, false), gr = new Xe(_ + " const*", P, false, true, false); + return Jt[e] = { + pointerType: rt, + constPointerType: gr + }, Zt(O, J), [Se, rt, gr]; + }); + }, Ot = (e, t) => { + for (var n = [], a = 0; a < e; a++) + n.push(M[t + a * 4 >> 2]); + return n; + }; + function qn(e) { + for (var t = 1; t < e.length; ++t) + if (e[t] !== null && e[t].destructorFunction === void 0) + return true; + return false; + } + function Dt(e, t, n, a, s, u) { + var d = t.length; + d < 2 && x("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var f = t[1] !== null && n !== null, m = qn(t), w = t[0].name !== "void", _ = d - 2, T = new Array(_), E = [], O = [], L = function() { + arguments.length !== _ && x(`function ${e} called with ${arguments.length} arguments, expected ${_}`), O.length = 0; + var q; + E.length = f ? 2 : 1, E[0] = s, f && (q = t[1].toWireType(O, this), E[1] = q); + for (var I = 0; I < _; ++I) + T[I] = t[I + 2].toWireType(O, arguments[I]), E.push(T[I]); + var J = a.apply(null, E); + function y(P) { + if (m) + Ct(O); + else + for (var N = f ? 1 : 2; N < t.length; N++) { + var G = N === 1 ? q : T[N - 2]; + t[N].destructorFunction !== null && t[N].destructorFunction(G); + } + if (w) + return t[0].fromWireType(P); + } + return y(J); + }; + return Ie(e, L); + } + var Nn = (e, t, n, a, s, u) => { + var d = Ot(t, n); + s = ee(a, s), ge([], [e], function(f) { + f = f[0]; + var m = `constructor ${f.name}`; + if (f.registeredClass.constructor_body === void 0 && (f.registeredClass.constructor_body = []), f.registeredClass.constructor_body[t - 1] !== void 0) + throw new _e(`Cannot register multiple constructors with identical number of parameters (${t - 1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`); + return f.registeredClass.constructor_body[t - 1] = () => { + Ke(`Cannot construct ${f.name} due to unbound types`, d); + }, ge([], d, (w) => (w.splice(1, 0, null), f.registeredClass.constructor_body[t - 1] = Dt(m, w, null, s, u), [])), []; + }); + }, rr = (e) => { + e = e.trim(); + const t = e.indexOf("("); + return t !== -1 ? e.substr(0, t) : e; + }, zn = (e, t, n, a, s, u, d, f, m) => { + var w = Ot(n, a); + t = Y(t), t = rr(t), u = ee(s, u), ge([], [e], function(_) { + _ = _[0]; + var T = `${_.name}.${t}`; + t.startsWith("@@") && (t = Symbol[t.substring(2)]), f && _.registeredClass.pureVirtualFunctions.push(t); + function E() { + Ke(`Cannot call ${T} due to unbound types`, w); + } + var O = _.registeredClass.instancePrototype, L = O[t]; + return L === void 0 || L.overloadTable === void 0 && L.className !== _.name && L.argCount === n - 2 ? (E.argCount = n - 2, E.className = _.name, O[t] = E) : (Qt(O, t, T), O[t].overloadTable[n - 2] = E), ge([], w, function(q) { + var I = Dt(T, q, _, u, d); + return O[t].overloadTable === void 0 ? (I.argCount = n - 2, O[t] = I) : O[t].overloadTable[n - 2] = I, []; + }), []; + }); + }; + function Gn() { + Object.assign(nr.prototype, { + get(e) { + return this.allocated[e]; + }, + has(e) { + return this.allocated[e] !== void 0; + }, + allocate(e) { + var t = this.freelist.pop() || this.allocated.length; + return this.allocated[t] = e, t; + }, + free(e) { + this.allocated[e] = void 0, this.freelist.push(e); + } + }); + } + function nr() { + this.allocated = [void 0], this.freelist = []; + } + var K = new nr(), Mt = (e) => { + e >= K.reserved && --K.get(e).refcount === 0 && K.free(e); + }, Yn = () => { + for (var e = 0, t = K.reserved; t < K.allocated.length; ++t) + K.allocated[t] !== void 0 && ++e; + return e; + }, Jn = () => { + K.allocated.push({ + value: void 0 + }, { + value: null + }, { + value: true + }, { + value: false + }), K.reserved = K.allocated.length, i.count_emval_handles = Yn; + }, se = { + toValue: (e) => (e || x("Cannot use deleted val. handle = " + e), K.get(e).value), + toHandle: (e) => { + switch (e) { + case void 0: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: + return K.allocate({ + refcount: 1, + value: e + }); + } + } + }, Qn = (e, t) => { + t = Y(t), re(e, { + name: t, + fromWireType: (n) => { + var a = se.toValue(n); + return Mt(n), a; + }, + toWireType: (n, a) => se.toHandle(a), + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction: null + }); + }, Xn = (e, t, n) => { + switch (t) { + case 1: + return n ? function(a) { + return this.fromWireType(R[a >> 0]); + } : function(a) { + return this.fromWireType(A[a >> 0]); + }; + case 2: + return n ? function(a) { + return this.fromWireType(X[a >> 1]); + } : function(a) { + return this.fromWireType(k[a >> 1]); + }; + case 4: + return n ? function(a) { + return this.fromWireType(D[a >> 2]); + } : function(a) { + return this.fromWireType(M[a >> 2]); + }; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, Zn = (e, t, n, a) => { + t = Y(t); + function s() { + } + s.values = {}, re(e, { + name: t, + constructor: s, + fromWireType: function(u) { + return this.constructor.values[u]; + }, + toWireType: (u, d) => d.value, + argPackAdvance: ne, + readValueFromPointer: Xn(t, n, a), + destructorFunction: null + }), Tt(t, s); + }, At = (e, t) => { + var n = ye[e]; + return n === void 0 && x(t + " has unknown type " + tr(e)), n; + }, Kn = (e, t, n) => { + var a = At(e, "enum"); + t = Y(t); + var s = a.constructor, u = Object.create(a.constructor.prototype, { + value: { + value: n + }, + constructor: { + value: Ie(`${a.name}_${t}`, function() { + }) + } + }); + s.values[n] = u, s[t] = u; + }, xt = (e) => { + if (e === null) + return "null"; + var t = typeof e; + return t === "object" || t === "array" || t === "function" ? e.toString() : "" + e; + }, ea = (e, t) => { + switch (t) { + case 4: + return function(n) { + return this.fromWireType(le[n >> 2]); + }; + case 8: + return function(n) { + return this.fromWireType(oe[n >> 3]); + }; + default: + throw new TypeError(`invalid float width (${t}): ${e}`); + } + }, ta = (e, t, n) => { + t = Y(t), re(e, { + name: t, + fromWireType: (a) => a, + toWireType: (a, s) => s, + argPackAdvance: ne, + readValueFromPointer: ea(t, n), + destructorFunction: null + }); + }, ra = (e, t, n, a, s, u, d) => { + var f = Ot(t, n); + e = Y(e), e = rr(e), s = ee(a, s), Tt(e, function() { + Ke(`Cannot call ${e} due to unbound types`, f); + }, t - 1), ge([], f, function(m) { + var w = [m[0], null].concat(m.slice(1)); + return Zt(e, Dt(e, w, null, s, u), t - 1), []; + }); + }, na = (e, t, n) => { + switch (t) { + case 1: + return n ? (a) => R[a >> 0] : (a) => A[a >> 0]; + case 2: + return n ? (a) => X[a >> 1] : (a) => k[a >> 1]; + case 4: + return n ? (a) => D[a >> 2] : (a) => M[a >> 2]; + default: + throw new TypeError(`invalid integer width (${t}): ${e}`); + } + }, aa = (e, t, n, a, s) => { + t = Y(t); + var u = (_) => _; + if (a === 0) { + var d = 32 - 8 * n; + u = (_) => _ << d >>> d; + } + var f = t.includes("unsigned"), m = (_, T) => { + }, w; + f ? w = function(_, T) { + return m(T, this.name), T >>> 0; + } : w = function(_, T) { + return m(T, this.name), T; + }, re(e, { + name: t, + fromWireType: u, + toWireType: w, + argPackAdvance: ne, + readValueFromPointer: na(t, n, a !== 0), + destructorFunction: null + }); + }, oa = (e, t, n) => { + var a = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], s = a[t]; + function u(d) { + var f = M[d >> 2], m = M[d + 4 >> 2]; + return new s(R.buffer, m, f); + } + n = Y(n), re(e, { + name: n, + fromWireType: u, + argPackAdvance: ne, + readValueFromPointer: u + }, { + ignoreDuplicateRegistrations: true + }); + }, ar = (e, t, n, a) => { + if (!(a > 0)) + return 0; + for (var s = n, u = n + a - 1, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (f <= 127) { + if (n >= u) + break; + t[n++] = f; + } else if (f <= 2047) { + if (n + 1 >= u) + break; + t[n++] = 192 | f >> 6, t[n++] = 128 | f & 63; + } else if (f <= 65535) { + if (n + 2 >= u) + break; + t[n++] = 224 | f >> 12, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } else { + if (n + 3 >= u) + break; + t[n++] = 240 | f >> 18, t[n++] = 128 | f >> 12 & 63, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63; + } + } + return t[n] = 0, n - s; + }, ia = (e, t, n) => ar(e, A, t, n), or = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a <= 127 ? t++ : a <= 2047 ? t += 2 : a >= 55296 && a <= 57343 ? (t += 4, ++n) : t += 3; + } + return t; + }, ir = typeof TextDecoder < "u" ? new TextDecoder("utf8") : void 0, sa = (e, t, n) => { + for (var a = t + n, s = t; e[s] && !(s >= a); ) + ++s; + if (s - t > 16 && e.buffer && ir) + return ir.decode(e.subarray(t, s)); + for (var u = ""; t < s; ) { + var d = e[t++]; + if (!(d & 128)) { + u += String.fromCharCode(d); + continue; + } + var f = e[t++] & 63; + if ((d & 224) == 192) { + u += String.fromCharCode((d & 31) << 6 | f); + continue; + } + var m = e[t++] & 63; + if ((d & 240) == 224 ? d = (d & 15) << 12 | f << 6 | m : d = (d & 7) << 18 | f << 12 | m << 6 | e[t++] & 63, d < 65536) + u += String.fromCharCode(d); + else { + var w = d - 65536; + u += String.fromCharCode(55296 | w >> 10, 56320 | w & 1023); + } + } + return u; + }, Rt = (e, t) => e ? sa(A, e, t) : "", ca = (e, t) => { + t = Y(t); + var n = t === "std::string"; + re(e, { + name: t, + fromWireType(a) { + var s = M[a >> 2], u = a + 4, d; + if (n) + for (var f = u, m = 0; m <= s; ++m) { + var w = u + m; + if (m == s || A[w] == 0) { + var _ = w - f, T = Rt(f, _); + d === void 0 ? d = T : (d += "\0", d += T), f = w + 1; + } + } + else { + for (var E = new Array(s), m = 0; m < s; ++m) + E[m] = String.fromCharCode(A[u + m]); + d = E.join(""); + } + return ce(a), d; + }, + toWireType(a, s) { + s instanceof ArrayBuffer && (s = new Uint8Array(s)); + var u, d = typeof s == "string"; + d || s instanceof Uint8Array || s instanceof Uint8ClampedArray || s instanceof Int8Array || x("Cannot pass non-string to std::string"), n && d ? u = or(s) : u = s.length; + var f = Ft(4 + u + 1), m = f + 4; + if (M[f >> 2] = u, n && d) + ia(s, m, u + 1); + else if (d) + for (var w = 0; w < u; ++w) { + var _ = s.charCodeAt(w); + _ > 255 && (ce(m), x("String has UTF-16 code units that do not fit in 8 bits")), A[m + w] = _; + } + else + for (var w = 0; w < u; ++w) + A[m + w] = s[w]; + return a !== null && a.push(ce, f), f; + }, + argPackAdvance: ne, + readValueFromPointer: Xt, + destructorFunction(a) { + ce(a); + } + }); + }, sr = typeof TextDecoder < "u" ? new TextDecoder("utf-16le") : void 0, ua = (e, t) => { + for (var n = e, a = n >> 1, s = a + t / 2; !(a >= s) && k[a]; ) + ++a; + if (n = a << 1, n - e > 32 && sr) + return sr.decode(A.subarray(e, n)); + for (var u = "", d = 0; !(d >= t / 2); ++d) { + var f = X[e + d * 2 >> 1]; + if (f == 0) + break; + u += String.fromCharCode(f); + } + return u; + }, la = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 2) + return 0; + n -= 2; + for (var s = t, u = n < e.length * 2 ? n / 2 : e.length, d = 0; d < u; ++d) { + var f = e.charCodeAt(d); + X[t >> 1] = f, t += 2; + } + return X[t >> 1] = 0, t - s; + }, da = (e) => e.length * 2, fa = (e, t) => { + for (var n = 0, a = ""; !(n >= t / 4); ) { + var s = D[e + n * 4 >> 2]; + if (s == 0) + break; + if (++n, s >= 65536) { + var u = s - 65536; + a += String.fromCharCode(55296 | u >> 10, 56320 | u & 1023); + } else + a += String.fromCharCode(s); + } + return a; + }, ha = (e, t, n) => { + var a; + if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 4) + return 0; + for (var s = t, u = s + n - 4, d = 0; d < e.length; ++d) { + var f = e.charCodeAt(d); + if (f >= 55296 && f <= 57343) { + var m = e.charCodeAt(++d); + f = 65536 + ((f & 1023) << 10) | m & 1023; + } + if (D[t >> 2] = f, t += 4, t + 4 > u) + break; + } + return D[t >> 2] = 0, t - s; + }, pa = (e) => { + for (var t = 0, n = 0; n < e.length; ++n) { + var a = e.charCodeAt(n); + a >= 55296 && a <= 57343 && ++n, t += 4; + } + return t; + }, ma = (e, t, n) => { + n = Y(n); + var a, s, u, d, f; + t === 2 ? (a = ua, s = la, d = da, u = () => k, f = 1) : t === 4 && (a = fa, s = ha, d = pa, u = () => M, f = 2), re(e, { + name: n, + fromWireType: (m) => { + for (var w = M[m >> 2], _ = u(), T, E = m + 4, O = 0; O <= w; ++O) { + var L = m + 4 + O * t; + if (O == w || _[L >> f] == 0) { + var q = L - E, I = a(E, q); + T === void 0 ? T = I : (T += "\0", T += I), E = L + t; + } + } + return ce(m), T; + }, + toWireType: (m, w) => { + typeof w != "string" && x(`Cannot pass non-string to C++ string type ${n}`); + var _ = d(w), T = Ft(4 + _ + t); + return M[T >> 2] = _ >> f, s(w, T + 4, _ + t), m !== null && m.push(ce, T), T; + }, + argPackAdvance: ne, + readValueFromPointer: $t, + destructorFunction(m) { + ce(m); + } + }); + }, va = (e, t, n, a, s, u) => { + ze[e] = { + name: Y(t), + rawConstructor: ee(n, a), + rawDestructor: ee(s, u), + fields: [] + }; + }, ya = (e, t, n, a, s, u, d, f, m, w) => { + ze[e].fields.push({ + fieldName: Y(t), + getterReturnType: n, + getter: ee(a, s), + getterContext: u, + setterArgumentType: d, + setter: ee(f, m), + setterContext: w + }); + }, ga = (e, t) => { + t = Y(t), re(e, { + isVoid: true, + name: t, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: (n, a) => { + } + }); + }, kt = [], wa = (e, t, n, a) => (e = kt[e], t = se.toValue(t), e(null, t, n, a)), ba = {}, Ca = (e) => { + var t = ba[e]; + return t === void 0 ? Y(e) : t; + }, cr = () => { + if (typeof globalThis == "object") + return globalThis; + function e(t) { + t.$$$embind_global$$$ = t; + var n = typeof $$$embind_global$$$ == "object" && t.$$$embind_global$$$ == t; + return n || delete t.$$$embind_global$$$, n; + } + if (typeof $$$embind_global$$$ == "object" || (typeof global == "object" && e(global) ? $$$embind_global$$$ = global : typeof self == "object" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == "object")) + return $$$embind_global$$$; + throw Error("unable to get global object."); + }, $a = (e) => e === 0 ? se.toHandle(cr()) : (e = Ca(e), se.toHandle(cr()[e])), _a = (e) => { + var t = kt.length; + return kt.push(e), t; + }, Sa = (e, t) => { + for (var n = new Array(e), a = 0; a < e; ++a) + n[a] = At(M[t + a * 4 >> 2], "parameter " + a); + return n; + }, Pa = Reflect.construct, Ta = (e, t, n) => { + var a = [], s = e.toWireType(a, n); + return a.length && (M[t >> 2] = se.toHandle(a)), s; + }, Ea = (e, t, n) => { + var a = Sa(e, t), s = a.shift(); + e--; + var u = new Array(e), d = (m, w, _, T) => { + for (var E = 0, O = 0; O < e; ++O) + u[O] = a[O].readValueFromPointer(T + E), E += a[O].argPackAdvance; + for (var L = n === 1 ? Pa(w, u) : w.apply(m, u), O = 0; O < e; ++O) { + var q, I; + (q = (I = a[O]).deleteObject) === null || q === void 0 || q.call(I, u[O]); + } + return Ta(s, _, L); + }, f = `methodCaller<(${a.map((m) => m.name).join(", ")}) => ${s.name}>`; + return _a(Ie(f, d)); + }, Oa = (e) => { + e > 4 && (K.get(e).refcount += 1); + }, Da = (e) => { + var t = se.toValue(e); + Ct(t), Mt(e); + }, Ma = (e, t) => { + e = At(e, "_emval_take_value"); + var n = e.readValueFromPointer(t); + return se.toHandle(n); + }, Aa = () => { + Z(""); + }, xa = (e, t, n) => A.copyWithin(e, t, t + n), Ra = () => 2147483648, ka = (e) => { + var t = U.buffer, n = (e - t.byteLength + 65535) / 65536; + try { + return U.grow(n), be(), 1; + } catch (a) { + } + }, Ia = (e) => { + var t = A.length; + e >>>= 0; + var n = Ra(); + if (e > n) + return false; + for (var a = (m, w) => m + (w - m % w) % w, s = 1; s <= 4; s *= 2) { + var u = t * (1 + 0.2 / s); + u = Math.min(u, e + 100663296); + var d = Math.min(n, a(Math.max(e, u), 65536)), f = ka(d); + if (f) + return true; + } + return false; + }, It = {}, Fa = () => v || "./this.program", Fe = () => { + if (!Fe.strings) { + var e = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", t = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: e, + _: Fa() + }; + for (var n in It) + It[n] === void 0 ? delete t[n] : t[n] = It[n]; + var a = []; + for (var n in t) + a.push(`${n}=${t[n]}`); + Fe.strings = a; + } + return Fe.strings; + }, Ua = (e, t) => { + for (var n = 0; n < e.length; ++n) + R[t++ >> 0] = e.charCodeAt(n); + R[t >> 0] = 0; + }, Wa = (e, t) => { + var n = 0; + return Fe().forEach((a, s) => { + var u = t + n; + M[e + s * 4 >> 2] = u, Ua(a, u), n += a.length + 1; + }), 0; + }, ja = (e, t) => { + var n = Fe(); + M[e >> 2] = n.length; + var a = 0; + return n.forEach((s) => a += s.length + 1), M[t >> 2] = a, 0; + }, La = (e) => e, et = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Ha = (e, t) => { + for (var n = 0, a = 0; a <= t; n += e[a++]) + ; + return n; + }, ur = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], lr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Ba = (e, t) => { + for (var n = new Date(e.getTime()); t > 0; ) { + var a = et(n.getFullYear()), s = n.getMonth(), u = (a ? ur : lr)[s]; + if (t > u - n.getDate()) + t -= u - n.getDate() + 1, n.setDate(1), s < 11 ? n.setMonth(s + 1) : (n.setMonth(0), n.setFullYear(n.getFullYear() + 1)); + else + return n.setDate(n.getDate() + t), n; + } + return n; + }; + function Va(e, t, n) { + var a = or(e) + 1, s = new Array(a); + return ar(e, s, 0, s.length), s; + } + var qa = (e, t) => { + R.set(e, t); + }, Na = (e, t, n, a) => { + var s = M[a + 40 >> 2], u = { + tm_sec: D[a >> 2], + tm_min: D[a + 4 >> 2], + tm_hour: D[a + 8 >> 2], + tm_mday: D[a + 12 >> 2], + tm_mon: D[a + 16 >> 2], + tm_year: D[a + 20 >> 2], + tm_wday: D[a + 24 >> 2], + tm_yday: D[a + 28 >> 2], + tm_isdst: D[a + 32 >> 2], + tm_gmtoff: D[a + 36 >> 2], + tm_zone: s ? Rt(s) : "" + }, d = Rt(n), f = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y" + }; + for (var m in f) + d = d.replace(new RegExp(m, "g"), f[m]); + var w = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], _ = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; + function T(y, P, N) { + for (var G = typeof y == "number" ? y.toString() : y || ""; G.length < P; ) + G = N[0] + G; + return G; + } + function E(y, P) { + return T(y, P, "0"); + } + function O(y, P) { + function N(Se) { + return Se < 0 ? -1 : Se > 0 ? 1 : 0; + } + var G; + return (G = N(y.getFullYear() - P.getFullYear())) === 0 && (G = N(y.getMonth() - P.getMonth())) === 0 && (G = N(y.getDate() - P.getDate())), G; + } + function L(y) { + switch (y.getDay()) { + case 0: + return new Date(y.getFullYear() - 1, 11, 29); + case 1: + return y; + case 2: + return new Date(y.getFullYear(), 0, 3); + case 3: + return new Date(y.getFullYear(), 0, 2); + case 4: + return new Date(y.getFullYear(), 0, 1); + case 5: + return new Date(y.getFullYear() - 1, 11, 31); + case 6: + return new Date(y.getFullYear() - 1, 11, 30); + } + } + function q(y) { + var P = Ba(new Date(y.tm_year + 1900, 0, 1), y.tm_yday), N = new Date(P.getFullYear(), 0, 4), G = new Date(P.getFullYear() + 1, 0, 4), Se = L(N), rt = L(G); + return O(Se, P) <= 0 ? O(rt, P) <= 0 ? P.getFullYear() + 1 : P.getFullYear() : P.getFullYear() - 1; + } + var I = { + "%a": (y) => w[y.tm_wday].substring(0, 3), + "%A": (y) => w[y.tm_wday], + "%b": (y) => _[y.tm_mon].substring(0, 3), + "%B": (y) => _[y.tm_mon], + "%C": (y) => { + var P = y.tm_year + 1900; + return E(P / 100 | 0, 2); + }, + "%d": (y) => E(y.tm_mday, 2), + "%e": (y) => T(y.tm_mday, 2, " "), + "%g": (y) => q(y).toString().substring(2), + "%G": (y) => q(y), + "%H": (y) => E(y.tm_hour, 2), + "%I": (y) => { + var P = y.tm_hour; + return P == 0 ? P = 12 : P > 12 && (P -= 12), E(P, 2); + }, + "%j": (y) => E(y.tm_mday + Ha(et(y.tm_year + 1900) ? ur : lr, y.tm_mon - 1), 3), + "%m": (y) => E(y.tm_mon + 1, 2), + "%M": (y) => E(y.tm_min, 2), + "%n": () => ` +`, + "%p": (y) => y.tm_hour >= 0 && y.tm_hour < 12 ? "AM" : "PM", + "%S": (y) => E(y.tm_sec, 2), + "%t": () => " ", + "%u": (y) => y.tm_wday || 7, + "%U": (y) => { + var P = y.tm_yday + 7 - y.tm_wday; + return E(Math.floor(P / 7), 2); + }, + "%V": (y) => { + var P = Math.floor((y.tm_yday + 7 - (y.tm_wday + 6) % 7) / 7); + if ((y.tm_wday + 371 - y.tm_yday - 2) % 7 <= 2 && P++, P) { + if (P == 53) { + var N = (y.tm_wday + 371 - y.tm_yday) % 7; + N != 4 && (N != 3 || !et(y.tm_year)) && (P = 1); + } + } else { + P = 52; + var G = (y.tm_wday + 7 - y.tm_yday - 1) % 7; + (G == 4 || G == 5 && et(y.tm_year % 400 - 1)) && P++; + } + return E(P, 2); + }, + "%w": (y) => y.tm_wday, + "%W": (y) => { + var P = y.tm_yday + 7 - (y.tm_wday + 6) % 7; + return E(Math.floor(P / 7), 2); + }, + "%y": (y) => (y.tm_year + 1900).toString().substring(2), + "%Y": (y) => y.tm_year + 1900, + "%z": (y) => { + var P = y.tm_gmtoff, N = P >= 0; + return P = Math.abs(P) / 60, P = P / 60 * 100 + P % 60, (N ? "+" : "-") + ("0000" + P).slice(-4); + }, + "%Z": (y) => y.tm_zone, + "%%": () => "%" + }; + d = d.replace(/%%/g, "\0\0"); + for (var m in I) + d.includes(m) && (d = d.replace(new RegExp(m, "g"), I[m](u))); + d = d.replace(/\0\0/g, "%"); + var J = Va(d); + return J.length > t ? 0 : (qa(J, e), J.length - 1); + }, za = (e, t, n, a, s) => Na(e, t, n, a); + qt = i.InternalError = class extends Error { + constructor(e) { + super(e), this.name = "InternalError"; + } + }, gn(), _e = i.BindingError = class extends Error { + constructor(e) { + super(e), this.name = "BindingError"; + } + }, Mn(), Tn(), Wn(), er = i.UnboundTypeError = Bn(Error, "UnboundTypeError"), Gn(), Jn(); + var Ga = { + s: sn, + u: cn, + b: ln, + g: dn, + q: fn, + J: hn, + f: pn, + V: mn, + d: un, + da: vn, + Q: yn, + _: bn, + ca: Vn, + ba: Nn, + w: zn, + Y: Qn, + x: Zn, + h: Kn, + L: ta, + M: ra, + t: aa, + o: oa, + K: ca, + C: ma, + A: va, + ea: ya, + $: ga, + R: wa, + ha: Mt, + fa: $a, + Z: Ea, + N: Oa, + O: Da, + aa: Ma, + B: Aa, + X: xa, + W: Ia, + T: Wa, + U: ja, + E: uo, + D: Za, + F: co, + n: lo, + a: Ya, + e: eo, + m: Xa, + k: ro, + H: io, + v: ao, + G: so, + z: ho, + P: mo, + l: to, + j: Ka, + c: Qa, + p: Ja, + I: oo, + r: fo, + i: no, + y: po, + ga: La, + S: za + }, z = on(), ce = i._free = (e) => (ce = i._free = z.ka)(e), Ft = i._malloc = (e) => (Ft = i._malloc = z.la)(e), dr = (e) => (dr = z.na)(e), j = (e, t) => (j = z.oa)(e, t), Ue = (e) => (Ue = z.pa)(e), B = () => (B = z.qa)(), V = (e) => (V = z.ra)(e), fr = (e) => (fr = z.sa)(e), hr = (e) => (hr = z.ta)(e), pr = (e, t, n) => (pr = z.ua)(e, t, n), mr = (e) => (mr = z.va)(e); + i.dynCall_viijii = (e, t, n, a, s, u, d) => (i.dynCall_viijii = z.wa)(e, t, n, a, s, u, d); + var vr = i.dynCall_jiiii = (e, t, n, a, s) => (vr = i.dynCall_jiiii = z.xa)(e, t, n, a, s); + i.dynCall_iiiiij = (e, t, n, a, s, u, d) => (i.dynCall_iiiiij = z.ya)(e, t, n, a, s, u, d), i.dynCall_iiiiijj = (e, t, n, a, s, u, d, f, m) => (i.dynCall_iiiiijj = z.za)(e, t, n, a, s, u, d, f, m), i.dynCall_iiiiiijj = (e, t, n, a, s, u, d, f, m, w) => (i.dynCall_iiiiiijj = z.Aa)(e, t, n, a, s, u, d, f, m, w); + function Ya(e, t) { + var n = B(); + try { + return H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function Ja(e, t, n, a) { + var s = B(); + try { + H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Qa(e, t, n) { + var a = B(); + try { + H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function Xa(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function Za(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function Ka(e, t) { + var n = B(); + try { + H(e)(t); + } catch (a) { + if (V(n), a !== a + 0) + throw a; + j(1, 0); + } + } + function eo(e, t, n) { + var a = B(); + try { + return H(e)(t, n); + } catch (s) { + if (V(a), s !== s + 0) + throw s; + j(1, 0); + } + } + function to(e) { + var t = B(); + try { + H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function ro(e, t, n, a, s) { + var u = B(); + try { + return H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function no(e, t, n, a, s, u, d, f, m, w, _) { + var T = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _); + } catch (E) { + if (V(T), E !== E + 0) + throw E; + j(1, 0); + } + } + function ao(e, t, n, a, s, u, d) { + var f = B(); + try { + return H(e)(t, n, a, s, u, d); + } catch (m) { + if (V(f), m !== m + 0) + throw m; + j(1, 0); + } + } + function oo(e, t, n, a, s) { + var u = B(); + try { + H(e)(t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + function io(e, t, n, a, s, u) { + var d = B(); + try { + return H(e)(t, n, a, s, u); + } catch (f) { + if (V(d), f !== f + 0) + throw f; + j(1, 0); + } + } + function so(e, t, n, a, s, u, d, f) { + var m = B(); + try { + return H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function co(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function uo(e, t, n, a) { + var s = B(); + try { + return H(e)(t, n, a); + } catch (u) { + if (V(s), u !== u + 0) + throw u; + j(1, 0); + } + } + function lo(e) { + var t = B(); + try { + return H(e)(); + } catch (n) { + if (V(t), n !== n + 0) + throw n; + j(1, 0); + } + } + function fo(e, t, n, a, s, u, d, f) { + var m = B(); + try { + H(e)(t, n, a, s, u, d, f); + } catch (w) { + if (V(m), w !== w + 0) + throw w; + j(1, 0); + } + } + function ho(e, t, n, a, s, u, d, f, m, w, _, T) { + var E = B(); + try { + return H(e)(t, n, a, s, u, d, f, m, w, _, T); + } catch (O) { + if (V(E), O !== O + 0) + throw O; + j(1, 0); + } + } + function po(e, t, n, a, s, u, d, f, m, w, _, T, E, O, L, q) { + var I = B(); + try { + H(e)(t, n, a, s, u, d, f, m, w, _, T, E, O, L, q); + } catch (J) { + if (V(I), J !== J + 0) + throw J; + j(1, 0); + } + } + function mo(e, t, n, a, s) { + var u = B(); + try { + return vr(e, t, n, a, s); + } catch (d) { + if (V(u), d !== d + 0) + throw d; + j(1, 0); + } + } + var tt; + ve = function e() { + tt || yr(), tt || (ve = e); + }; + function yr() { + if (te > 0 || (Le(), te > 0)) + return; + function e() { + tt || (tt = true, i.calledRun = true, !W && (dt(), c(i), i.onRuntimeInitialized && i.onRuntimeInitialized(), ft())); + } + i.setStatus ? (i.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + i.setStatus(""); + }, 1), e(); + }, 1)) : e(); + } + if (i.preInit) + for (typeof i.preInit == "function" && (i.preInit = [i.preInit]); i.preInit.length > 0; ) + i.preInit.pop()(); + return yr(), o.ready; + }; +})(); +function Yo(r) { + return Bt( + lt, + r + ); +} +function Hi(r) { + return No( + lt, + r + ); +} +async function Jo(r, o) { + return zo( + lt, + r, + o + ); +} +async function Qo(r, o) { + return Go( + lt, + r, + o + ); +} +var je; +var ct = class extends EventTarget { + constructor(o = {}) { + var i; + super(), Co(this, je, void 0); + try { + const c = (i = o == null ? void 0 : o.formats) == null ? void 0 : i.filter( + (l) => l !== "unknown" + ); + if ((c == null ? void 0 : c.length) === 0) + throw new TypeError("Hint option provided, but is empty."); + c == null || c.forEach((l) => { + if (!it.has(l)) + throw new TypeError( + `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.` + ); + }), $o(this, je, c != null ? c : []), Yo().then((l) => { + this.dispatchEvent( + new CustomEvent("load", { + detail: l + }) + ); + }).catch((l) => { + this.dispatchEvent(new CustomEvent("error", { detail: l })); + }); + } catch (c) { + throw Cr( + c, + "Failed to construct 'BarcodeDetector'" + ); + } + } + static async getSupportedFormats() { + return _o.filter((o) => o !== "unknown"); + } + async detect(o) { + try { + const i = await Mo(o); + if (i === null) + return []; + let c; + try { + jr(i) ? c = await Jo(i, { + tryHarder: true, + formats: br(this, je).map((l) => it.get(l)) + }) : c = await Qo(i, { + tryHarder: true, + formats: br(this, je).map((l) => it.get(l)) + }); + } catch (l) { + throw console.error(l), new DOMException( + "Barcode detection service unavailable.", + "NotSupportedError" + ); + } + return c.map((l) => { + const { + topLeft: { x: h, y: v }, + topRight: { x: g, y: b }, + bottomLeft: { x: p, y: C }, + bottomRight: { x: S, y: $ } + } = l.position, F = Math.min(h, g, p, S), U = Math.min(v, b, C, $), W = Math.max(h, g, p, S), R = Math.max(v, b, C, $); + return { + boundingBox: new DOMRectReadOnly( + F, + U, + W - F, + R - U + ), + rawValue: l.text, + format: So(l.format), + cornerPoints: [ + { + x: h, + y: v + }, + { + x: g, + y: b + }, + { + x: S, + y: $ + }, + { + x: p, + y: C + } + ] + }; + }); + } catch (i) { + throw Cr( + i, + "Failed to execute 'detect' on 'BarcodeDetector'" + ); + } + } +}; +je = /* @__PURE__ */ new WeakMap(); +var Vt = (r, o, i = "error") => { + let c, l; + const h = new Promise( + (v, g) => { + c = v, l = g, r.addEventListener(o, c), r.addEventListener(i, l); + } + ); + return h.finally(() => { + r.removeEventListener(o, c), r.removeEventListener(i, l); + }), h; +}; +var Sr = (r) => new Promise((o) => setTimeout(o, r)); +var Xo = class extends Error { + constructor() { + super("can't process cross-origin image"), this.name = "DropImageFetchError"; + } +}; +var Vr = class extends Error { + constructor() { + super("this browser has no Stream API support"), this.name = "StreamApiNotSupportedError"; + } +}; +var Zo = class extends Error { + constructor() { + super( + "camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP." + ), this.name = "InsecureContextError"; + } +}; +var Ko = class extends Error { + constructor() { + super( + "Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)" + ), this.name = "StreamLoadTimeoutError"; + } +}; +var qr; +async function ei(r) { + if (window.BarcodeDetector === void 0) + return console.debug("[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill."), new ct({ formats: r }); + const o = await window.BarcodeDetector.getSupportedFormats(), i = r.filter((c) => !o.includes(c)); + return i.length > 0 ? (console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`), new ct({ formats: r })) : (console.debug("[vue-qrcode-reader] Will use native BarcodeDetector."), new window.BarcodeDetector({ formats: r })); +} +async function Nr(r) { + qr = await ei(r); +} +var ti = async (r, { + detectHandler: o, + locateHandler: i, + minDelay: c, + formats: l +}) => { + console.debug("[vue-qrcode-reader] start scanning"), await Nr(l); + const h = (v) => async (g) => { + if (r.readyState === 0) + console.debug("[vue-qrcode-reader] stop scanning: video element readyState is 0"); + else { + const { lastScanned: b, contentBefore: p, lastScanHadContent: C } = v; + if (g - b < c) + window.requestAnimationFrame(h(v)); + else { + const S = await qr.detect(r), $ = S.some((W) => !p.includes(W.rawValue)); + $ && o(S); + const F = S.length > 0; + F && i(S), !F && C && i(S); + const U = { + lastScanned: g, + lastScanHadContent: F, + // It can happen that a QR code is constantly in view of the camera but + // maybe a scanned frame is a bit blurry and we detect nothing but in the + // next frame we detect the code again. We also want to avoid emitting + // a `detect` event in such a case. So we don't reset `contentBefore`, + // if we detect nothing, only if we detect something new. + contentBefore: $ ? S.map((W) => W.rawValue) : p + }; + window.requestAnimationFrame(h(U)); + } + } + }; + h({ + lastScanned: performance.now(), + contentBefore: [], + lastScanHadContent: false + })(performance.now()); +}; +var ri = async (r) => { + if (r.startsWith("http") && r.includes(location.host) === false) + throw new Xo(); + const o = document.createElement("img"); + return o.src = r, await Vt(o, "load"), o; +}; +var zr = async (r, o = ["qr_code"]) => await new ct({ formats: o }).detect(r); +var ni = async (r, o = ["qr_code"]) => { + const i = new ct({ formats: o }), c = await ri(r); + return await i.detect(c); +}; +var Gr = {}; +var Q = {}; +Object.defineProperty(Q, "__esModule", { + value: true +}); +Q.compactObject = Qr; +Q.deprecated = fi; +var ai = Q.detectBrowser = hi; +Q.disableLog = ui; +Q.disableWarnings = li; +Q.extractVersion = st; +Q.filterStats = pi; +Q.log = di; +Q.walkStats = ut; +Q.wrapPeerConnectionEvent = ci; +function oi(r, o, i) { + return o = ii(o), o in r ? Object.defineProperty(r, o, { value: i, enumerable: true, configurable: true, writable: true }) : r[o] = i, r; +} +function ii(r) { + var o = si(r, "string"); + return pe(o) === "symbol" ? o : String(o); +} +function si(r, o) { + if (pe(r) !== "object" || r === null) + return r; + var i = r[Symbol.toPrimitive]; + if (i !== void 0) { + var c = i.call(r, o || "default"); + if (pe(c) !== "object") + return c; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (o === "string" ? String : Number)(r); +} +function pe(r) { + "@babel/helpers - typeof"; + return pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, pe(r); +} +var Yr = true; +var Jr = true; +function st(r, o, i) { + var c = r.match(o); + return c && c.length >= i && parseInt(c[i], 10); +} +function ci(r, o, i) { + if (r.RTCPeerConnection) { + var c = r.RTCPeerConnection.prototype, l = c.addEventListener; + c.addEventListener = function(v, g) { + if (v !== o) + return l.apply(this, arguments); + var b = function(C) { + var S = i(C); + S && (g.handleEvent ? g.handleEvent(S) : g(S)); + }; + return this._eventMap = this._eventMap || {}, this._eventMap[o] || (this._eventMap[o] = /* @__PURE__ */ new Map()), this._eventMap[o].set(g, b), l.apply(this, [v, b]); + }; + var h = c.removeEventListener; + c.removeEventListener = function(v, g) { + if (v !== o || !this._eventMap || !this._eventMap[o]) + return h.apply(this, arguments); + if (!this._eventMap[o].has(g)) + return h.apply(this, arguments); + var b = this._eventMap[o].get(g); + return this._eventMap[o].delete(g), this._eventMap[o].size === 0 && delete this._eventMap[o], Object.keys(this._eventMap).length === 0 && delete this._eventMap, h.apply(this, [v, b]); + }, Object.defineProperty(c, "on" + o, { + get: function() { + return this["_on" + o]; + }, + set: function(g) { + this["_on" + o] && (this.removeEventListener(o, this["_on" + o]), delete this["_on" + o]), g && this.addEventListener(o, this["_on" + o] = g); + }, + enumerable: true, + configurable: true + }); + } +} +function ui(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Yr = r, r ? "adapter.js logging disabled" : "adapter.js logging enabled"); +} +function li(r) { + return typeof r != "boolean" ? new Error("Argument type: " + pe(r) + ". Please use a boolean.") : (Jr = !r, "adapter.js deprecation warnings " + (r ? "disabled" : "enabled")); +} +function di() { + if ((typeof window > "u" ? "undefined" : pe(window)) === "object") { + if (Yr) + return; + typeof console < "u" && typeof console.log == "function" && console.log.apply(console, arguments); + } +} +function fi(r, o) { + Jr && console.warn(r + " is deprecated, please use " + o + " instead."); +} +function hi(r) { + var o = { + browser: null, + version: null + }; + if (typeof r > "u" || !r.navigator || !r.navigator.userAgent) + return o.browser = "Not a browser.", o; + var i = r.navigator; + if (i.mozGetUserMedia) + o.browser = "firefox", o.version = st(i.userAgent, /Firefox\/(\d+)\./, 1); + else if (i.webkitGetUserMedia || r.isSecureContext === false && r.webkitRTCPeerConnection) + o.browser = "chrome", o.version = st(i.userAgent, /Chrom(e|ium)\/(\d+)\./, 2); + else if (r.RTCPeerConnection && i.userAgent.match(/AppleWebKit\/(\d+)\./)) + o.browser = "safari", o.version = st(i.userAgent, /AppleWebKit\/(\d+)\./, 1), o.supportsUnifiedPlan = r.RTCRtpTransceiver && "currentDirection" in r.RTCRtpTransceiver.prototype; + else + return o.browser = "Not a supported browser.", o; + return o; +} +function Pr(r) { + return Object.prototype.toString.call(r) === "[object Object]"; +} +function Qr(r) { + return Pr(r) ? Object.keys(r).reduce(function(o, i) { + var c = Pr(r[i]), l = c ? Qr(r[i]) : r[i], h = c && !Object.keys(l).length; + return l === void 0 || h ? o : Object.assign(o, oi({}, i, l)); + }, {}) : r; +} +function ut(r, o, i) { + !o || i.has(o.id) || (i.set(o.id, o), Object.keys(o).forEach(function(c) { + c.endsWith("Id") ? ut(r, r.get(o[c]), i) : c.endsWith("Ids") && o[c].forEach(function(l) { + ut(r, r.get(l), i); + }); + })); +} +function pi(r, o, i) { + var c = i ? "outbound-rtp" : "inbound-rtp", l = /* @__PURE__ */ new Map(); + if (o === null) + return l; + var h = []; + return r.forEach(function(v) { + v.type === "track" && v.trackIdentifier === o.id && h.push(v); + }), h.forEach(function(v) { + r.forEach(function(g) { + g.type === c && g.trackId === v.id && ut(r, g, l); + }); + }), l; +} +Object.defineProperty(Gr, "__esModule", { + value: true +}); +var mi = Gr.shimGetUserMedia = gi; +var vi = yi(Q); +function Xr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Xr = function(l) { + return l ? i : o; + })(r); +} +function yi(r, o) { + if (r && r.__esModule) + return r; + if (r === null || he(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Xr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function he(r) { + "@babel/helpers - typeof"; + return he = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, he(r); +} +var Tr = vi.log; +function gi(r, o) { + var i = r && r.navigator; + if (i.mediaDevices) { + var c = function(p) { + if (he(p) !== "object" || p.mandatory || p.optional) + return p; + var C = {}; + return Object.keys(p).forEach(function(S) { + if (!(S === "require" || S === "advanced" || S === "mediaSource")) { + var $ = he(p[S]) === "object" ? p[S] : { + ideal: p[S] + }; + $.exact !== void 0 && typeof $.exact == "number" && ($.min = $.max = $.exact); + var F = function(R, A) { + return R ? R + A.charAt(0).toUpperCase() + A.slice(1) : A === "deviceId" ? "sourceId" : A; + }; + if ($.ideal !== void 0) { + C.optional = C.optional || []; + var U = {}; + typeof $.ideal == "number" ? (U[F("min", S)] = $.ideal, C.optional.push(U), U = {}, U[F("max", S)] = $.ideal, C.optional.push(U)) : (U[F("", S)] = $.ideal, C.optional.push(U)); + } + $.exact !== void 0 && typeof $.exact != "number" ? (C.mandatory = C.mandatory || {}, C.mandatory[F("", S)] = $.exact) : ["min", "max"].forEach(function(W) { + $[W] !== void 0 && (C.mandatory = C.mandatory || {}, C.mandatory[F(W, S)] = $[W]); + }); + } + }), p.advanced && (C.optional = (C.optional || []).concat(p.advanced)), C; + }, l = function(p, C) { + if (o.version >= 61) + return C(p); + if (p = JSON.parse(JSON.stringify(p)), p && he(p.audio) === "object") { + var S = function(R, A, X) { + A in R && !(X in R) && (R[X] = R[A], delete R[A]); + }; + p = JSON.parse(JSON.stringify(p)), S(p.audio, "autoGainControl", "googAutoGainControl"), S(p.audio, "noiseSuppression", "googNoiseSuppression"), p.audio = c(p.audio); + } + if (p && he(p.video) === "object") { + var $ = p.video.facingMode; + $ = $ && (he($) === "object" ? $ : { + ideal: $ + }); + var F = o.version < 66; + if ($ && ($.exact === "user" || $.exact === "environment" || $.ideal === "user" || $.ideal === "environment") && !(i.mediaDevices.getSupportedConstraints && i.mediaDevices.getSupportedConstraints().facingMode && !F)) { + delete p.video.facingMode; + var U; + if ($.exact === "environment" || $.ideal === "environment" ? U = ["back", "rear"] : ($.exact === "user" || $.ideal === "user") && (U = ["front"]), U) + return i.mediaDevices.enumerateDevices().then(function(W) { + W = W.filter(function(A) { + return A.kind === "videoinput"; + }); + var R = W.find(function(A) { + return U.some(function(X) { + return A.label.toLowerCase().includes(X); + }); + }); + return !R && W.length && U.includes("back") && (R = W[W.length - 1]), R && (p.video.deviceId = $.exact ? { + exact: R.deviceId + } : { + ideal: R.deviceId + }), p.video = c(p.video), Tr("chrome: " + JSON.stringify(p)), C(p); + }); + } + p.video = c(p.video); + } + return Tr("chrome: " + JSON.stringify(p)), C(p); + }, h = function(p) { + return o.version >= 64 ? p : { + name: { + PermissionDeniedError: "NotAllowedError", + PermissionDismissedError: "NotAllowedError", + InvalidStateError: "NotAllowedError", + DevicesNotFoundError: "NotFoundError", + ConstraintNotSatisfiedError: "OverconstrainedError", + TrackStartError: "NotReadableError", + MediaDeviceFailedDueToShutdown: "NotAllowedError", + MediaDeviceKillSwitchOn: "NotAllowedError", + TabCaptureError: "AbortError", + ScreenCaptureError: "AbortError", + DeviceCaptureError: "AbortError" + }[p.name] || p.name, + message: p.message, + constraint: p.constraint || p.constraintName, + toString: function() { + return this.name + (this.message && ": ") + this.message; + } + }; + }, v = function(p, C, S) { + l(p, function($) { + i.webkitGetUserMedia($, C, function(F) { + S && S(h(F)); + }); + }); + }; + if (i.getUserMedia = v.bind(i), i.mediaDevices.getUserMedia) { + var g = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + i.mediaDevices.getUserMedia = function(b) { + return l(b, function(p) { + return g(p).then(function(C) { + if (p.audio && !C.getAudioTracks().length || p.video && !C.getVideoTracks().length) + throw C.getTracks().forEach(function(S) { + S.stop(); + }), new DOMException("", "NotFoundError"); + return C; + }, function(C) { + return Promise.reject(h(C)); + }); + }); + }; + } + } +} +var Zr = {}; +Object.defineProperty(Zr, "__esModule", { + value: true +}); +var wi = Zr.shimGetUserMedia = $i; +var bi = Ci(Q); +function Kr(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (Kr = function(l) { + return l ? i : o; + })(r); +} +function Ci(r, o) { + if (r && r.__esModule) + return r; + if (r === null || Pe(r) !== "object" && typeof r != "function") + return { default: r }; + var i = Kr(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function Pe(r) { + "@babel/helpers - typeof"; + return Pe = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, Pe(r); +} +function $i(r, o) { + var i = r && r.navigator, c = r && r.MediaStreamTrack; + if (i.getUserMedia = function(b, p, C) { + bi.deprecated("navigator.getUserMedia", "navigator.mediaDevices.getUserMedia"), i.mediaDevices.getUserMedia(b).then(p, C); + }, !(o.version > 55 && "autoGainControl" in i.mediaDevices.getSupportedConstraints())) { + var l = function(p, C, S) { + C in p && !(S in p) && (p[S] = p[C], delete p[C]); + }, h = i.mediaDevices.getUserMedia.bind(i.mediaDevices); + if (i.mediaDevices.getUserMedia = function(b) { + return Pe(b) === "object" && Pe(b.audio) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b.audio, "autoGainControl", "mozAutoGainControl"), l(b.audio, "noiseSuppression", "mozNoiseSuppression")), h(b); + }, c && c.prototype.getSettings) { + var v = c.prototype.getSettings; + c.prototype.getSettings = function() { + var b = v.apply(this, arguments); + return l(b, "mozAutoGainControl", "autoGainControl"), l(b, "mozNoiseSuppression", "noiseSuppression"), b; + }; + } + if (c && c.prototype.applyConstraints) { + var g = c.prototype.applyConstraints; + c.prototype.applyConstraints = function(b) { + return this.kind === "audio" && Pe(b) === "object" && (b = JSON.parse(JSON.stringify(b)), l(b, "autoGainControl", "mozAutoGainControl"), l(b, "noiseSuppression", "mozNoiseSuppression")), g.apply(this, [b]); + }; + } + } +} +var ae = {}; +Object.defineProperty(ae, "__esModule", { + value: true +}); +ae.shimAudioContext = xi; +ae.shimCallbacksAPI = Ei; +ae.shimConstraints = rn; +ae.shimCreateOfferLegacy = Ai; +var _i = ae.shimGetUserMedia = Oi; +ae.shimLocalStreamsAPI = Pi; +ae.shimRTCIceServerUrls = Di; +ae.shimRemoteStreamsAPI = Ti; +ae.shimTrackEventTransceiver = Mi; +var en = Si(Q); +function tn(r) { + if (typeof WeakMap != "function") + return null; + var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap(); + return (tn = function(l) { + return l ? i : o; + })(r); +} +function Si(r, o) { + if (r && r.__esModule) + return r; + if (r === null || me(r) !== "object" && typeof r != "function") + return { default: r }; + var i = tn(o); + if (i && i.has(r)) + return i.get(r); + var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor; + for (var h in r) + if (h !== "default" && Object.prototype.hasOwnProperty.call(r, h)) { + var v = l ? Object.getOwnPropertyDescriptor(r, h) : null; + v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h]; + } + return c.default = r, i && i.set(r, c), c; +} +function me(r) { + "@babel/helpers - typeof"; + return me = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o) { + return typeof o; + } : function(o) { + return o && typeof Symbol == "function" && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, me(r); +} +function Pi(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + if ("getLocalStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getLocalStreams = function() { + return this._localStreams || (this._localStreams = []), this._localStreams; + }), !("addStream" in r.RTCPeerConnection.prototype)) { + var o = r.RTCPeerConnection.prototype.addTrack; + r.RTCPeerConnection.prototype.addStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []), this._localStreams.includes(c) || this._localStreams.push(c), c.getAudioTracks().forEach(function(h) { + return o.call(l, h, c); + }), c.getVideoTracks().forEach(function(h) { + return o.call(l, h, c); + }); + }, r.RTCPeerConnection.prototype.addTrack = function(c) { + for (var l = this, h = arguments.length, v = new Array(h > 1 ? h - 1 : 0), g = 1; g < h; g++) + v[g - 1] = arguments[g]; + return v && v.forEach(function(b) { + l._localStreams ? l._localStreams.includes(b) || l._localStreams.push(b) : l._localStreams = [b]; + }), o.apply(this, arguments); + }; + } + "removeStream" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.removeStream = function(c) { + var l = this; + this._localStreams || (this._localStreams = []); + var h = this._localStreams.indexOf(c); + if (h !== -1) { + this._localStreams.splice(h, 1); + var v = c.getTracks(); + this.getSenders().forEach(function(g) { + v.includes(g.track) && l.removeTrack(g); + }); + } + }); + } +} +function Ti(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection) && ("getRemoteStreams" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getRemoteStreams = function() { + return this._remoteStreams ? this._remoteStreams : []; + }), !("onaddstream" in r.RTCPeerConnection.prototype))) { + Object.defineProperty(r.RTCPeerConnection.prototype, "onaddstream", { + get: function() { + return this._onaddstream; + }, + set: function(c) { + var l = this; + this._onaddstream && (this.removeEventListener("addstream", this._onaddstream), this.removeEventListener("track", this._onaddstreampoly)), this.addEventListener("addstream", this._onaddstream = c), this.addEventListener("track", this._onaddstreampoly = function(h) { + h.streams.forEach(function(v) { + if (l._remoteStreams || (l._remoteStreams = []), !l._remoteStreams.includes(v)) { + l._remoteStreams.push(v); + var g = new Event("addstream"); + g.stream = v, l.dispatchEvent(g); + } + }); + }); + } + }); + var o = r.RTCPeerConnection.prototype.setRemoteDescription; + r.RTCPeerConnection.prototype.setRemoteDescription = function() { + var c = this; + return this._onaddstreampoly || this.addEventListener("track", this._onaddstreampoly = function(l) { + l.streams.forEach(function(h) { + if (c._remoteStreams || (c._remoteStreams = []), !(c._remoteStreams.indexOf(h) >= 0)) { + c._remoteStreams.push(h); + var v = new Event("addstream"); + v.stream = h, c.dispatchEvent(v); + } + }); + }), o.apply(c, arguments); + }; + } +} +function Ei(r) { + if (!(me(r) !== "object" || !r.RTCPeerConnection)) { + var o = r.RTCPeerConnection.prototype, i = o.createOffer, c = o.createAnswer, l = o.setLocalDescription, h = o.setRemoteDescription, v = o.addIceCandidate; + o.createOffer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = i.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }, o.createAnswer = function(p, C) { + var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = c.apply(this, [S]); + return C ? ($.then(p, C), Promise.resolve()) : $; + }; + var g = function(p, C, S) { + var $ = l.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }; + o.setLocalDescription = g, g = function(p, C, S) { + var $ = h.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.setRemoteDescription = g, g = function(p, C, S) { + var $ = v.apply(this, [p]); + return S ? ($.then(C, S), Promise.resolve()) : $; + }, o.addIceCandidate = g; + } +} +function Oi(r) { + var o = r && r.navigator; + if (o.mediaDevices && o.mediaDevices.getUserMedia) { + var i = o.mediaDevices, c = i.getUserMedia.bind(i); + o.mediaDevices.getUserMedia = function(l) { + return c(rn(l)); + }; + } + !o.getUserMedia && o.mediaDevices && o.mediaDevices.getUserMedia && (o.getUserMedia = (function(h, v, g) { + o.mediaDevices.getUserMedia(h).then(v, g); + }).bind(o)); +} +function rn(r) { + return r && r.video !== void 0 ? Object.assign({}, r, { + video: en.compactObject(r.video) + }) : r; +} +function Di(r) { + if (r.RTCPeerConnection) { + var o = r.RTCPeerConnection; + r.RTCPeerConnection = function(c, l) { + if (c && c.iceServers) { + for (var h = [], v = 0; v < c.iceServers.length; v++) { + var g = c.iceServers[v]; + g.urls === void 0 && g.url ? (en.deprecated("RTCIceServer.url", "RTCIceServer.urls"), g = JSON.parse(JSON.stringify(g)), g.urls = g.url, delete g.url, h.push(g)) : h.push(c.iceServers[v]); + } + c.iceServers = h; + } + return new o(c, l); + }, r.RTCPeerConnection.prototype = o.prototype, "generateCertificate" in o && Object.defineProperty(r.RTCPeerConnection, "generateCertificate", { + get: function() { + return o.generateCertificate; + } + }); + } +} +function Mi(r) { + me(r) === "object" && r.RTCTrackEvent && "receiver" in r.RTCTrackEvent.prototype && !("transceiver" in r.RTCTrackEvent.prototype) && Object.defineProperty(r.RTCTrackEvent.prototype, "transceiver", { + get: function() { + return { + receiver: this.receiver + }; + } + }); +} +function Ai(r) { + var o = r.RTCPeerConnection.prototype.createOffer; + r.RTCPeerConnection.prototype.createOffer = function(c) { + if (c) { + typeof c.offerToReceiveAudio < "u" && (c.offerToReceiveAudio = !!c.offerToReceiveAudio); + var l = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "audio"; + }); + c.offerToReceiveAudio === false && l ? l.direction === "sendrecv" ? l.setDirection ? l.setDirection("sendonly") : l.direction = "sendonly" : l.direction === "recvonly" && (l.setDirection ? l.setDirection("inactive") : l.direction = "inactive") : c.offerToReceiveAudio === true && !l && this.addTransceiver("audio", { + direction: "recvonly" + }), typeof c.offerToReceiveVideo < "u" && (c.offerToReceiveVideo = !!c.offerToReceiveVideo); + var h = this.getTransceivers().find(function(v) { + return v.receiver.track.kind === "video"; + }); + c.offerToReceiveVideo === false && h ? h.direction === "sendrecv" ? h.setDirection ? h.setDirection("sendonly") : h.direction = "sendonly" : h.direction === "recvonly" && (h.setDirection ? h.setDirection("inactive") : h.direction = "inactive") : c.offerToReceiveVideo === true && !h && this.addTransceiver("video", { + direction: "recvonly" + }); + } + return o.apply(this, arguments); + }; +} +function xi(r) { + me(r) !== "object" || r.AudioContext || (r.AudioContext = r.webkitAudioContext); +} +var Ri = (r) => { + let o = false, i; + return (...c) => (o || (i = r(c), o = true), i); +}; +function ue(r, o) { + if (r === false) + throw new Error(o != null ? o : "assertion failure"); +} +function Er(r) { + throw new Error("this code should be unreachable"); +} +var ki = Ri(() => { + const r = ai(window); + switch (r.browser) { + case "chrome": + mi(window, r); + break; + case "firefox": + wi(window, r); + break; + case "safari": + _i(window, r); + break; + default: + throw new Vr(); + } +}); +var Te = Promise.resolve({ type: "stop", data: {} }); +async function Or(r, o, i) { + var g, b, p; + if (console.debug( + "[vue-qrcode-reader] starting camera with constraints: ", + JSON.stringify(o) + ), window.isSecureContext !== true) + throw new Zo(); + if (((g = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : g.getUserMedia) === void 0) + throw new Vr(); + ki(), console.debug("[vue-qrcode-reader] calling getUserMedia"); + const c = await navigator.mediaDevices.getUserMedia({ + audio: false, + video: o + }); + r.srcObject !== void 0 ? r.srcObject = c : r.mozSrcObject !== void 0 ? r.mozSrcObject = c : window.URL.createObjectURL ? r.src = window.URL.createObjectURL(c) : window.webkitURL ? r.src = window.webkitURL.createObjectURL(c) : r.src = c.id, r.play(), console.debug("[vue-qrcode-reader] waiting for video element to load"), await Promise.race([ + Vt(r, "loadeddata"), + // On iOS devices in PWA mode, QrcodeStream works initially, but after + // killing and restarting the PWA, all video elements fail to load camera + // streams and never emit the `loadeddata` event. Looks like this is + // related to a WebKit issue (see #298). No workarounds at the moment. + // To at least detect this situation, we throw an error if the event + // has not been emitted after a 6 second timeout. + Sr(6e3).then(() => { + throw new Ko(); + }) + ]), console.debug("[vue-qrcode-reader] video element loaded"), await Sr(500); + const [l] = c.getVideoTracks(), h = (p = (b = l == null ? void 0 : l.getCapabilities) == null ? void 0 : b.call(l)) != null ? p : {}; + let v = false; + return i && h.torch && (await l.applyConstraints({ advanced: [{ torch: true }] }), v = true), console.debug("[vue-qrcode-reader] camera ready"), { + type: "start", + data: { + videoEl: r, + stream: c, + capabilities: h, + constraints: o, + isTorchOn: v + } + }; +} +async function Ii(r, { + constraints: o, + torch: i, + restart: c = false +}) { + Te = Te.then((h) => { + if (h.type === "start") { + const { + data: { + videoEl: v, + stream: g, + constraints: b, + isTorchOn: p + } + } = h; + return !c && r === v && o === b && i === p ? h : nn(v, g, p).then( + () => Or(r, o, i) + ); + } else if (h.type === "stop" || h.type === "failed") + return Or(r, o, i); + Er(); + }).catch((h) => (console.debug(`[vue-qrcode-reader] starting camera failed with "${h}"`), { type: "failed", error: h })); + const l = await Te; + if (l.type === "stop") + throw new Error("Something went wrong with the camera task queue (start task)."); + if (l.type === "failed") + throw l.error; + if (l.type === "start") + return l.data.capabilities; + Er(); +} +async function nn(r, o, i) { + console.debug("[vue-qrcode-reader] stopping camera"), r.src = "", r.srcObject = null, r.load(), await Vt(r, "error"); + for (const c of o.getTracks()) + i != null || await c.applyConstraints({ advanced: [{ torch: false }] }), o.removeTrack(c), c.stop(); + return { + type: "stop", + data: {} + }; +} +async function ot() { + if (Te = Te.then((o) => { + if (o.type === "stop" || o.type === "failed") + return o; + const { + data: { videoEl: i, stream: c, isTorchOn: l } + } = o; + return nn(i, c, l); + }), (await Te).type === "start") + throw new Error("Something went wrong with the camera task queue (stop task)."); +} +var Fi = jt({ + __name: "QrcodeStream", + props: { + // in this file: don't use `props.constraints` directly. Use `constraintsCached`. + /** + * Passes an object with various camera configuration options. + */ + constraints: { + type: Object, + default() { + return { facingMode: "environment" }; + } + }, + // in this file: don't use `props.formats` directly. Use `formatsCached`. + /** + * Passes formats that will be recognized during detection. + */ + formats: { + type: Array, + default: () => ["qr_code"] + }, + /** + * Setting this prop to true freezes the camera. Set to false to resume. + */ + paused: { + type: Boolean, + default: false + }, + /** + * Enables or disables camera torch during detection. + */ + torch: { + type: Boolean, + default: false + }, + /** + * Defines callback function that will be responsible for drawing detected code tracking rectangle + */ + track: { + type: Function + } + }, + emits: ["detect", "camera-on", "camera-off", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = we(i.constraints), h = we(i.formats); + We( + () => i.constraints, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (l.value = k); + }, + { deep: true } + ), We( + () => i.formats, + (k, D) => { + JSON.stringify(k) !== JSON.stringify(D) && (h.value = k); + }, + { deep: true } + ); + const v = we(), g = we(), b = we(), p = we(false), C = we(false); + vo(() => { + C.value = true; + }), yo(() => { + ot(); + }); + const S = Ut(() => ({ + torch: i.torch, + constraints: l.value, + shouldStream: C.value && !i.paused + })); + We( + S, + async (k) => { + const D = b.value; + ue( + D !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined." + ); + const M = v.value; + ue( + M !== void 0, + "cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined." + ); + const le = M.getContext("2d"); + if (ue(le !== null, "if cavnas is defined, canvas 2d context should also be non-null"), k.shouldStream) { + ot(), p.value = false; + try { + const oe = await Ii(D, k); + C.value ? (p.value = true, c("camera-on", oe)) : await ot(); + } catch (oe) { + c("error", oe); + } + } else + M.width = D.videoWidth, M.height = D.videoHeight, le.drawImage(D, 0, 0, D.videoWidth, D.videoHeight), ot(), p.value = false, c("camera-off"); + }, + { deep: true } + ), We(h, async (k) => { + C.value && await Nr(k); + }); + const $ = Ut(() => S.value.shouldStream && p.value); + We($, (k) => { + if (k) { + ue( + v.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined" + ), F(v.value), ue( + g.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined" + ), F(g.value); + const D = () => i.track === void 0 ? 500 : 40; + ue( + b.value !== void 0, + "shouldScan watcher should only be triggered when component is mounted. Thus video element is defined" + ), ti(b.value, { + detectHandler: (M) => c("detect", M), + formats: h.value, + locateHandler: U, + minDelay: D() + }); + } + }); + const F = (k) => { + const D = k.getContext("2d"); + ue(D !== null, "canvas 2d context should always be non-null"), D.clearRect(0, 0, k.width, k.height); + }, U = (k) => { + const D = g.value; + ue( + D !== void 0, + "onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined." + ); + const M = b.value; + if (ue( + M !== void 0, + "onLocate handler should only be called when component is mounted. Thus video element is always defined." + ), k.length === 0 || i.track === void 0) + F(D); + else { + const le = M.offsetWidth, oe = M.offsetHeight, be = M.videoWidth, Ce = M.videoHeight, Oe = Math.max(le / be, oe / Ce), De = be * Oe, Le = Ce * Oe, dt = De / be, ft = Le / Ce, ht = (le - De) / 2, pt = (oe - Le) / 2, Me = ({ x: de, y: Z }) => ({ + x: Math.floor(de * dt), + y: Math.floor(Z * ft) + }), te = ({ x: de, y: Z }) => ({ + x: Math.floor(de + ht), + y: Math.floor(Z + pt) + }), ve = k.map((de) => { + const { boundingBox: Z, cornerPoints: vt } = de, { x: He, y: fe } = te( + Me({ + x: Z.x, + y: Z.y + }) + ), { x: Be, y: yt } = Me({ + x: Z.width, + y: Z.height + }); + return { + ...de, + cornerPoints: vt.map((Ve) => te(Me(Ve))), + boundingBox: DOMRectReadOnly.fromRect({ x: He, y: fe, width: Be, height: yt }) + }; + }); + D.width = M.offsetWidth, D.height = M.offsetHeight; + const mt = D.getContext("2d"); + i.track(ve, mt); + } + }, W = { + width: "100%", + height: "100%", + position: "relative", + // notice that we use z-index only once for the wrapper div. + // If z-index is not defined, elements are stacked in the order they appear in the DOM. + // The first element is at the very bottom and subsequent elements are added on top. + "z-index": "0" + }, R = { + width: "100%", + height: "100%", + position: "absolute", + top: "0", + left: "0" + }, A = { + width: "100%", + height: "100%", + "object-fit": "cover" + }, X = Ut(() => $.value ? A : { + ...A, + visibility: "hidden", + position: "absolute" + }); + return (k, D) => (Lt(), Ht("div", { style: W }, [ + nt("video", { + ref_key: "videoRef", + ref: b, + style: go(X.value), + autoplay: "", + muted: "", + playsinline: "" + }, null, 4), + wo(nt("canvas", { + id: "qrcode-stream-pause-frame", + ref_key: "pauseFrameRef", + ref: v, + style: A + }, null, 512), [ + [bo, !$.value] + ]), + nt("canvas", { + id: "qrcode-stream-tracking-layer", + ref_key: "trackingLayerRef", + ref: g, + style: R + }, null, 512), + nt("div", { style: R }, [ + Dr(k.$slots, "default") + ]) + ])); + } +}); +var Ui = jt({ + __name: "QrcodeCapture", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect"], + setup(r, { emit: o }) { + const i = r, c = o, l = (h) => { + if (!(!(h.target instanceof HTMLInputElement) || !h.target.files)) + for (const v of Array.from(h.target.files)) + zr(v, i.formats).then((g) => { + c("detect", g); + }); + }; + return (h, v) => (Lt(), Ht("input", { + onChange: l, + type: "file", + name: "image", + accept: "image/*", + capture: "environment", + multiple: "" + }, null, 32)); + } +}); +var Wi = jt({ + __name: "QrcodeDropZone", + props: { + formats: { + type: Array, + default: () => ["qr_code"] + } + }, + emits: ["detect", "dragover", "error"], + setup(r, { emit: o }) { + const i = r, c = o, l = async (g) => { + try { + const b = await g; + c("detect", b); + } catch (b) { + c("error", b); + } + }, h = (g) => { + c("dragover", g); + }, v = ({ dataTransfer: g }) => { + if (!g) + return; + h(false); + const b = [...Array.from(g.files)], p = g.getData("text/uri-list"); + b.forEach((C) => { + l(zr(C, i.formats)); + }), p !== "" && l(ni(p, i.formats)); + }; + return (g, b) => (Lt(), Ht("div", { + onDrop: at(v, ["prevent", "stop"]), + onDragenter: b[0] || (b[0] = at((p) => h(true), ["prevent", "stop"])), + onDragleave: b[1] || (b[1] = at((p) => h(false), ["prevent", "stop"])), + onDragover: b[2] || (b[2] = at(() => { + }, ["prevent", "stop"])) + }, [ + Dr(g.$slots, "default") + ], 32)); + } +}); +function ji(r) { + r.component("qrcode-stream", Fi), r.component("qrcode-capture", Ui), r.component("qrcode-drop-zone", Wi); +} +var Bi = { install: ji }; +export { + Ui as QrcodeCapture, + Wi as QrcodeDropZone, + Fi as QrcodeStream, + Bi as VueQrcodeReader, + ji as install, + Hi as setZXingModuleOverrides +}; +//# sourceMappingURL=vue-qrcode-reader.js.map diff --git a/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js.map b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js.map new file mode 100644 index 0000000..c52c25d --- /dev/null +++ b/unpackage/dist/cache/.vite/deps/vue-qrcode-reader.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.js"], + "sourcesContent": ["import { defineComponent as jt, ref as we, watch as We, onMounted as vo, onUnmounted as yo, computed as Ut, openBlock as Lt, createElementBlock as Ht, createElementVNode as nt, normalizeStyle as go, withDirectives as wo, vShow as bo, renderSlot as Dr, withModifiers as at } from \"vue\";\nvar Mr = (r, o, i) => {\n if (!o.has(r))\n throw TypeError(\"Cannot \" + i);\n}, br = (r, o, i) => (Mr(r, o, \"read from private field\"), i ? i.call(r) : o.get(r)), Co = (r, o, i) => {\n if (o.has(r))\n throw TypeError(\"Cannot add the same private member more than once\");\n o instanceof WeakSet ? o.add(r) : o.set(r, i);\n}, $o = (r, o, i, c) => (Mr(r, o, \"write to private field\"), o.set(r, i), i);\nconst Ar = [\n [\"aztec\", \"Aztec\"],\n [\"code_128\", \"Code128\"],\n [\"code_39\", \"Code39\"],\n [\"code_93\", \"Code93\"],\n [\"codabar\", \"Codabar\"],\n [\"databar\", \"DataBar\"],\n [\"databar_expanded\", \"DataBarExpanded\"],\n [\"data_matrix\", \"DataMatrix\"],\n [\"dx_film_edge\", \"DXFilmEdge\"],\n [\"ean_13\", \"EAN-13\"],\n [\"ean_8\", \"EAN-8\"],\n [\"itf\", \"ITF\"],\n [\"maxi_code\", \"MaxiCode\"],\n [\"micro_qr_code\", \"MicroQRCode\"],\n [\"pdf417\", \"PDF417\"],\n [\"qr_code\", \"QRCode\"],\n [\"rm_qr_code\", \"rMQRCode\"],\n [\"upc_a\", \"UPC-A\"],\n [\"upc_e\", \"UPC-E\"],\n [\"linear_codes\", \"Linear-Codes\"],\n [\"matrix_codes\", \"Matrix-Codes\"]\n], _o = [...Ar, [\"unknown\"]].map((r) => r[0]), it = new Map(\n Ar\n);\nfunction So(r) {\n for (const [o, i] of it)\n if (r === i)\n return o;\n return \"unknown\";\n}\nfunction Po(r) {\n if (xr(r))\n return {\n width: r.naturalWidth,\n height: r.naturalHeight\n };\n if (Rr(r))\n return {\n width: r.width.baseVal.value,\n height: r.height.baseVal.value\n };\n if (kr(r))\n return {\n width: r.videoWidth,\n height: r.videoHeight\n };\n if (Fr(r))\n return {\n width: r.width,\n height: r.height\n };\n if (Wr(r))\n return {\n width: r.displayWidth,\n height: r.displayHeight\n };\n if (Ir(r))\n return {\n width: r.width,\n height: r.height\n };\n if (Ur(r))\n return {\n width: r.width,\n height: r.height\n };\n throw new TypeError(\n \"The provided value is not of type '(Blob or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or ImageData or OffscreenCanvas or SVGImageElement or VideoFrame)'.\"\n );\n}\nfunction xr(r) {\n try {\n return r instanceof HTMLImageElement;\n } catch (o) {\n return !1;\n }\n}\nfunction Rr(r) {\n try {\n return r instanceof SVGImageElement;\n } catch (o) {\n return !1;\n }\n}\nfunction kr(r) {\n try {\n return r instanceof HTMLVideoElement;\n } catch (o) {\n return !1;\n }\n}\nfunction Ir(r) {\n try {\n return r instanceof HTMLCanvasElement;\n } catch (o) {\n return !1;\n }\n}\nfunction Fr(r) {\n try {\n return r instanceof ImageBitmap;\n } catch (o) {\n return !1;\n }\n}\nfunction Ur(r) {\n try {\n return r instanceof OffscreenCanvas;\n } catch (o) {\n return !1;\n }\n}\nfunction Wr(r) {\n try {\n return r instanceof VideoFrame;\n } catch (o) {\n return !1;\n }\n}\nfunction jr(r) {\n try {\n return r instanceof Blob;\n } catch (o) {\n return !1;\n }\n}\nfunction To(r) {\n try {\n return r instanceof ImageData;\n } catch (o) {\n return !1;\n }\n}\nfunction Eo(r, o) {\n try {\n const i = new OffscreenCanvas(r, o);\n if (i.getContext(\"2d\") instanceof OffscreenCanvasRenderingContext2D)\n return i;\n throw void 0;\n } catch (i) {\n const c = document.createElement(\"canvas\");\n return c.width = r, c.height = o, c;\n }\n}\nasync function Lr(r) {\n if (xr(r) && !await Ao(r))\n throw new DOMException(\n \"Failed to load or decode HTMLImageElement.\",\n \"InvalidStateError\"\n );\n if (Rr(r) && !await xo(r))\n throw new DOMException(\n \"Failed to load or decode SVGImageElement.\",\n \"InvalidStateError\"\n );\n if (Wr(r) && Ro(r))\n throw new DOMException(\"VideoFrame is closed.\", \"InvalidStateError\");\n if (kr(r) && (r.readyState === 0 || r.readyState === 1))\n throw new DOMException(\"Invalid element or state.\", \"InvalidStateError\");\n if (Fr(r) && Io(r))\n throw new DOMException(\n \"The image source is detached.\",\n \"InvalidStateError\"\n );\n const { width: o, height: i } = Po(r);\n if (o === 0 || i === 0)\n return null;\n const c = Eo(o, i).getContext(\"2d\");\n c.drawImage(r, 0, 0);\n try {\n return c.getImageData(0, 0, o, i);\n } catch (l) {\n throw new DOMException(\"Source would taint origin.\", \"SecurityError\");\n }\n}\nasync function Oo(r) {\n let o;\n try {\n if (globalThis.createImageBitmap)\n o = await createImageBitmap(r);\n else if (globalThis.Image) {\n o = new Image();\n let i = \"\";\n try {\n i = URL.createObjectURL(r), o.src = i, await o.decode();\n } finally {\n URL.revokeObjectURL(i);\n }\n } else\n return r;\n } catch (i) {\n throw new DOMException(\n \"Failed to load or decode Blob.\",\n \"InvalidStateError\"\n );\n }\n return await Lr(o);\n}\nfunction Do(r) {\n const { width: o, height: i } = r;\n if (o === 0 || i === 0)\n return null;\n const c = r.getContext(\"2d\");\n try {\n return c.getImageData(0, 0, o, i);\n } catch (l) {\n throw new DOMException(\"Source would taint origin.\", \"SecurityError\");\n }\n}\nasync function Mo(r) {\n if (jr(r))\n return await Oo(r);\n if (To(r)) {\n if (ko(r))\n throw new DOMException(\n \"The image data has been detached.\",\n \"InvalidStateError\"\n );\n return r;\n }\n return Ir(r) || Ur(r) ? Do(r) : await Lr(r);\n}\nasync function Ao(r) {\n try {\n return await r.decode(), !0;\n } catch (o) {\n return !1;\n }\n}\nasync function xo(r) {\n var o;\n try {\n return await ((o = r.decode) == null ? void 0 : o.call(r)), !0;\n } catch (i) {\n return !1;\n }\n}\nfunction Ro(r) {\n return r.format === null;\n}\nfunction ko(r) {\n return r.data.buffer.byteLength === 0;\n}\nfunction Io(r) {\n return r.width === 0 && r.height === 0;\n}\nfunction Cr(r, o) {\n return r instanceof DOMException ? new DOMException(`${o}: ${r.message}`, r.name) : r instanceof Error ? new r.constructor(`${o}: ${r.message}`) : new Error(`${o}: ${r}`);\n}\nconst $r = [\n \"Aztec\",\n \"Codabar\",\n \"Code128\",\n \"Code39\",\n \"Code93\",\n \"DataBar\",\n \"DataBarExpanded\",\n \"DataMatrix\",\n \"DXFilmEdge\",\n \"EAN-13\",\n \"EAN-8\",\n \"ITF\",\n \"Linear-Codes\",\n \"Matrix-Codes\",\n \"MaxiCode\",\n \"MicroQRCode\",\n \"None\",\n \"PDF417\",\n \"QRCode\",\n \"rMQRCode\",\n \"UPC-A\",\n \"UPC-E\"\n];\nfunction Fo(r) {\n return r.join(\"|\");\n}\nfunction Uo(r) {\n const o = _r(r);\n let i = 0, c = $r.length - 1;\n for (; i <= c; ) {\n const l = Math.floor((i + c) / 2), h = $r[l], v = _r(h);\n if (v === o)\n return h;\n v < o ? i = l + 1 : c = l - 1;\n }\n return \"None\";\n}\nfunction _r(r) {\n return r.toLowerCase().replace(/_-\\[\\]/g, \"\");\n}\nfunction Wo(r, o) {\n return r.Binarizer[o];\n}\nfunction jo(r, o) {\n return r.CharacterSet[o];\n}\nconst Lo = [\n \"Text\",\n \"Binary\",\n \"Mixed\",\n \"GS1\",\n \"ISO15434\",\n \"UnknownECI\"\n];\nfunction Ho(r) {\n return Lo[r.value];\n}\nfunction Bo(r, o) {\n return r.EanAddOnSymbol[o];\n}\nfunction Vo(r, o) {\n return r.TextMode[o];\n}\nconst Ee = {\n formats: [],\n tryHarder: !0,\n tryRotate: !0,\n tryInvert: !0,\n tryDownscale: !0,\n binarizer: \"LocalAverage\",\n isPure: !1,\n downscaleFactor: 3,\n downscaleThreshold: 500,\n minLineCount: 2,\n maxNumberOfSymbols: 255,\n tryCode39ExtendedMode: !1,\n validateCode39CheckSum: !1,\n validateITFCheckSum: !1,\n returnCodabarStartEnd: !1,\n returnErrors: !1,\n eanAddOnSymbol: \"Read\",\n textMode: \"Plain\",\n characterSet: \"Unknown\"\n};\nfunction Hr(r, o) {\n return {\n ...o,\n formats: Fo(o.formats),\n binarizer: Wo(r, o.binarizer),\n eanAddOnSymbol: Bo(\n r,\n o.eanAddOnSymbol\n ),\n textMode: Vo(r, o.textMode),\n characterSet: jo(\n r,\n o.characterSet\n )\n };\n}\nfunction Br(r) {\n return {\n ...r,\n format: Uo(r.format),\n eccLevel: r.eccLevel,\n contentType: Ho(r.contentType)\n };\n}\nconst qo = {\n locateFile: (r, o) => {\n const i = r.match(/_(.+?)\\.wasm$/);\n return i ? `https://fastly.jsdelivr.net/npm/zxing-wasm@1.1.3/dist/${i[1]}/${r}` : o + r;\n }\n};\nlet Wt = /* @__PURE__ */ new WeakMap();\nfunction Bt(r, o) {\n var i;\n const c = Wt.get(r);\n if (c != null && c.modulePromise && o === void 0)\n return c.modulePromise;\n const l = (i = c == null ? void 0 : c.moduleOverrides) != null ? i : qo, h = r({\n ...l\n });\n return Wt.set(r, {\n moduleOverrides: l,\n modulePromise: h\n }), h;\n}\nfunction No(r, o) {\n Wt.set(r, {\n moduleOverrides: o\n });\n}\nasync function zo(r, o, i = Ee) {\n const c = {\n ...Ee,\n ...i\n }, l = await Bt(r), { size: h } = o, v = new Uint8Array(await o.arrayBuffer()), g = l._malloc(h);\n l.HEAPU8.set(v, g);\n const b = l.readBarcodesFromImage(\n g,\n h,\n Hr(l, c)\n );\n l._free(g);\n const p = [];\n for (let C = 0; C < b.size(); ++C)\n p.push(\n Br(b.get(C))\n );\n return p;\n}\nasync function Go(r, o, i = Ee) {\n const c = {\n ...Ee,\n ...i\n }, l = await Bt(r), {\n data: h,\n width: v,\n height: g,\n data: { byteLength: b }\n } = o, p = l._malloc(b);\n l.HEAPU8.set(h, p);\n const C = l.readBarcodesFromPixmap(\n p,\n v,\n g,\n Hr(l, c)\n );\n l._free(p);\n const S = [];\n for (let $ = 0; $ < C.size(); ++$)\n S.push(\n Br(C.get($))\n );\n return S;\n}\n({\n ...Ee,\n formats: [...Ee.formats]\n});\nvar lt = (() => {\n var r = typeof document < \"u\" && document.currentScript ? document.currentScript.src : void 0;\n return function(o = {}) {\n var i = o, c, l;\n i.ready = new Promise((e, t) => {\n c = e, l = t;\n });\n var h = Object.assign({}, i), v = \"./this.program\", g = typeof window == \"object\", b = typeof importScripts == \"function\";\n typeof process == \"object\" && typeof process.versions == \"object\" && process.versions.node;\n var p = \"\";\n function C(e) {\n return i.locateFile ? i.locateFile(e, p) : p + e;\n }\n var S;\n (g || b) && (b ? p = self.location.href : typeof document < \"u\" && document.currentScript && (p = document.currentScript.src), r && (p = r), p.indexOf(\"blob:\") !== 0 ? p = p.substr(0, p.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1) : p = \"\", b && (S = (e) => {\n var t = new XMLHttpRequest();\n return t.open(\"GET\", e, !1), t.responseType = \"arraybuffer\", t.send(null), new Uint8Array(t.response);\n })), i.print || console.log.bind(console);\n var $ = i.printErr || console.error.bind(console);\n Object.assign(i, h), h = null, i.arguments && i.arguments, i.thisProgram && (v = i.thisProgram), i.quit && i.quit;\n var F;\n i.wasmBinary && (F = i.wasmBinary), typeof WebAssembly != \"object\" && Z(\"no native wasm support detected\");\n var U, W = !1, R, A, X, k, D, M, le, oe;\n function be() {\n var e = U.buffer;\n i.HEAP8 = R = new Int8Array(e), i.HEAP16 = X = new Int16Array(e), i.HEAPU8 = A = new Uint8Array(e), i.HEAPU16 = k = new Uint16Array(e), i.HEAP32 = D = new Int32Array(e), i.HEAPU32 = M = new Uint32Array(e), i.HEAPF32 = le = new Float32Array(e), i.HEAPF64 = oe = new Float64Array(e);\n }\n var Ce = [], Oe = [], De = [];\n function Le() {\n if (i.preRun)\n for (typeof i.preRun == \"function\" && (i.preRun = [i.preRun]); i.preRun.length; )\n ht(i.preRun.shift());\n gt(Ce);\n }\n function dt() {\n gt(Oe);\n }\n function ft() {\n if (i.postRun)\n for (typeof i.postRun == \"function\" && (i.postRun = [i.postRun]); i.postRun.length; )\n Me(i.postRun.shift());\n gt(De);\n }\n function ht(e) {\n Ce.unshift(e);\n }\n function pt(e) {\n Oe.unshift(e);\n }\n function Me(e) {\n De.unshift(e);\n }\n var te = 0, ve = null;\n function mt(e) {\n var t;\n te++, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te);\n }\n function de(e) {\n var t;\n if (te--, (t = i.monitorRunDependencies) === null || t === void 0 || t.call(i, te), te == 0 && ve) {\n var n = ve;\n ve = null, n();\n }\n }\n function Z(e) {\n var t;\n (t = i.onAbort) === null || t === void 0 || t.call(i, e), e = \"Aborted(\" + e + \")\", $(e), W = !0, e += \". Build with -sASSERTIONS for more info.\";\n var n = new WebAssembly.RuntimeError(e);\n throw l(n), n;\n }\n var vt = \"data:application/octet-stream;base64,\", He = (e) => e.startsWith(vt), fe;\n fe = \"zxing_reader.wasm\", He(fe) || (fe = C(fe));\n function Be(e) {\n if (e == fe && F)\n return new Uint8Array(F);\n if (S)\n return S(e);\n throw \"both async and sync fetching of the wasm failed\";\n }\n function yt(e) {\n return !F && (g || b) && typeof fetch == \"function\" ? fetch(e, {\n credentials: \"same-origin\"\n }).then((t) => {\n if (!t.ok)\n throw \"failed to load wasm binary file at '\" + e + \"'\";\n return t.arrayBuffer();\n }).catch(() => Be(e)) : Promise.resolve().then(() => Be(e));\n }\n function Ve(e, t, n) {\n return yt(e).then((a) => WebAssembly.instantiate(a, t)).then((a) => a).then(n, (a) => {\n $(`failed to asynchronously prepare wasm: ${a}`), Z(a);\n });\n }\n function an(e, t, n, a) {\n return !e && typeof WebAssembly.instantiateStreaming == \"function\" && !He(t) && typeof fetch == \"function\" ? fetch(t, {\n credentials: \"same-origin\"\n }).then((s) => {\n var u = WebAssembly.instantiateStreaming(s, n);\n return u.then(a, function(d) {\n return $(`wasm streaming compile failed: ${d}`), $(\"falling back to ArrayBuffer instantiation\"), Ve(t, n, a);\n });\n }) : Ve(t, n, a);\n }\n function on() {\n var e = {\n a: Ga\n };\n function t(a, s) {\n return z = a.exports, U = z.ia, be(), Kt = z.ma, pt(z.ja), de(), z;\n }\n mt();\n function n(a) {\n t(a.instance);\n }\n if (i.instantiateWasm)\n try {\n return i.instantiateWasm(e, t);\n } catch (a) {\n $(`Module.instantiateWasm callback failed with error: ${a}`), l(a);\n }\n return an(F, fe, e, n).catch(l), {};\n }\n var gt = (e) => {\n for (; e.length > 0; )\n e.shift()(i);\n };\n i.noExitRuntime;\n var qe = [], Ne = 0, sn = (e) => {\n var t = new wt(e);\n return t.get_caught() || (t.set_caught(!0), Ne--), t.set_rethrown(!1), qe.push(t), hr(t.excPtr), t.get_exception_ptr();\n }, ie = 0, cn = () => {\n j(0, 0);\n var e = qe.pop();\n fr(e.excPtr), ie = 0;\n };\n function wt(e) {\n this.excPtr = e, this.ptr = e - 24, this.set_type = function(t) {\n M[this.ptr + 4 >> 2] = t;\n }, this.get_type = function() {\n return M[this.ptr + 4 >> 2];\n }, this.set_destructor = function(t) {\n M[this.ptr + 8 >> 2] = t;\n }, this.get_destructor = function() {\n return M[this.ptr + 8 >> 2];\n }, this.set_caught = function(t) {\n t = t ? 1 : 0, R[this.ptr + 12 >> 0] = t;\n }, this.get_caught = function() {\n return R[this.ptr + 12 >> 0] != 0;\n }, this.set_rethrown = function(t) {\n t = t ? 1 : 0, R[this.ptr + 13 >> 0] = t;\n }, this.get_rethrown = function() {\n return R[this.ptr + 13 >> 0] != 0;\n }, this.init = function(t, n) {\n this.set_adjusted_ptr(0), this.set_type(t), this.set_destructor(n);\n }, this.set_adjusted_ptr = function(t) {\n M[this.ptr + 16 >> 2] = t;\n }, this.get_adjusted_ptr = function() {\n return M[this.ptr + 16 >> 2];\n }, this.get_exception_ptr = function() {\n var t = mr(this.get_type());\n if (t)\n return M[this.excPtr >> 2];\n var n = this.get_adjusted_ptr();\n return n !== 0 ? n : this.excPtr;\n };\n }\n var un = (e) => {\n throw ie || (ie = e), ie;\n }, bt = (e) => {\n var t = ie;\n if (!t)\n return Ue(0), 0;\n var n = new wt(t);\n n.set_adjusted_ptr(t);\n var a = n.get_type();\n if (!a)\n return Ue(0), t;\n for (var s in e) {\n var u = e[s];\n if (u === 0 || u === a)\n break;\n var d = n.ptr + 16;\n if (pr(u, a, d))\n return Ue(u), t;\n }\n return Ue(a), t;\n }, ln = () => bt([]), dn = (e) => bt([e]), fn = (e, t) => bt([e, t]), hn = () => {\n var e = qe.pop();\n e || Z(\"no exception to throw\");\n var t = e.excPtr;\n throw e.get_rethrown() || (qe.push(e), e.set_rethrown(!0), e.set_caught(!1), Ne++), ie = t, ie;\n }, pn = (e, t, n) => {\n var a = new wt(e);\n throw a.init(t, n), ie = e, Ne++, ie;\n }, mn = () => Ne, ze = {}, Ct = (e) => {\n for (; e.length; ) {\n var t = e.pop(), n = e.pop();\n n(t);\n }\n };\n function $t(e) {\n return this.fromWireType(D[e >> 2]);\n }\n var $e = {}, ye = {}, Ge = {}, qt, Ye = (e) => {\n throw new qt(e);\n }, ge = (e, t, n) => {\n e.forEach(function(f) {\n Ge[f] = t;\n });\n function a(f) {\n var m = n(f);\n m.length !== e.length && Ye(\"Mismatched type converter count\");\n for (var w = 0; w < e.length; ++w)\n re(e[w], m[w]);\n }\n var s = new Array(t.length), u = [], d = 0;\n t.forEach((f, m) => {\n ye.hasOwnProperty(f) ? s[m] = ye[f] : (u.push(f), $e.hasOwnProperty(f) || ($e[f] = []), $e[f].push(() => {\n s[m] = ye[f], ++d, d === u.length && a(s);\n }));\n }), u.length === 0 && a(s);\n }, vn = (e) => {\n var t = ze[e];\n delete ze[e];\n var n = t.rawConstructor, a = t.rawDestructor, s = t.fields, u = s.map((d) => d.getterReturnType).concat(s.map((d) => d.setterArgumentType));\n ge([e], u, (d) => {\n var f = {};\n return s.forEach((m, w) => {\n var _ = m.fieldName, T = d[w], E = m.getter, O = m.getterContext, L = d[w + s.length], q = m.setter, I = m.setterContext;\n f[_] = {\n read: (J) => T.fromWireType(E(O, J)),\n write: (J, y) => {\n var P = [];\n q(I, J, L.toWireType(P, y)), Ct(P);\n }\n };\n }), [{\n name: t.name,\n fromWireType: (m) => {\n var w = {};\n for (var _ in f)\n w[_] = f[_].read(m);\n return a(m), w;\n },\n toWireType: (m, w) => {\n for (var _ in f)\n if (!(_ in w))\n throw new TypeError(`Missing field: \"${_}\"`);\n var T = n();\n for (_ in f)\n f[_].write(T, w[_]);\n return m !== null && m.push(a, T), T;\n },\n argPackAdvance: ne,\n readValueFromPointer: $t,\n destructorFunction: a\n }];\n });\n }, yn = (e, t, n, a, s) => {\n }, gn = () => {\n for (var e = new Array(256), t = 0; t < 256; ++t)\n e[t] = String.fromCharCode(t);\n Nt = e;\n }, Nt, Y = (e) => {\n for (var t = \"\", n = e; A[n]; )\n t += Nt[A[n++]];\n return t;\n }, _e, x = (e) => {\n throw new _e(e);\n };\n function wn(e, t) {\n let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var a = t.name;\n if (e || x(`type \"${a}\" must have a positive integer typeid pointer`), ye.hasOwnProperty(e)) {\n if (n.ignoreDuplicateRegistrations)\n return;\n x(`Cannot register type '${a}' twice`);\n }\n if (ye[e] = t, delete Ge[e], $e.hasOwnProperty(e)) {\n var s = $e[e];\n delete $e[e], s.forEach((u) => u());\n }\n }\n function re(e, t) {\n let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n if (!(\"argPackAdvance\" in t))\n throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n return wn(e, t, n);\n }\n var ne = 8, bn = (e, t, n, a) => {\n t = Y(t), re(e, {\n name: t,\n fromWireType: function(s) {\n return !!s;\n },\n toWireType: function(s, u) {\n return u ? n : a;\n },\n argPackAdvance: ne,\n readValueFromPointer: function(s) {\n return this.fromWireType(A[s]);\n },\n destructorFunction: null\n });\n }, Cn = (e) => ({\n count: e.count,\n deleteScheduled: e.deleteScheduled,\n preservePointerOnDelete: e.preservePointerOnDelete,\n ptr: e.ptr,\n ptrType: e.ptrType,\n smartPtr: e.smartPtr,\n smartPtrType: e.smartPtrType\n }), _t = (e) => {\n function t(n) {\n return n.$$.ptrType.registeredClass.name;\n }\n x(t(e) + \" instance already deleted\");\n }, St = !1, zt = (e) => {\n }, $n = (e) => {\n e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr);\n }, Gt = (e) => {\n e.count.value -= 1;\n var t = e.count.value === 0;\n t && $n(e);\n }, Yt = (e, t, n) => {\n if (t === n)\n return e;\n if (n.baseClass === void 0)\n return null;\n var a = Yt(e, t, n.baseClass);\n return a === null ? null : n.downcast(a);\n }, Jt = {}, _n = () => Object.keys(Re).length, Sn = () => {\n var e = [];\n for (var t in Re)\n Re.hasOwnProperty(t) && e.push(Re[t]);\n return e;\n }, Ae = [], Pt = () => {\n for (; Ae.length; ) {\n var e = Ae.pop();\n e.$$.deleteScheduled = !1, e.delete();\n }\n }, xe, Pn = (e) => {\n xe = e, Ae.length && xe && xe(Pt);\n }, Tn = () => {\n i.getInheritedInstanceCount = _n, i.getLiveInheritedInstances = Sn, i.flushPendingDeletes = Pt, i.setDelayFunction = Pn;\n }, Re = {}, En = (e, t) => {\n for (t === void 0 && x(\"ptr should not be undefined\"); e.baseClass; )\n t = e.upcast(t), e = e.baseClass;\n return t;\n }, On = (e, t) => (t = En(e, t), Re[t]), Je = (e, t) => {\n (!t.ptrType || !t.ptr) && Ye(\"makeClassHandle requires ptr and ptrType\");\n var n = !!t.smartPtrType, a = !!t.smartPtr;\n return n !== a && Ye(\"Both smartPtrType and smartPtr must be specified\"), t.count = {\n value: 1\n }, ke(Object.create(e, {\n $$: {\n value: t,\n writable: !0\n }\n }));\n };\n function Dn(e) {\n var t = this.getPointee(e);\n if (!t)\n return this.destructor(e), null;\n var n = On(this.registeredClass, t);\n if (n !== void 0) {\n if (n.$$.count.value === 0)\n return n.$$.ptr = t, n.$$.smartPtr = e, n.clone();\n var a = n.clone();\n return this.destructor(e), a;\n }\n function s() {\n return this.isSmartPointer ? Je(this.registeredClass.instancePrototype, {\n ptrType: this.pointeeType,\n ptr: t,\n smartPtrType: this,\n smartPtr: e\n }) : Je(this.registeredClass.instancePrototype, {\n ptrType: this,\n ptr: e\n });\n }\n var u = this.registeredClass.getActualType(t), d = Jt[u];\n if (!d)\n return s.call(this);\n var f;\n this.isConst ? f = d.constPointerType : f = d.pointerType;\n var m = Yt(t, this.registeredClass, f.registeredClass);\n return m === null ? s.call(this) : this.isSmartPointer ? Je(f.registeredClass.instancePrototype, {\n ptrType: f,\n ptr: m,\n smartPtrType: this,\n smartPtr: e\n }) : Je(f.registeredClass.instancePrototype, {\n ptrType: f,\n ptr: m\n });\n }\n var ke = (e) => typeof FinalizationRegistry > \"u\" ? (ke = (t) => t, e) : (St = new FinalizationRegistry((t) => {\n Gt(t.$$);\n }), ke = (t) => {\n var n = t.$$, a = !!n.smartPtr;\n if (a) {\n var s = {\n $$: n\n };\n St.register(t, s, t);\n }\n return t;\n }, zt = (t) => St.unregister(t), ke(e)), Mn = () => {\n Object.assign(Qe.prototype, {\n isAliasOf(e) {\n if (!(this instanceof Qe) || !(e instanceof Qe))\n return !1;\n var t = this.$$.ptrType.registeredClass, n = this.$$.ptr;\n e.$$ = e.$$;\n for (var a = e.$$.ptrType.registeredClass, s = e.$$.ptr; t.baseClass; )\n n = t.upcast(n), t = t.baseClass;\n for (; a.baseClass; )\n s = a.upcast(s), a = a.baseClass;\n return t === a && n === s;\n },\n clone() {\n if (this.$$.ptr || _t(this), this.$$.preservePointerOnDelete)\n return this.$$.count.value += 1, this;\n var e = ke(Object.create(Object.getPrototypeOf(this), {\n $$: {\n value: Cn(this.$$)\n }\n }));\n return e.$$.count.value += 1, e.$$.deleteScheduled = !1, e;\n },\n delete() {\n this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x(\"Object already scheduled for deletion\"), zt(this), Gt(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0);\n },\n isDeleted() {\n return !this.$$.ptr;\n },\n deleteLater() {\n return this.$$.ptr || _t(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && x(\"Object already scheduled for deletion\"), Ae.push(this), Ae.length === 1 && xe && xe(Pt), this.$$.deleteScheduled = !0, this;\n }\n });\n };\n function Qe() {\n }\n var Ie = (e, t) => Object.defineProperty(t, \"name\", {\n value: e\n }), Qt = (e, t, n) => {\n if (e[t].overloadTable === void 0) {\n var a = e[t];\n e[t] = function() {\n return e[t].overloadTable.hasOwnProperty(arguments.length) || x(`Function '${n}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`), e[t].overloadTable[arguments.length].apply(this, arguments);\n }, e[t].overloadTable = [], e[t].overloadTable[a.argCount] = a;\n }\n }, Tt = (e, t, n) => {\n i.hasOwnProperty(e) ? ((n === void 0 || i[e].overloadTable !== void 0 && i[e].overloadTable[n] !== void 0) && x(`Cannot register public name '${e}' twice`), Qt(i, e, e), i.hasOwnProperty(n) && x(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`), i[e].overloadTable[n] = t) : (i[e] = t, n !== void 0 && (i[e].numArguments = n));\n }, An = 48, xn = 57, Rn = (e) => {\n if (e === void 0)\n return \"_unknown\";\n e = e.replace(/[^a-zA-Z0-9_]/g, \"$\");\n var t = e.charCodeAt(0);\n return t >= An && t <= xn ? `_${e}` : e;\n };\n function kn(e, t, n, a, s, u, d, f) {\n this.name = e, this.constructor = t, this.instancePrototype = n, this.rawDestructor = a, this.baseClass = s, this.getActualType = u, this.upcast = d, this.downcast = f, this.pureVirtualFunctions = [];\n }\n var Et = (e, t, n) => {\n for (; t !== n; )\n t.upcast || x(`Expected null or instance of ${n.name}, got an instance of ${t.name}`), e = t.upcast(e), t = t.baseClass;\n return e;\n };\n function In(e, t) {\n if (t === null)\n return this.isReference && x(`null is not a valid ${this.name}`), 0;\n t.$$ || x(`Cannot pass \"${xt(t)}\" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`);\n var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass);\n return a;\n }\n function Fn(e, t) {\n var n;\n if (t === null)\n return this.isReference && x(`null is not a valid ${this.name}`), this.isSmartPointer ? (n = this.rawConstructor(), e !== null && e.push(this.rawDestructor, n), n) : 0;\n (!t || !t.$$) && x(`Cannot pass \"${xt(t)}\" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), !this.isConst && t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`);\n var a = t.$$.ptrType.registeredClass;\n if (n = Et(t.$$.ptr, a, this.registeredClass), this.isSmartPointer)\n switch (t.$$.smartPtr === void 0 && x(\"Passing raw pointer to smart pointer is illegal\"), this.sharingPolicy) {\n case 0:\n t.$$.smartPtrType === this ? n = t.$$.smartPtr : x(`Cannot convert argument of type ${t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name} to parameter type ${this.name}`);\n break;\n case 1:\n n = t.$$.smartPtr;\n break;\n case 2:\n if (t.$$.smartPtrType === this)\n n = t.$$.smartPtr;\n else {\n var s = t.clone();\n n = this.rawShare(n, se.toHandle(() => s.delete())), e !== null && e.push(this.rawDestructor, n);\n }\n break;\n default:\n x(\"Unsupporting sharing policy\");\n }\n return n;\n }\n function Un(e, t) {\n if (t === null)\n return this.isReference && x(`null is not a valid ${this.name}`), 0;\n t.$$ || x(`Cannot pass \"${xt(t)}\" as a ${this.name}`), t.$$.ptr || x(`Cannot pass deleted object as a pointer of type ${this.name}`), t.$$.ptrType.isConst && x(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);\n var n = t.$$.ptrType.registeredClass, a = Et(t.$$.ptr, n, this.registeredClass);\n return a;\n }\n function Xt(e) {\n return this.fromWireType(M[e >> 2]);\n }\n var Wn = () => {\n Object.assign(Xe.prototype, {\n getPointee(e) {\n return this.rawGetPointee && (e = this.rawGetPointee(e)), e;\n },\n destructor(e) {\n var t;\n (t = this.rawDestructor) === null || t === void 0 || t.call(this, e);\n },\n argPackAdvance: ne,\n readValueFromPointer: Xt,\n deleteObject(e) {\n e !== null && e.delete();\n },\n fromWireType: Dn\n });\n };\n function Xe(e, t, n, a, s, u, d, f, m, w, _) {\n this.name = e, this.registeredClass = t, this.isReference = n, this.isConst = a, this.isSmartPointer = s, this.pointeeType = u, this.sharingPolicy = d, this.rawGetPointee = f, this.rawConstructor = m, this.rawShare = w, this.rawDestructor = _, !s && t.baseClass === void 0 ? a ? (this.toWireType = In, this.destructorFunction = null) : (this.toWireType = Un, this.destructorFunction = null) : this.toWireType = Fn;\n }\n var Zt = (e, t, n) => {\n i.hasOwnProperty(e) || Ye(\"Replacing nonexistant public symbol\"), i[e].overloadTable !== void 0 && n !== void 0 ? i[e].overloadTable[n] = t : (i[e] = t, i[e].argCount = n);\n }, jn = (e, t, n) => {\n var a = i[\"dynCall_\" + e];\n return n && n.length ? a.apply(null, [t].concat(n)) : a.call(null, t);\n }, Ze = [], Kt, H = (e) => {\n var t = Ze[e];\n return t || (e >= Ze.length && (Ze.length = e + 1), Ze[e] = t = Kt.get(e)), t;\n }, Ln = (e, t, n) => {\n if (e.includes(\"j\"))\n return jn(e, t, n);\n var a = H(t).apply(null, n);\n return a;\n }, Hn = (e, t) => {\n var n = [];\n return function() {\n return n.length = 0, Object.assign(n, arguments), Ln(e, t, n);\n };\n }, ee = (e, t) => {\n e = Y(e);\n function n() {\n return e.includes(\"j\") ? Hn(e, t) : H(t);\n }\n var a = n();\n return typeof a != \"function\" && x(`unknown function pointer with signature ${e}: ${t}`), a;\n }, Bn = (e, t) => {\n var n = Ie(t, function(a) {\n this.name = t, this.message = a;\n var s = new Error(a).stack;\n s !== void 0 && (this.stack = this.toString() + `\n` + s.replace(/^Error(:[^\\n]*)?\\n/, \"\"));\n });\n return n.prototype = Object.create(e.prototype), n.prototype.constructor = n, n.prototype.toString = function() {\n return this.message === void 0 ? this.name : `${this.name}: ${this.message}`;\n }, n;\n }, er, tr = (e) => {\n var t = dr(e), n = Y(t);\n return ce(t), n;\n }, Ke = (e, t) => {\n var n = [], a = {};\n function s(u) {\n if (!a[u] && !ye[u]) {\n if (Ge[u]) {\n Ge[u].forEach(s);\n return;\n }\n n.push(u), a[u] = !0;\n }\n }\n throw t.forEach(s), new er(`${e}: ` + n.map(tr).join([\", \"]));\n }, Vn = (e, t, n, a, s, u, d, f, m, w, _, T, E) => {\n _ = Y(_), u = ee(s, u), f && (f = ee(d, f)), w && (w = ee(m, w)), E = ee(T, E);\n var O = Rn(_);\n Tt(O, function() {\n Ke(`Cannot construct ${_} due to unbound types`, [a]);\n }), ge([e, t, n], a ? [a] : [], function(L) {\n L = L[0];\n var q, I;\n a ? (q = L.registeredClass, I = q.instancePrototype) : I = Qe.prototype;\n var J = Ie(_, function() {\n if (Object.getPrototypeOf(this) !== y)\n throw new _e(\"Use 'new' to construct \" + _);\n if (P.constructor_body === void 0)\n throw new _e(_ + \" has no accessible constructor\");\n var wr = P.constructor_body[arguments.length];\n if (wr === void 0)\n throw new _e(`Tried to invoke ctor of ${_} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(P.constructor_body).toString()}) parameters instead!`);\n return wr.apply(this, arguments);\n }), y = Object.create(I, {\n constructor: {\n value: J\n }\n });\n J.prototype = y;\n var P = new kn(_, J, y, E, q, u, f, w);\n if (P.baseClass) {\n var N, G;\n (G = (N = P.baseClass).__derivedClasses) !== null && G !== void 0 || (N.__derivedClasses = []), P.baseClass.__derivedClasses.push(P);\n }\n var Se = new Xe(_, P, !0, !1, !1), rt = new Xe(_ + \"*\", P, !1, !1, !1), gr = new Xe(_ + \" const*\", P, !1, !0, !1);\n return Jt[e] = {\n pointerType: rt,\n constPointerType: gr\n }, Zt(O, J), [Se, rt, gr];\n });\n }, Ot = (e, t) => {\n for (var n = [], a = 0; a < e; a++)\n n.push(M[t + a * 4 >> 2]);\n return n;\n };\n function qn(e) {\n for (var t = 1; t < e.length; ++t)\n if (e[t] !== null && e[t].destructorFunction === void 0)\n return !0;\n return !1;\n }\n function Dt(e, t, n, a, s, u) {\n var d = t.length;\n d < 2 && x(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n var f = t[1] !== null && n !== null, m = qn(t), w = t[0].name !== \"void\", _ = d - 2, T = new Array(_), E = [], O = [], L = function() {\n arguments.length !== _ && x(`function ${e} called with ${arguments.length} arguments, expected ${_}`), O.length = 0;\n var q;\n E.length = f ? 2 : 1, E[0] = s, f && (q = t[1].toWireType(O, this), E[1] = q);\n for (var I = 0; I < _; ++I)\n T[I] = t[I + 2].toWireType(O, arguments[I]), E.push(T[I]);\n var J = a.apply(null, E);\n function y(P) {\n if (m)\n Ct(O);\n else\n for (var N = f ? 1 : 2; N < t.length; N++) {\n var G = N === 1 ? q : T[N - 2];\n t[N].destructorFunction !== null && t[N].destructorFunction(G);\n }\n if (w)\n return t[0].fromWireType(P);\n }\n return y(J);\n };\n return Ie(e, L);\n }\n var Nn = (e, t, n, a, s, u) => {\n var d = Ot(t, n);\n s = ee(a, s), ge([], [e], function(f) {\n f = f[0];\n var m = `constructor ${f.name}`;\n if (f.registeredClass.constructor_body === void 0 && (f.registeredClass.constructor_body = []), f.registeredClass.constructor_body[t - 1] !== void 0)\n throw new _e(`Cannot register multiple constructors with identical number of parameters (${t - 1}) for class '${f.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);\n return f.registeredClass.constructor_body[t - 1] = () => {\n Ke(`Cannot construct ${f.name} due to unbound types`, d);\n }, ge([], d, (w) => (w.splice(1, 0, null), f.registeredClass.constructor_body[t - 1] = Dt(m, w, null, s, u), [])), [];\n });\n }, rr = (e) => {\n e = e.trim();\n const t = e.indexOf(\"(\");\n return t !== -1 ? e.substr(0, t) : e;\n }, zn = (e, t, n, a, s, u, d, f, m) => {\n var w = Ot(n, a);\n t = Y(t), t = rr(t), u = ee(s, u), ge([], [e], function(_) {\n _ = _[0];\n var T = `${_.name}.${t}`;\n t.startsWith(\"@@\") && (t = Symbol[t.substring(2)]), f && _.registeredClass.pureVirtualFunctions.push(t);\n function E() {\n Ke(`Cannot call ${T} due to unbound types`, w);\n }\n var O = _.registeredClass.instancePrototype, L = O[t];\n return L === void 0 || L.overloadTable === void 0 && L.className !== _.name && L.argCount === n - 2 ? (E.argCount = n - 2, E.className = _.name, O[t] = E) : (Qt(O, t, T), O[t].overloadTable[n - 2] = E), ge([], w, function(q) {\n var I = Dt(T, q, _, u, d);\n return O[t].overloadTable === void 0 ? (I.argCount = n - 2, O[t] = I) : O[t].overloadTable[n - 2] = I, [];\n }), [];\n });\n };\n function Gn() {\n Object.assign(nr.prototype, {\n get(e) {\n return this.allocated[e];\n },\n has(e) {\n return this.allocated[e] !== void 0;\n },\n allocate(e) {\n var t = this.freelist.pop() || this.allocated.length;\n return this.allocated[t] = e, t;\n },\n free(e) {\n this.allocated[e] = void 0, this.freelist.push(e);\n }\n });\n }\n function nr() {\n this.allocated = [void 0], this.freelist = [];\n }\n var K = new nr(), Mt = (e) => {\n e >= K.reserved && --K.get(e).refcount === 0 && K.free(e);\n }, Yn = () => {\n for (var e = 0, t = K.reserved; t < K.allocated.length; ++t)\n K.allocated[t] !== void 0 && ++e;\n return e;\n }, Jn = () => {\n K.allocated.push({\n value: void 0\n }, {\n value: null\n }, {\n value: !0\n }, {\n value: !1\n }), K.reserved = K.allocated.length, i.count_emval_handles = Yn;\n }, se = {\n toValue: (e) => (e || x(\"Cannot use deleted val. handle = \" + e), K.get(e).value),\n toHandle: (e) => {\n switch (e) {\n case void 0:\n return 1;\n case null:\n return 2;\n case !0:\n return 3;\n case !1:\n return 4;\n default:\n return K.allocate({\n refcount: 1,\n value: e\n });\n }\n }\n }, Qn = (e, t) => {\n t = Y(t), re(e, {\n name: t,\n fromWireType: (n) => {\n var a = se.toValue(n);\n return Mt(n), a;\n },\n toWireType: (n, a) => se.toHandle(a),\n argPackAdvance: ne,\n readValueFromPointer: $t,\n destructorFunction: null\n });\n }, Xn = (e, t, n) => {\n switch (t) {\n case 1:\n return n ? function(a) {\n return this.fromWireType(R[a >> 0]);\n } : function(a) {\n return this.fromWireType(A[a >> 0]);\n };\n case 2:\n return n ? function(a) {\n return this.fromWireType(X[a >> 1]);\n } : function(a) {\n return this.fromWireType(k[a >> 1]);\n };\n case 4:\n return n ? function(a) {\n return this.fromWireType(D[a >> 2]);\n } : function(a) {\n return this.fromWireType(M[a >> 2]);\n };\n default:\n throw new TypeError(`invalid integer width (${t}): ${e}`);\n }\n }, Zn = (e, t, n, a) => {\n t = Y(t);\n function s() {\n }\n s.values = {}, re(e, {\n name: t,\n constructor: s,\n fromWireType: function(u) {\n return this.constructor.values[u];\n },\n toWireType: (u, d) => d.value,\n argPackAdvance: ne,\n readValueFromPointer: Xn(t, n, a),\n destructorFunction: null\n }), Tt(t, s);\n }, At = (e, t) => {\n var n = ye[e];\n return n === void 0 && x(t + \" has unknown type \" + tr(e)), n;\n }, Kn = (e, t, n) => {\n var a = At(e, \"enum\");\n t = Y(t);\n var s = a.constructor, u = Object.create(a.constructor.prototype, {\n value: {\n value: n\n },\n constructor: {\n value: Ie(`${a.name}_${t}`, function() {\n })\n }\n });\n s.values[n] = u, s[t] = u;\n }, xt = (e) => {\n if (e === null)\n return \"null\";\n var t = typeof e;\n return t === \"object\" || t === \"array\" || t === \"function\" ? e.toString() : \"\" + e;\n }, ea = (e, t) => {\n switch (t) {\n case 4:\n return function(n) {\n return this.fromWireType(le[n >> 2]);\n };\n case 8:\n return function(n) {\n return this.fromWireType(oe[n >> 3]);\n };\n default:\n throw new TypeError(`invalid float width (${t}): ${e}`);\n }\n }, ta = (e, t, n) => {\n t = Y(t), re(e, {\n name: t,\n fromWireType: (a) => a,\n toWireType: (a, s) => s,\n argPackAdvance: ne,\n readValueFromPointer: ea(t, n),\n destructorFunction: null\n });\n }, ra = (e, t, n, a, s, u, d) => {\n var f = Ot(t, n);\n e = Y(e), e = rr(e), s = ee(a, s), Tt(e, function() {\n Ke(`Cannot call ${e} due to unbound types`, f);\n }, t - 1), ge([], f, function(m) {\n var w = [m[0], null].concat(m.slice(1));\n return Zt(e, Dt(e, w, null, s, u), t - 1), [];\n });\n }, na = (e, t, n) => {\n switch (t) {\n case 1:\n return n ? (a) => R[a >> 0] : (a) => A[a >> 0];\n case 2:\n return n ? (a) => X[a >> 1] : (a) => k[a >> 1];\n case 4:\n return n ? (a) => D[a >> 2] : (a) => M[a >> 2];\n default:\n throw new TypeError(`invalid integer width (${t}): ${e}`);\n }\n }, aa = (e, t, n, a, s) => {\n t = Y(t);\n var u = (_) => _;\n if (a === 0) {\n var d = 32 - 8 * n;\n u = (_) => _ << d >>> d;\n }\n var f = t.includes(\"unsigned\"), m = (_, T) => {\n }, w;\n f ? w = function(_, T) {\n return m(T, this.name), T >>> 0;\n } : w = function(_, T) {\n return m(T, this.name), T;\n }, re(e, {\n name: t,\n fromWireType: u,\n toWireType: w,\n argPackAdvance: ne,\n readValueFromPointer: na(t, n, a !== 0),\n destructorFunction: null\n });\n }, oa = (e, t, n) => {\n var a = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], s = a[t];\n function u(d) {\n var f = M[d >> 2], m = M[d + 4 >> 2];\n return new s(R.buffer, m, f);\n }\n n = Y(n), re(e, {\n name: n,\n fromWireType: u,\n argPackAdvance: ne,\n readValueFromPointer: u\n }, {\n ignoreDuplicateRegistrations: !0\n });\n }, ar = (e, t, n, a) => {\n if (!(a > 0))\n return 0;\n for (var s = n, u = n + a - 1, d = 0; d < e.length; ++d) {\n var f = e.charCodeAt(d);\n if (f >= 55296 && f <= 57343) {\n var m = e.charCodeAt(++d);\n f = 65536 + ((f & 1023) << 10) | m & 1023;\n }\n if (f <= 127) {\n if (n >= u)\n break;\n t[n++] = f;\n } else if (f <= 2047) {\n if (n + 1 >= u)\n break;\n t[n++] = 192 | f >> 6, t[n++] = 128 | f & 63;\n } else if (f <= 65535) {\n if (n + 2 >= u)\n break;\n t[n++] = 224 | f >> 12, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63;\n } else {\n if (n + 3 >= u)\n break;\n t[n++] = 240 | f >> 18, t[n++] = 128 | f >> 12 & 63, t[n++] = 128 | f >> 6 & 63, t[n++] = 128 | f & 63;\n }\n }\n return t[n] = 0, n - s;\n }, ia = (e, t, n) => ar(e, A, t, n), or = (e) => {\n for (var t = 0, n = 0; n < e.length; ++n) {\n var a = e.charCodeAt(n);\n a <= 127 ? t++ : a <= 2047 ? t += 2 : a >= 55296 && a <= 57343 ? (t += 4, ++n) : t += 3;\n }\n return t;\n }, ir = typeof TextDecoder < \"u\" ? new TextDecoder(\"utf8\") : void 0, sa = (e, t, n) => {\n for (var a = t + n, s = t; e[s] && !(s >= a); )\n ++s;\n if (s - t > 16 && e.buffer && ir)\n return ir.decode(e.subarray(t, s));\n for (var u = \"\"; t < s; ) {\n var d = e[t++];\n if (!(d & 128)) {\n u += String.fromCharCode(d);\n continue;\n }\n var f = e[t++] & 63;\n if ((d & 224) == 192) {\n u += String.fromCharCode((d & 31) << 6 | f);\n continue;\n }\n var m = e[t++] & 63;\n if ((d & 240) == 224 ? d = (d & 15) << 12 | f << 6 | m : d = (d & 7) << 18 | f << 12 | m << 6 | e[t++] & 63, d < 65536)\n u += String.fromCharCode(d);\n else {\n var w = d - 65536;\n u += String.fromCharCode(55296 | w >> 10, 56320 | w & 1023);\n }\n }\n return u;\n }, Rt = (e, t) => e ? sa(A, e, t) : \"\", ca = (e, t) => {\n t = Y(t);\n var n = t === \"std::string\";\n re(e, {\n name: t,\n fromWireType(a) {\n var s = M[a >> 2], u = a + 4, d;\n if (n)\n for (var f = u, m = 0; m <= s; ++m) {\n var w = u + m;\n if (m == s || A[w] == 0) {\n var _ = w - f, T = Rt(f, _);\n d === void 0 ? d = T : (d += \"\\0\", d += T), f = w + 1;\n }\n }\n else {\n for (var E = new Array(s), m = 0; m < s; ++m)\n E[m] = String.fromCharCode(A[u + m]);\n d = E.join(\"\");\n }\n return ce(a), d;\n },\n toWireType(a, s) {\n s instanceof ArrayBuffer && (s = new Uint8Array(s));\n var u, d = typeof s == \"string\";\n d || s instanceof Uint8Array || s instanceof Uint8ClampedArray || s instanceof Int8Array || x(\"Cannot pass non-string to std::string\"), n && d ? u = or(s) : u = s.length;\n var f = Ft(4 + u + 1), m = f + 4;\n if (M[f >> 2] = u, n && d)\n ia(s, m, u + 1);\n else if (d)\n for (var w = 0; w < u; ++w) {\n var _ = s.charCodeAt(w);\n _ > 255 && (ce(m), x(\"String has UTF-16 code units that do not fit in 8 bits\")), A[m + w] = _;\n }\n else\n for (var w = 0; w < u; ++w)\n A[m + w] = s[w];\n return a !== null && a.push(ce, f), f;\n },\n argPackAdvance: ne,\n readValueFromPointer: Xt,\n destructorFunction(a) {\n ce(a);\n }\n });\n }, sr = typeof TextDecoder < \"u\" ? new TextDecoder(\"utf-16le\") : void 0, ua = (e, t) => {\n for (var n = e, a = n >> 1, s = a + t / 2; !(a >= s) && k[a]; )\n ++a;\n if (n = a << 1, n - e > 32 && sr)\n return sr.decode(A.subarray(e, n));\n for (var u = \"\", d = 0; !(d >= t / 2); ++d) {\n var f = X[e + d * 2 >> 1];\n if (f == 0)\n break;\n u += String.fromCharCode(f);\n }\n return u;\n }, la = (e, t, n) => {\n var a;\n if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 2)\n return 0;\n n -= 2;\n for (var s = t, u = n < e.length * 2 ? n / 2 : e.length, d = 0; d < u; ++d) {\n var f = e.charCodeAt(d);\n X[t >> 1] = f, t += 2;\n }\n return X[t >> 1] = 0, t - s;\n }, da = (e) => e.length * 2, fa = (e, t) => {\n for (var n = 0, a = \"\"; !(n >= t / 4); ) {\n var s = D[e + n * 4 >> 2];\n if (s == 0)\n break;\n if (++n, s >= 65536) {\n var u = s - 65536;\n a += String.fromCharCode(55296 | u >> 10, 56320 | u & 1023);\n } else\n a += String.fromCharCode(s);\n }\n return a;\n }, ha = (e, t, n) => {\n var a;\n if ((a = n) !== null && a !== void 0 || (n = 2147483647), n < 4)\n return 0;\n for (var s = t, u = s + n - 4, d = 0; d < e.length; ++d) {\n var f = e.charCodeAt(d);\n if (f >= 55296 && f <= 57343) {\n var m = e.charCodeAt(++d);\n f = 65536 + ((f & 1023) << 10) | m & 1023;\n }\n if (D[t >> 2] = f, t += 4, t + 4 > u)\n break;\n }\n return D[t >> 2] = 0, t - s;\n }, pa = (e) => {\n for (var t = 0, n = 0; n < e.length; ++n) {\n var a = e.charCodeAt(n);\n a >= 55296 && a <= 57343 && ++n, t += 4;\n }\n return t;\n }, ma = (e, t, n) => {\n n = Y(n);\n var a, s, u, d, f;\n t === 2 ? (a = ua, s = la, d = da, u = () => k, f = 1) : t === 4 && (a = fa, s = ha, d = pa, u = () => M, f = 2), re(e, {\n name: n,\n fromWireType: (m) => {\n for (var w = M[m >> 2], _ = u(), T, E = m + 4, O = 0; O <= w; ++O) {\n var L = m + 4 + O * t;\n if (O == w || _[L >> f] == 0) {\n var q = L - E, I = a(E, q);\n T === void 0 ? T = I : (T += \"\\0\", T += I), E = L + t;\n }\n }\n return ce(m), T;\n },\n toWireType: (m, w) => {\n typeof w != \"string\" && x(`Cannot pass non-string to C++ string type ${n}`);\n var _ = d(w), T = Ft(4 + _ + t);\n return M[T >> 2] = _ >> f, s(w, T + 4, _ + t), m !== null && m.push(ce, T), T;\n },\n argPackAdvance: ne,\n readValueFromPointer: $t,\n destructorFunction(m) {\n ce(m);\n }\n });\n }, va = (e, t, n, a, s, u) => {\n ze[e] = {\n name: Y(t),\n rawConstructor: ee(n, a),\n rawDestructor: ee(s, u),\n fields: []\n };\n }, ya = (e, t, n, a, s, u, d, f, m, w) => {\n ze[e].fields.push({\n fieldName: Y(t),\n getterReturnType: n,\n getter: ee(a, s),\n getterContext: u,\n setterArgumentType: d,\n setter: ee(f, m),\n setterContext: w\n });\n }, ga = (e, t) => {\n t = Y(t), re(e, {\n isVoid: !0,\n name: t,\n argPackAdvance: 0,\n fromWireType: () => {\n },\n toWireType: (n, a) => {\n }\n });\n }, kt = [], wa = (e, t, n, a) => (e = kt[e], t = se.toValue(t), e(null, t, n, a)), ba = {}, Ca = (e) => {\n var t = ba[e];\n return t === void 0 ? Y(e) : t;\n }, cr = () => {\n if (typeof globalThis == \"object\")\n return globalThis;\n function e(t) {\n t.$$$embind_global$$$ = t;\n var n = typeof $$$embind_global$$$ == \"object\" && t.$$$embind_global$$$ == t;\n return n || delete t.$$$embind_global$$$, n;\n }\n if (typeof $$$embind_global$$$ == \"object\" || (typeof global == \"object\" && e(global) ? $$$embind_global$$$ = global : typeof self == \"object\" && e(self) && ($$$embind_global$$$ = self), typeof $$$embind_global$$$ == \"object\"))\n return $$$embind_global$$$;\n throw Error(\"unable to get global object.\");\n }, $a = (e) => e === 0 ? se.toHandle(cr()) : (e = Ca(e), se.toHandle(cr()[e])), _a = (e) => {\n var t = kt.length;\n return kt.push(e), t;\n }, Sa = (e, t) => {\n for (var n = new Array(e), a = 0; a < e; ++a)\n n[a] = At(M[t + a * 4 >> 2], \"parameter \" + a);\n return n;\n }, Pa = Reflect.construct, Ta = (e, t, n) => {\n var a = [], s = e.toWireType(a, n);\n return a.length && (M[t >> 2] = se.toHandle(a)), s;\n }, Ea = (e, t, n) => {\n var a = Sa(e, t), s = a.shift();\n e--;\n var u = new Array(e), d = (m, w, _, T) => {\n for (var E = 0, O = 0; O < e; ++O)\n u[O] = a[O].readValueFromPointer(T + E), E += a[O].argPackAdvance;\n for (var L = n === 1 ? Pa(w, u) : w.apply(m, u), O = 0; O < e; ++O) {\n var q, I;\n (q = (I = a[O]).deleteObject) === null || q === void 0 || q.call(I, u[O]);\n }\n return Ta(s, _, L);\n }, f = `methodCaller<(${a.map((m) => m.name).join(\", \")}) => ${s.name}>`;\n return _a(Ie(f, d));\n }, Oa = (e) => {\n e > 4 && (K.get(e).refcount += 1);\n }, Da = (e) => {\n var t = se.toValue(e);\n Ct(t), Mt(e);\n }, Ma = (e, t) => {\n e = At(e, \"_emval_take_value\");\n var n = e.readValueFromPointer(t);\n return se.toHandle(n);\n }, Aa = () => {\n Z(\"\");\n }, xa = (e, t, n) => A.copyWithin(e, t, t + n), Ra = () => 2147483648, ka = (e) => {\n var t = U.buffer, n = (e - t.byteLength + 65535) / 65536;\n try {\n return U.grow(n), be(), 1;\n } catch (a) {\n }\n }, Ia = (e) => {\n var t = A.length;\n e >>>= 0;\n var n = Ra();\n if (e > n)\n return !1;\n for (var a = (m, w) => m + (w - m % w) % w, s = 1; s <= 4; s *= 2) {\n var u = t * (1 + 0.2 / s);\n u = Math.min(u, e + 100663296);\n var d = Math.min(n, a(Math.max(e, u), 65536)), f = ka(d);\n if (f)\n return !0;\n }\n return !1;\n }, It = {}, Fa = () => v || \"./this.program\", Fe = () => {\n if (!Fe.strings) {\n var e = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\", t = {\n USER: \"web_user\",\n LOGNAME: \"web_user\",\n PATH: \"/\",\n PWD: \"/\",\n HOME: \"/home/web_user\",\n LANG: e,\n _: Fa()\n };\n for (var n in It)\n It[n] === void 0 ? delete t[n] : t[n] = It[n];\n var a = [];\n for (var n in t)\n a.push(`${n}=${t[n]}`);\n Fe.strings = a;\n }\n return Fe.strings;\n }, Ua = (e, t) => {\n for (var n = 0; n < e.length; ++n)\n R[t++ >> 0] = e.charCodeAt(n);\n R[t >> 0] = 0;\n }, Wa = (e, t) => {\n var n = 0;\n return Fe().forEach((a, s) => {\n var u = t + n;\n M[e + s * 4 >> 2] = u, Ua(a, u), n += a.length + 1;\n }), 0;\n }, ja = (e, t) => {\n var n = Fe();\n M[e >> 2] = n.length;\n var a = 0;\n return n.forEach((s) => a += s.length + 1), M[t >> 2] = a, 0;\n }, La = (e) => e, et = (e) => e % 4 === 0 && (e % 100 !== 0 || e % 400 === 0), Ha = (e, t) => {\n for (var n = 0, a = 0; a <= t; n += e[a++])\n ;\n return n;\n }, ur = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], lr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Ba = (e, t) => {\n for (var n = new Date(e.getTime()); t > 0; ) {\n var a = et(n.getFullYear()), s = n.getMonth(), u = (a ? ur : lr)[s];\n if (t > u - n.getDate())\n t -= u - n.getDate() + 1, n.setDate(1), s < 11 ? n.setMonth(s + 1) : (n.setMonth(0), n.setFullYear(n.getFullYear() + 1));\n else\n return n.setDate(n.getDate() + t), n;\n }\n return n;\n };\n function Va(e, t, n) {\n var a = or(e) + 1, s = new Array(a);\n return ar(e, s, 0, s.length), s;\n }\n var qa = (e, t) => {\n R.set(e, t);\n }, Na = (e, t, n, a) => {\n var s = M[a + 40 >> 2], u = {\n tm_sec: D[a >> 2],\n tm_min: D[a + 4 >> 2],\n tm_hour: D[a + 8 >> 2],\n tm_mday: D[a + 12 >> 2],\n tm_mon: D[a + 16 >> 2],\n tm_year: D[a + 20 >> 2],\n tm_wday: D[a + 24 >> 2],\n tm_yday: D[a + 28 >> 2],\n tm_isdst: D[a + 32 >> 2],\n tm_gmtoff: D[a + 36 >> 2],\n tm_zone: s ? Rt(s) : \"\"\n }, d = Rt(n), f = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var m in f)\n d = d.replace(new RegExp(m, \"g\"), f[m]);\n var w = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], _ = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n function T(y, P, N) {\n for (var G = typeof y == \"number\" ? y.toString() : y || \"\"; G.length < P; )\n G = N[0] + G;\n return G;\n }\n function E(y, P) {\n return T(y, P, \"0\");\n }\n function O(y, P) {\n function N(Se) {\n return Se < 0 ? -1 : Se > 0 ? 1 : 0;\n }\n var G;\n return (G = N(y.getFullYear() - P.getFullYear())) === 0 && (G = N(y.getMonth() - P.getMonth())) === 0 && (G = N(y.getDate() - P.getDate())), G;\n }\n function L(y) {\n switch (y.getDay()) {\n case 0:\n return new Date(y.getFullYear() - 1, 11, 29);\n case 1:\n return y;\n case 2:\n return new Date(y.getFullYear(), 0, 3);\n case 3:\n return new Date(y.getFullYear(), 0, 2);\n case 4:\n return new Date(y.getFullYear(), 0, 1);\n case 5:\n return new Date(y.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(y.getFullYear() - 1, 11, 30);\n }\n }\n function q(y) {\n var P = Ba(new Date(y.tm_year + 1900, 0, 1), y.tm_yday), N = new Date(P.getFullYear(), 0, 4), G = new Date(P.getFullYear() + 1, 0, 4), Se = L(N), rt = L(G);\n return O(Se, P) <= 0 ? O(rt, P) <= 0 ? P.getFullYear() + 1 : P.getFullYear() : P.getFullYear() - 1;\n }\n var I = {\n \"%a\": (y) => w[y.tm_wday].substring(0, 3),\n \"%A\": (y) => w[y.tm_wday],\n \"%b\": (y) => _[y.tm_mon].substring(0, 3),\n \"%B\": (y) => _[y.tm_mon],\n \"%C\": (y) => {\n var P = y.tm_year + 1900;\n return E(P / 100 | 0, 2);\n },\n \"%d\": (y) => E(y.tm_mday, 2),\n \"%e\": (y) => T(y.tm_mday, 2, \" \"),\n \"%g\": (y) => q(y).toString().substring(2),\n \"%G\": (y) => q(y),\n \"%H\": (y) => E(y.tm_hour, 2),\n \"%I\": (y) => {\n var P = y.tm_hour;\n return P == 0 ? P = 12 : P > 12 && (P -= 12), E(P, 2);\n },\n \"%j\": (y) => E(y.tm_mday + Ha(et(y.tm_year + 1900) ? ur : lr, y.tm_mon - 1), 3),\n \"%m\": (y) => E(y.tm_mon + 1, 2),\n \"%M\": (y) => E(y.tm_min, 2),\n \"%n\": () => `\n`,\n \"%p\": (y) => y.tm_hour >= 0 && y.tm_hour < 12 ? \"AM\" : \"PM\",\n \"%S\": (y) => E(y.tm_sec, 2),\n \"%t\": () => \"\t\",\n \"%u\": (y) => y.tm_wday || 7,\n \"%U\": (y) => {\n var P = y.tm_yday + 7 - y.tm_wday;\n return E(Math.floor(P / 7), 2);\n },\n \"%V\": (y) => {\n var P = Math.floor((y.tm_yday + 7 - (y.tm_wday + 6) % 7) / 7);\n if ((y.tm_wday + 371 - y.tm_yday - 2) % 7 <= 2 && P++, P) {\n if (P == 53) {\n var N = (y.tm_wday + 371 - y.tm_yday) % 7;\n N != 4 && (N != 3 || !et(y.tm_year)) && (P = 1);\n }\n } else {\n P = 52;\n var G = (y.tm_wday + 7 - y.tm_yday - 1) % 7;\n (G == 4 || G == 5 && et(y.tm_year % 400 - 1)) && P++;\n }\n return E(P, 2);\n },\n \"%w\": (y) => y.tm_wday,\n \"%W\": (y) => {\n var P = y.tm_yday + 7 - (y.tm_wday + 6) % 7;\n return E(Math.floor(P / 7), 2);\n },\n \"%y\": (y) => (y.tm_year + 1900).toString().substring(2),\n \"%Y\": (y) => y.tm_year + 1900,\n \"%z\": (y) => {\n var P = y.tm_gmtoff, N = P >= 0;\n return P = Math.abs(P) / 60, P = P / 60 * 100 + P % 60, (N ? \"+\" : \"-\") + (\"0000\" + P).slice(-4);\n },\n \"%Z\": (y) => y.tm_zone,\n \"%%\": () => \"%\"\n };\n d = d.replace(/%%/g, \"\\0\\0\");\n for (var m in I)\n d.includes(m) && (d = d.replace(new RegExp(m, \"g\"), I[m](u)));\n d = d.replace(/\\0\\0/g, \"%\");\n var J = Va(d);\n return J.length > t ? 0 : (qa(J, e), J.length - 1);\n }, za = (e, t, n, a, s) => Na(e, t, n, a);\n qt = i.InternalError = class extends Error {\n constructor(e) {\n super(e), this.name = \"InternalError\";\n }\n }, gn(), _e = i.BindingError = class extends Error {\n constructor(e) {\n super(e), this.name = \"BindingError\";\n }\n }, Mn(), Tn(), Wn(), er = i.UnboundTypeError = Bn(Error, \"UnboundTypeError\"), Gn(), Jn();\n var Ga = {\n s: sn,\n u: cn,\n b: ln,\n g: dn,\n q: fn,\n J: hn,\n f: pn,\n V: mn,\n d: un,\n da: vn,\n Q: yn,\n _: bn,\n ca: Vn,\n ba: Nn,\n w: zn,\n Y: Qn,\n x: Zn,\n h: Kn,\n L: ta,\n M: ra,\n t: aa,\n o: oa,\n K: ca,\n C: ma,\n A: va,\n ea: ya,\n $: ga,\n R: wa,\n ha: Mt,\n fa: $a,\n Z: Ea,\n N: Oa,\n O: Da,\n aa: Ma,\n B: Aa,\n X: xa,\n W: Ia,\n T: Wa,\n U: ja,\n E: uo,\n D: Za,\n F: co,\n n: lo,\n a: Ya,\n e: eo,\n m: Xa,\n k: ro,\n H: io,\n v: ao,\n G: so,\n z: ho,\n P: mo,\n l: to,\n j: Ka,\n c: Qa,\n p: Ja,\n I: oo,\n r: fo,\n i: no,\n y: po,\n ga: La,\n S: za\n }, z = on(), ce = i._free = (e) => (ce = i._free = z.ka)(e), Ft = i._malloc = (e) => (Ft = i._malloc = z.la)(e), dr = (e) => (dr = z.na)(e), j = (e, t) => (j = z.oa)(e, t), Ue = (e) => (Ue = z.pa)(e), B = () => (B = z.qa)(), V = (e) => (V = z.ra)(e), fr = (e) => (fr = z.sa)(e), hr = (e) => (hr = z.ta)(e), pr = (e, t, n) => (pr = z.ua)(e, t, n), mr = (e) => (mr = z.va)(e);\n i.dynCall_viijii = (e, t, n, a, s, u, d) => (i.dynCall_viijii = z.wa)(e, t, n, a, s, u, d);\n var vr = i.dynCall_jiiii = (e, t, n, a, s) => (vr = i.dynCall_jiiii = z.xa)(e, t, n, a, s);\n i.dynCall_iiiiij = (e, t, n, a, s, u, d) => (i.dynCall_iiiiij = z.ya)(e, t, n, a, s, u, d), i.dynCall_iiiiijj = (e, t, n, a, s, u, d, f, m) => (i.dynCall_iiiiijj = z.za)(e, t, n, a, s, u, d, f, m), i.dynCall_iiiiiijj = (e, t, n, a, s, u, d, f, m, w) => (i.dynCall_iiiiiijj = z.Aa)(e, t, n, a, s, u, d, f, m, w);\n function Ya(e, t) {\n var n = B();\n try {\n return H(e)(t);\n } catch (a) {\n if (V(n), a !== a + 0)\n throw a;\n j(1, 0);\n }\n }\n function Ja(e, t, n, a) {\n var s = B();\n try {\n H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function Qa(e, t, n) {\n var a = B();\n try {\n H(e)(t, n);\n } catch (s) {\n if (V(a), s !== s + 0)\n throw s;\n j(1, 0);\n }\n }\n function Xa(e, t, n, a) {\n var s = B();\n try {\n return H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function Za(e, t, n, a, s) {\n var u = B();\n try {\n return H(e)(t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n function Ka(e, t) {\n var n = B();\n try {\n H(e)(t);\n } catch (a) {\n if (V(n), a !== a + 0)\n throw a;\n j(1, 0);\n }\n }\n function eo(e, t, n) {\n var a = B();\n try {\n return H(e)(t, n);\n } catch (s) {\n if (V(a), s !== s + 0)\n throw s;\n j(1, 0);\n }\n }\n function to(e) {\n var t = B();\n try {\n H(e)();\n } catch (n) {\n if (V(t), n !== n + 0)\n throw n;\n j(1, 0);\n }\n }\n function ro(e, t, n, a, s) {\n var u = B();\n try {\n return H(e)(t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n function no(e, t, n, a, s, u, d, f, m, w, _) {\n var T = B();\n try {\n H(e)(t, n, a, s, u, d, f, m, w, _);\n } catch (E) {\n if (V(T), E !== E + 0)\n throw E;\n j(1, 0);\n }\n }\n function ao(e, t, n, a, s, u, d) {\n var f = B();\n try {\n return H(e)(t, n, a, s, u, d);\n } catch (m) {\n if (V(f), m !== m + 0)\n throw m;\n j(1, 0);\n }\n }\n function oo(e, t, n, a, s) {\n var u = B();\n try {\n H(e)(t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n function io(e, t, n, a, s, u) {\n var d = B();\n try {\n return H(e)(t, n, a, s, u);\n } catch (f) {\n if (V(d), f !== f + 0)\n throw f;\n j(1, 0);\n }\n }\n function so(e, t, n, a, s, u, d, f) {\n var m = B();\n try {\n return H(e)(t, n, a, s, u, d, f);\n } catch (w) {\n if (V(m), w !== w + 0)\n throw w;\n j(1, 0);\n }\n }\n function co(e, t, n, a) {\n var s = B();\n try {\n return H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function uo(e, t, n, a) {\n var s = B();\n try {\n return H(e)(t, n, a);\n } catch (u) {\n if (V(s), u !== u + 0)\n throw u;\n j(1, 0);\n }\n }\n function lo(e) {\n var t = B();\n try {\n return H(e)();\n } catch (n) {\n if (V(t), n !== n + 0)\n throw n;\n j(1, 0);\n }\n }\n function fo(e, t, n, a, s, u, d, f) {\n var m = B();\n try {\n H(e)(t, n, a, s, u, d, f);\n } catch (w) {\n if (V(m), w !== w + 0)\n throw w;\n j(1, 0);\n }\n }\n function ho(e, t, n, a, s, u, d, f, m, w, _, T) {\n var E = B();\n try {\n return H(e)(t, n, a, s, u, d, f, m, w, _, T);\n } catch (O) {\n if (V(E), O !== O + 0)\n throw O;\n j(1, 0);\n }\n }\n function po(e, t, n, a, s, u, d, f, m, w, _, T, E, O, L, q) {\n var I = B();\n try {\n H(e)(t, n, a, s, u, d, f, m, w, _, T, E, O, L, q);\n } catch (J) {\n if (V(I), J !== J + 0)\n throw J;\n j(1, 0);\n }\n }\n function mo(e, t, n, a, s) {\n var u = B();\n try {\n return vr(e, t, n, a, s);\n } catch (d) {\n if (V(u), d !== d + 0)\n throw d;\n j(1, 0);\n }\n }\n var tt;\n ve = function e() {\n tt || yr(), tt || (ve = e);\n };\n function yr() {\n if (te > 0 || (Le(), te > 0))\n return;\n function e() {\n tt || (tt = !0, i.calledRun = !0, !W && (dt(), c(i), i.onRuntimeInitialized && i.onRuntimeInitialized(), ft()));\n }\n i.setStatus ? (i.setStatus(\"Running...\"), setTimeout(function() {\n setTimeout(function() {\n i.setStatus(\"\");\n }, 1), e();\n }, 1)) : e();\n }\n if (i.preInit)\n for (typeof i.preInit == \"function\" && (i.preInit = [i.preInit]); i.preInit.length > 0; )\n i.preInit.pop()();\n return yr(), o.ready;\n };\n})();\nfunction Yo(r) {\n return Bt(\n lt,\n r\n );\n}\nfunction Hi(r) {\n return No(\n lt,\n r\n );\n}\nasync function Jo(r, o) {\n return zo(\n lt,\n r,\n o\n );\n}\nasync function Qo(r, o) {\n return Go(\n lt,\n r,\n o\n );\n}\nvar je;\nclass ct extends EventTarget {\n constructor(o = {}) {\n var i;\n super(), Co(this, je, void 0);\n try {\n const c = (i = o == null ? void 0 : o.formats) == null ? void 0 : i.filter(\n (l) => l !== \"unknown\"\n );\n if ((c == null ? void 0 : c.length) === 0)\n throw new TypeError(\"Hint option provided, but is empty.\");\n c == null || c.forEach((l) => {\n if (!it.has(l))\n throw new TypeError(\n `Failed to read the 'formats' property from 'BarcodeDetectorOptions': The provided value '${l}' is not a valid enum value of type BarcodeFormat.`\n );\n }), $o(this, je, c != null ? c : []), Yo().then((l) => {\n this.dispatchEvent(\n new CustomEvent(\"load\", {\n detail: l\n })\n );\n }).catch((l) => {\n this.dispatchEvent(new CustomEvent(\"error\", { detail: l }));\n });\n } catch (c) {\n throw Cr(\n c,\n \"Failed to construct 'BarcodeDetector'\"\n );\n }\n }\n static async getSupportedFormats() {\n return _o.filter((o) => o !== \"unknown\");\n }\n async detect(o) {\n try {\n const i = await Mo(o);\n if (i === null)\n return [];\n let c;\n try {\n jr(i) ? c = await Jo(i, {\n tryHarder: !0,\n formats: br(this, je).map((l) => it.get(l))\n }) : c = await Qo(i, {\n tryHarder: !0,\n formats: br(this, je).map((l) => it.get(l))\n });\n } catch (l) {\n throw console.error(l), new DOMException(\n \"Barcode detection service unavailable.\",\n \"NotSupportedError\"\n );\n }\n return c.map((l) => {\n const {\n topLeft: { x: h, y: v },\n topRight: { x: g, y: b },\n bottomLeft: { x: p, y: C },\n bottomRight: { x: S, y: $ }\n } = l.position, F = Math.min(h, g, p, S), U = Math.min(v, b, C, $), W = Math.max(h, g, p, S), R = Math.max(v, b, C, $);\n return {\n boundingBox: new DOMRectReadOnly(\n F,\n U,\n W - F,\n R - U\n ),\n rawValue: l.text,\n format: So(l.format),\n cornerPoints: [\n {\n x: h,\n y: v\n },\n {\n x: g,\n y: b\n },\n {\n x: S,\n y: $\n },\n {\n x: p,\n y: C\n }\n ]\n };\n });\n } catch (i) {\n throw Cr(\n i,\n \"Failed to execute 'detect' on 'BarcodeDetector'\"\n );\n }\n }\n}\nje = /* @__PURE__ */ new WeakMap();\nconst Vt = (r, o, i = \"error\") => {\n let c, l;\n const h = new Promise(\n (v, g) => {\n c = v, l = g, r.addEventListener(o, c), r.addEventListener(i, l);\n }\n );\n return h.finally(() => {\n r.removeEventListener(o, c), r.removeEventListener(i, l);\n }), h;\n}, Sr = (r) => new Promise((o) => setTimeout(o, r));\nclass Xo extends Error {\n constructor() {\n super(\"can't process cross-origin image\"), this.name = \"DropImageFetchError\";\n }\n}\nclass Vr extends Error {\n constructor() {\n super(\"this browser has no Stream API support\"), this.name = \"StreamApiNotSupportedError\";\n }\n}\nclass Zo extends Error {\n constructor() {\n super(\n \"camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.\"\n ), this.name = \"InsecureContextError\";\n }\n}\nclass Ko extends Error {\n constructor() {\n super(\n \"Loading camera stream timed out after 6 seconds. If you are on iOS in PWA mode, this is a known issue (see https://github.com/gruhn/vue-qrcode-reader/issues/298)\"\n ), this.name = \"StreamLoadTimeoutError\";\n }\n}\nlet qr;\nasync function ei(r) {\n if (window.BarcodeDetector === void 0)\n return console.debug(\"[vue-qrcode-reader] Native BarcodeDetector not supported. Will use polyfill.\"), new ct({ formats: r });\n const o = await window.BarcodeDetector.getSupportedFormats(), i = r.filter((c) => !o.includes(c));\n return i.length > 0 ? (console.debug(`[vue-qrcode-reader] Native BarcodeDetector does not support formats ${JSON.stringify(i)}. Will use polyfill.`), new ct({ formats: r })) : (console.debug(\"[vue-qrcode-reader] Will use native BarcodeDetector.\"), new window.BarcodeDetector({ formats: r }));\n}\nasync function Nr(r) {\n qr = await ei(r);\n}\nconst ti = async (r, {\n detectHandler: o,\n locateHandler: i,\n minDelay: c,\n formats: l\n}) => {\n console.debug(\"[vue-qrcode-reader] start scanning\"), await Nr(l);\n const h = (v) => async (g) => {\n if (r.readyState === 0)\n console.debug(\"[vue-qrcode-reader] stop scanning: video element readyState is 0\");\n else {\n const { lastScanned: b, contentBefore: p, lastScanHadContent: C } = v;\n if (g - b < c)\n window.requestAnimationFrame(h(v));\n else {\n const S = await qr.detect(r), $ = S.some((W) => !p.includes(W.rawValue));\n $ && o(S);\n const F = S.length > 0;\n F && i(S), !F && C && i(S);\n const U = {\n lastScanned: g,\n lastScanHadContent: F,\n // It can happen that a QR code is constantly in view of the camera but\n // maybe a scanned frame is a bit blurry and we detect nothing but in the\n // next frame we detect the code again. We also want to avoid emitting\n // a `detect` event in such a case. So we don't reset `contentBefore`,\n // if we detect nothing, only if we detect something new.\n contentBefore: $ ? S.map((W) => W.rawValue) : p\n };\n window.requestAnimationFrame(h(U));\n }\n }\n };\n h({\n lastScanned: performance.now(),\n contentBefore: [],\n lastScanHadContent: !1\n })(performance.now());\n}, ri = async (r) => {\n if (r.startsWith(\"http\") && r.includes(location.host) === !1)\n throw new Xo();\n const o = document.createElement(\"img\");\n return o.src = r, await Vt(o, \"load\"), o;\n}, zr = async (r, o = [\"qr_code\"]) => await new ct({ formats: o }).detect(r), ni = async (r, o = [\"qr_code\"]) => {\n const i = new ct({ formats: o }), c = await ri(r);\n return await i.detect(c);\n};\nvar Gr = {}, Q = {};\nObject.defineProperty(Q, \"__esModule\", {\n value: !0\n});\nQ.compactObject = Qr;\nQ.deprecated = fi;\nvar ai = Q.detectBrowser = hi;\nQ.disableLog = ui;\nQ.disableWarnings = li;\nQ.extractVersion = st;\nQ.filterStats = pi;\nQ.log = di;\nQ.walkStats = ut;\nQ.wrapPeerConnectionEvent = ci;\nfunction oi(r, o, i) {\n return o = ii(o), o in r ? Object.defineProperty(r, o, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : r[o] = i, r;\n}\nfunction ii(r) {\n var o = si(r, \"string\");\n return pe(o) === \"symbol\" ? o : String(o);\n}\nfunction si(r, o) {\n if (pe(r) !== \"object\" || r === null)\n return r;\n var i = r[Symbol.toPrimitive];\n if (i !== void 0) {\n var c = i.call(r, o || \"default\");\n if (pe(c) !== \"object\")\n return c;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (o === \"string\" ? String : Number)(r);\n}\nfunction pe(r) {\n \"@babel/helpers - typeof\";\n return pe = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, pe(r);\n}\nvar Yr = !0, Jr = !0;\nfunction st(r, o, i) {\n var c = r.match(o);\n return c && c.length >= i && parseInt(c[i], 10);\n}\nfunction ci(r, o, i) {\n if (r.RTCPeerConnection) {\n var c = r.RTCPeerConnection.prototype, l = c.addEventListener;\n c.addEventListener = function(v, g) {\n if (v !== o)\n return l.apply(this, arguments);\n var b = function(C) {\n var S = i(C);\n S && (g.handleEvent ? g.handleEvent(S) : g(S));\n };\n return this._eventMap = this._eventMap || {}, this._eventMap[o] || (this._eventMap[o] = /* @__PURE__ */ new Map()), this._eventMap[o].set(g, b), l.apply(this, [v, b]);\n };\n var h = c.removeEventListener;\n c.removeEventListener = function(v, g) {\n if (v !== o || !this._eventMap || !this._eventMap[o])\n return h.apply(this, arguments);\n if (!this._eventMap[o].has(g))\n return h.apply(this, arguments);\n var b = this._eventMap[o].get(g);\n return this._eventMap[o].delete(g), this._eventMap[o].size === 0 && delete this._eventMap[o], Object.keys(this._eventMap).length === 0 && delete this._eventMap, h.apply(this, [v, b]);\n }, Object.defineProperty(c, \"on\" + o, {\n get: function() {\n return this[\"_on\" + o];\n },\n set: function(g) {\n this[\"_on\" + o] && (this.removeEventListener(o, this[\"_on\" + o]), delete this[\"_on\" + o]), g && this.addEventListener(o, this[\"_on\" + o] = g);\n },\n enumerable: !0,\n configurable: !0\n });\n }\n}\nfunction ui(r) {\n return typeof r != \"boolean\" ? new Error(\"Argument type: \" + pe(r) + \". Please use a boolean.\") : (Yr = r, r ? \"adapter.js logging disabled\" : \"adapter.js logging enabled\");\n}\nfunction li(r) {\n return typeof r != \"boolean\" ? new Error(\"Argument type: \" + pe(r) + \". Please use a boolean.\") : (Jr = !r, \"adapter.js deprecation warnings \" + (r ? \"disabled\" : \"enabled\"));\n}\nfunction di() {\n if ((typeof window > \"u\" ? \"undefined\" : pe(window)) === \"object\") {\n if (Yr)\n return;\n typeof console < \"u\" && typeof console.log == \"function\" && console.log.apply(console, arguments);\n }\n}\nfunction fi(r, o) {\n Jr && console.warn(r + \" is deprecated, please use \" + o + \" instead.\");\n}\nfunction hi(r) {\n var o = {\n browser: null,\n version: null\n };\n if (typeof r > \"u\" || !r.navigator || !r.navigator.userAgent)\n return o.browser = \"Not a browser.\", o;\n var i = r.navigator;\n if (i.mozGetUserMedia)\n o.browser = \"firefox\", o.version = st(i.userAgent, /Firefox\\/(\\d+)\\./, 1);\n else if (i.webkitGetUserMedia || r.isSecureContext === !1 && r.webkitRTCPeerConnection)\n o.browser = \"chrome\", o.version = st(i.userAgent, /Chrom(e|ium)\\/(\\d+)\\./, 2);\n else if (r.RTCPeerConnection && i.userAgent.match(/AppleWebKit\\/(\\d+)\\./))\n o.browser = \"safari\", o.version = st(i.userAgent, /AppleWebKit\\/(\\d+)\\./, 1), o.supportsUnifiedPlan = r.RTCRtpTransceiver && \"currentDirection\" in r.RTCRtpTransceiver.prototype;\n else\n return o.browser = \"Not a supported browser.\", o;\n return o;\n}\nfunction Pr(r) {\n return Object.prototype.toString.call(r) === \"[object Object]\";\n}\nfunction Qr(r) {\n return Pr(r) ? Object.keys(r).reduce(function(o, i) {\n var c = Pr(r[i]), l = c ? Qr(r[i]) : r[i], h = c && !Object.keys(l).length;\n return l === void 0 || h ? o : Object.assign(o, oi({}, i, l));\n }, {}) : r;\n}\nfunction ut(r, o, i) {\n !o || i.has(o.id) || (i.set(o.id, o), Object.keys(o).forEach(function(c) {\n c.endsWith(\"Id\") ? ut(r, r.get(o[c]), i) : c.endsWith(\"Ids\") && o[c].forEach(function(l) {\n ut(r, r.get(l), i);\n });\n }));\n}\nfunction pi(r, o, i) {\n var c = i ? \"outbound-rtp\" : \"inbound-rtp\", l = /* @__PURE__ */ new Map();\n if (o === null)\n return l;\n var h = [];\n return r.forEach(function(v) {\n v.type === \"track\" && v.trackIdentifier === o.id && h.push(v);\n }), h.forEach(function(v) {\n r.forEach(function(g) {\n g.type === c && g.trackId === v.id && ut(r, g, l);\n });\n }), l;\n}\nObject.defineProperty(Gr, \"__esModule\", {\n value: !0\n});\nvar mi = Gr.shimGetUserMedia = gi, vi = yi(Q);\nfunction Xr(r) {\n if (typeof WeakMap != \"function\")\n return null;\n var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap();\n return (Xr = function(l) {\n return l ? i : o;\n })(r);\n}\nfunction yi(r, o) {\n if (r && r.__esModule)\n return r;\n if (r === null || he(r) !== \"object\" && typeof r != \"function\")\n return { default: r };\n var i = Xr(o);\n if (i && i.has(r))\n return i.get(r);\n var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var h in r)\n if (h !== \"default\" && Object.prototype.hasOwnProperty.call(r, h)) {\n var v = l ? Object.getOwnPropertyDescriptor(r, h) : null;\n v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h];\n }\n return c.default = r, i && i.set(r, c), c;\n}\nfunction he(r) {\n \"@babel/helpers - typeof\";\n return he = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, he(r);\n}\nvar Tr = vi.log;\nfunction gi(r, o) {\n var i = r && r.navigator;\n if (i.mediaDevices) {\n var c = function(p) {\n if (he(p) !== \"object\" || p.mandatory || p.optional)\n return p;\n var C = {};\n return Object.keys(p).forEach(function(S) {\n if (!(S === \"require\" || S === \"advanced\" || S === \"mediaSource\")) {\n var $ = he(p[S]) === \"object\" ? p[S] : {\n ideal: p[S]\n };\n $.exact !== void 0 && typeof $.exact == \"number\" && ($.min = $.max = $.exact);\n var F = function(R, A) {\n return R ? R + A.charAt(0).toUpperCase() + A.slice(1) : A === \"deviceId\" ? \"sourceId\" : A;\n };\n if ($.ideal !== void 0) {\n C.optional = C.optional || [];\n var U = {};\n typeof $.ideal == \"number\" ? (U[F(\"min\", S)] = $.ideal, C.optional.push(U), U = {}, U[F(\"max\", S)] = $.ideal, C.optional.push(U)) : (U[F(\"\", S)] = $.ideal, C.optional.push(U));\n }\n $.exact !== void 0 && typeof $.exact != \"number\" ? (C.mandatory = C.mandatory || {}, C.mandatory[F(\"\", S)] = $.exact) : [\"min\", \"max\"].forEach(function(W) {\n $[W] !== void 0 && (C.mandatory = C.mandatory || {}, C.mandatory[F(W, S)] = $[W]);\n });\n }\n }), p.advanced && (C.optional = (C.optional || []).concat(p.advanced)), C;\n }, l = function(p, C) {\n if (o.version >= 61)\n return C(p);\n if (p = JSON.parse(JSON.stringify(p)), p && he(p.audio) === \"object\") {\n var S = function(R, A, X) {\n A in R && !(X in R) && (R[X] = R[A], delete R[A]);\n };\n p = JSON.parse(JSON.stringify(p)), S(p.audio, \"autoGainControl\", \"googAutoGainControl\"), S(p.audio, \"noiseSuppression\", \"googNoiseSuppression\"), p.audio = c(p.audio);\n }\n if (p && he(p.video) === \"object\") {\n var $ = p.video.facingMode;\n $ = $ && (he($) === \"object\" ? $ : {\n ideal: $\n });\n var F = o.version < 66;\n if ($ && ($.exact === \"user\" || $.exact === \"environment\" || $.ideal === \"user\" || $.ideal === \"environment\") && !(i.mediaDevices.getSupportedConstraints && i.mediaDevices.getSupportedConstraints().facingMode && !F)) {\n delete p.video.facingMode;\n var U;\n if ($.exact === \"environment\" || $.ideal === \"environment\" ? U = [\"back\", \"rear\"] : ($.exact === \"user\" || $.ideal === \"user\") && (U = [\"front\"]), U)\n return i.mediaDevices.enumerateDevices().then(function(W) {\n W = W.filter(function(A) {\n return A.kind === \"videoinput\";\n });\n var R = W.find(function(A) {\n return U.some(function(X) {\n return A.label.toLowerCase().includes(X);\n });\n });\n return !R && W.length && U.includes(\"back\") && (R = W[W.length - 1]), R && (p.video.deviceId = $.exact ? {\n exact: R.deviceId\n } : {\n ideal: R.deviceId\n }), p.video = c(p.video), Tr(\"chrome: \" + JSON.stringify(p)), C(p);\n });\n }\n p.video = c(p.video);\n }\n return Tr(\"chrome: \" + JSON.stringify(p)), C(p);\n }, h = function(p) {\n return o.version >= 64 ? p : {\n name: {\n PermissionDeniedError: \"NotAllowedError\",\n PermissionDismissedError: \"NotAllowedError\",\n InvalidStateError: \"NotAllowedError\",\n DevicesNotFoundError: \"NotFoundError\",\n ConstraintNotSatisfiedError: \"OverconstrainedError\",\n TrackStartError: \"NotReadableError\",\n MediaDeviceFailedDueToShutdown: \"NotAllowedError\",\n MediaDeviceKillSwitchOn: \"NotAllowedError\",\n TabCaptureError: \"AbortError\",\n ScreenCaptureError: \"AbortError\",\n DeviceCaptureError: \"AbortError\"\n }[p.name] || p.name,\n message: p.message,\n constraint: p.constraint || p.constraintName,\n toString: function() {\n return this.name + (this.message && \": \") + this.message;\n }\n };\n }, v = function(p, C, S) {\n l(p, function($) {\n i.webkitGetUserMedia($, C, function(F) {\n S && S(h(F));\n });\n });\n };\n if (i.getUserMedia = v.bind(i), i.mediaDevices.getUserMedia) {\n var g = i.mediaDevices.getUserMedia.bind(i.mediaDevices);\n i.mediaDevices.getUserMedia = function(b) {\n return l(b, function(p) {\n return g(p).then(function(C) {\n if (p.audio && !C.getAudioTracks().length || p.video && !C.getVideoTracks().length)\n throw C.getTracks().forEach(function(S) {\n S.stop();\n }), new DOMException(\"\", \"NotFoundError\");\n return C;\n }, function(C) {\n return Promise.reject(h(C));\n });\n });\n };\n }\n }\n}\nvar Zr = {};\nObject.defineProperty(Zr, \"__esModule\", {\n value: !0\n});\nvar wi = Zr.shimGetUserMedia = $i, bi = Ci(Q);\nfunction Kr(r) {\n if (typeof WeakMap != \"function\")\n return null;\n var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap();\n return (Kr = function(l) {\n return l ? i : o;\n })(r);\n}\nfunction Ci(r, o) {\n if (r && r.__esModule)\n return r;\n if (r === null || Pe(r) !== \"object\" && typeof r != \"function\")\n return { default: r };\n var i = Kr(o);\n if (i && i.has(r))\n return i.get(r);\n var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var h in r)\n if (h !== \"default\" && Object.prototype.hasOwnProperty.call(r, h)) {\n var v = l ? Object.getOwnPropertyDescriptor(r, h) : null;\n v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h];\n }\n return c.default = r, i && i.set(r, c), c;\n}\nfunction Pe(r) {\n \"@babel/helpers - typeof\";\n return Pe = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, Pe(r);\n}\nfunction $i(r, o) {\n var i = r && r.navigator, c = r && r.MediaStreamTrack;\n if (i.getUserMedia = function(b, p, C) {\n bi.deprecated(\"navigator.getUserMedia\", \"navigator.mediaDevices.getUserMedia\"), i.mediaDevices.getUserMedia(b).then(p, C);\n }, !(o.version > 55 && \"autoGainControl\" in i.mediaDevices.getSupportedConstraints())) {\n var l = function(p, C, S) {\n C in p && !(S in p) && (p[S] = p[C], delete p[C]);\n }, h = i.mediaDevices.getUserMedia.bind(i.mediaDevices);\n if (i.mediaDevices.getUserMedia = function(b) {\n return Pe(b) === \"object\" && Pe(b.audio) === \"object\" && (b = JSON.parse(JSON.stringify(b)), l(b.audio, \"autoGainControl\", \"mozAutoGainControl\"), l(b.audio, \"noiseSuppression\", \"mozNoiseSuppression\")), h(b);\n }, c && c.prototype.getSettings) {\n var v = c.prototype.getSettings;\n c.prototype.getSettings = function() {\n var b = v.apply(this, arguments);\n return l(b, \"mozAutoGainControl\", \"autoGainControl\"), l(b, \"mozNoiseSuppression\", \"noiseSuppression\"), b;\n };\n }\n if (c && c.prototype.applyConstraints) {\n var g = c.prototype.applyConstraints;\n c.prototype.applyConstraints = function(b) {\n return this.kind === \"audio\" && Pe(b) === \"object\" && (b = JSON.parse(JSON.stringify(b)), l(b, \"autoGainControl\", \"mozAutoGainControl\"), l(b, \"noiseSuppression\", \"mozNoiseSuppression\")), g.apply(this, [b]);\n };\n }\n }\n}\nvar ae = {};\nObject.defineProperty(ae, \"__esModule\", {\n value: !0\n});\nae.shimAudioContext = xi;\nae.shimCallbacksAPI = Ei;\nae.shimConstraints = rn;\nae.shimCreateOfferLegacy = Ai;\nvar _i = ae.shimGetUserMedia = Oi;\nae.shimLocalStreamsAPI = Pi;\nae.shimRTCIceServerUrls = Di;\nae.shimRemoteStreamsAPI = Ti;\nae.shimTrackEventTransceiver = Mi;\nvar en = Si(Q);\nfunction tn(r) {\n if (typeof WeakMap != \"function\")\n return null;\n var o = /* @__PURE__ */ new WeakMap(), i = /* @__PURE__ */ new WeakMap();\n return (tn = function(l) {\n return l ? i : o;\n })(r);\n}\nfunction Si(r, o) {\n if (r && r.__esModule)\n return r;\n if (r === null || me(r) !== \"object\" && typeof r != \"function\")\n return { default: r };\n var i = tn(o);\n if (i && i.has(r))\n return i.get(r);\n var c = {}, l = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var h in r)\n if (h !== \"default\" && Object.prototype.hasOwnProperty.call(r, h)) {\n var v = l ? Object.getOwnPropertyDescriptor(r, h) : null;\n v && (v.get || v.set) ? Object.defineProperty(c, h, v) : c[h] = r[h];\n }\n return c.default = r, i && i.set(r, c), c;\n}\nfunction me(r) {\n \"@babel/helpers - typeof\";\n return me = typeof Symbol == \"function\" && typeof Symbol.iterator == \"symbol\" ? function(o) {\n return typeof o;\n } : function(o) {\n return o && typeof Symbol == \"function\" && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, me(r);\n}\nfunction Pi(r) {\n if (!(me(r) !== \"object\" || !r.RTCPeerConnection)) {\n if (\"getLocalStreams\" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getLocalStreams = function() {\n return this._localStreams || (this._localStreams = []), this._localStreams;\n }), !(\"addStream\" in r.RTCPeerConnection.prototype)) {\n var o = r.RTCPeerConnection.prototype.addTrack;\n r.RTCPeerConnection.prototype.addStream = function(c) {\n var l = this;\n this._localStreams || (this._localStreams = []), this._localStreams.includes(c) || this._localStreams.push(c), c.getAudioTracks().forEach(function(h) {\n return o.call(l, h, c);\n }), c.getVideoTracks().forEach(function(h) {\n return o.call(l, h, c);\n });\n }, r.RTCPeerConnection.prototype.addTrack = function(c) {\n for (var l = this, h = arguments.length, v = new Array(h > 1 ? h - 1 : 0), g = 1; g < h; g++)\n v[g - 1] = arguments[g];\n return v && v.forEach(function(b) {\n l._localStreams ? l._localStreams.includes(b) || l._localStreams.push(b) : l._localStreams = [b];\n }), o.apply(this, arguments);\n };\n }\n \"removeStream\" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.removeStream = function(c) {\n var l = this;\n this._localStreams || (this._localStreams = []);\n var h = this._localStreams.indexOf(c);\n if (h !== -1) {\n this._localStreams.splice(h, 1);\n var v = c.getTracks();\n this.getSenders().forEach(function(g) {\n v.includes(g.track) && l.removeTrack(g);\n });\n }\n });\n }\n}\nfunction Ti(r) {\n if (!(me(r) !== \"object\" || !r.RTCPeerConnection) && (\"getRemoteStreams\" in r.RTCPeerConnection.prototype || (r.RTCPeerConnection.prototype.getRemoteStreams = function() {\n return this._remoteStreams ? this._remoteStreams : [];\n }), !(\"onaddstream\" in r.RTCPeerConnection.prototype))) {\n Object.defineProperty(r.RTCPeerConnection.prototype, \"onaddstream\", {\n get: function() {\n return this._onaddstream;\n },\n set: function(c) {\n var l = this;\n this._onaddstream && (this.removeEventListener(\"addstream\", this._onaddstream), this.removeEventListener(\"track\", this._onaddstreampoly)), this.addEventListener(\"addstream\", this._onaddstream = c), this.addEventListener(\"track\", this._onaddstreampoly = function(h) {\n h.streams.forEach(function(v) {\n if (l._remoteStreams || (l._remoteStreams = []), !l._remoteStreams.includes(v)) {\n l._remoteStreams.push(v);\n var g = new Event(\"addstream\");\n g.stream = v, l.dispatchEvent(g);\n }\n });\n });\n }\n });\n var o = r.RTCPeerConnection.prototype.setRemoteDescription;\n r.RTCPeerConnection.prototype.setRemoteDescription = function() {\n var c = this;\n return this._onaddstreampoly || this.addEventListener(\"track\", this._onaddstreampoly = function(l) {\n l.streams.forEach(function(h) {\n if (c._remoteStreams || (c._remoteStreams = []), !(c._remoteStreams.indexOf(h) >= 0)) {\n c._remoteStreams.push(h);\n var v = new Event(\"addstream\");\n v.stream = h, c.dispatchEvent(v);\n }\n });\n }), o.apply(c, arguments);\n };\n }\n}\nfunction Ei(r) {\n if (!(me(r) !== \"object\" || !r.RTCPeerConnection)) {\n var o = r.RTCPeerConnection.prototype, i = o.createOffer, c = o.createAnswer, l = o.setLocalDescription, h = o.setRemoteDescription, v = o.addIceCandidate;\n o.createOffer = function(p, C) {\n var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = i.apply(this, [S]);\n return C ? ($.then(p, C), Promise.resolve()) : $;\n }, o.createAnswer = function(p, C) {\n var S = arguments.length >= 2 ? arguments[2] : arguments[0], $ = c.apply(this, [S]);\n return C ? ($.then(p, C), Promise.resolve()) : $;\n };\n var g = function(p, C, S) {\n var $ = l.apply(this, [p]);\n return S ? ($.then(C, S), Promise.resolve()) : $;\n };\n o.setLocalDescription = g, g = function(p, C, S) {\n var $ = h.apply(this, [p]);\n return S ? ($.then(C, S), Promise.resolve()) : $;\n }, o.setRemoteDescription = g, g = function(p, C, S) {\n var $ = v.apply(this, [p]);\n return S ? ($.then(C, S), Promise.resolve()) : $;\n }, o.addIceCandidate = g;\n }\n}\nfunction Oi(r) {\n var o = r && r.navigator;\n if (o.mediaDevices && o.mediaDevices.getUserMedia) {\n var i = o.mediaDevices, c = i.getUserMedia.bind(i);\n o.mediaDevices.getUserMedia = function(l) {\n return c(rn(l));\n };\n }\n !o.getUserMedia && o.mediaDevices && o.mediaDevices.getUserMedia && (o.getUserMedia = (function(h, v, g) {\n o.mediaDevices.getUserMedia(h).then(v, g);\n }).bind(o));\n}\nfunction rn(r) {\n return r && r.video !== void 0 ? Object.assign({}, r, {\n video: en.compactObject(r.video)\n }) : r;\n}\nfunction Di(r) {\n if (r.RTCPeerConnection) {\n var o = r.RTCPeerConnection;\n r.RTCPeerConnection = function(c, l) {\n if (c && c.iceServers) {\n for (var h = [], v = 0; v < c.iceServers.length; v++) {\n var g = c.iceServers[v];\n g.urls === void 0 && g.url ? (en.deprecated(\"RTCIceServer.url\", \"RTCIceServer.urls\"), g = JSON.parse(JSON.stringify(g)), g.urls = g.url, delete g.url, h.push(g)) : h.push(c.iceServers[v]);\n }\n c.iceServers = h;\n }\n return new o(c, l);\n }, r.RTCPeerConnection.prototype = o.prototype, \"generateCertificate\" in o && Object.defineProperty(r.RTCPeerConnection, \"generateCertificate\", {\n get: function() {\n return o.generateCertificate;\n }\n });\n }\n}\nfunction Mi(r) {\n me(r) === \"object\" && r.RTCTrackEvent && \"receiver\" in r.RTCTrackEvent.prototype && !(\"transceiver\" in r.RTCTrackEvent.prototype) && Object.defineProperty(r.RTCTrackEvent.prototype, \"transceiver\", {\n get: function() {\n return {\n receiver: this.receiver\n };\n }\n });\n}\nfunction Ai(r) {\n var o = r.RTCPeerConnection.prototype.createOffer;\n r.RTCPeerConnection.prototype.createOffer = function(c) {\n if (c) {\n typeof c.offerToReceiveAudio < \"u\" && (c.offerToReceiveAudio = !!c.offerToReceiveAudio);\n var l = this.getTransceivers().find(function(v) {\n return v.receiver.track.kind === \"audio\";\n });\n c.offerToReceiveAudio === !1 && l ? l.direction === \"sendrecv\" ? l.setDirection ? l.setDirection(\"sendonly\") : l.direction = \"sendonly\" : l.direction === \"recvonly\" && (l.setDirection ? l.setDirection(\"inactive\") : l.direction = \"inactive\") : c.offerToReceiveAudio === !0 && !l && this.addTransceiver(\"audio\", {\n direction: \"recvonly\"\n }), typeof c.offerToReceiveVideo < \"u\" && (c.offerToReceiveVideo = !!c.offerToReceiveVideo);\n var h = this.getTransceivers().find(function(v) {\n return v.receiver.track.kind === \"video\";\n });\n c.offerToReceiveVideo === !1 && h ? h.direction === \"sendrecv\" ? h.setDirection ? h.setDirection(\"sendonly\") : h.direction = \"sendonly\" : h.direction === \"recvonly\" && (h.setDirection ? h.setDirection(\"inactive\") : h.direction = \"inactive\") : c.offerToReceiveVideo === !0 && !h && this.addTransceiver(\"video\", {\n direction: \"recvonly\"\n });\n }\n return o.apply(this, arguments);\n };\n}\nfunction xi(r) {\n me(r) !== \"object\" || r.AudioContext || (r.AudioContext = r.webkitAudioContext);\n}\nconst Ri = (r) => {\n let o = !1, i;\n return (...c) => (o || (i = r(c), o = !0), i);\n};\nfunction ue(r, o) {\n if (r === !1)\n throw new Error(o != null ? o : \"assertion failure\");\n}\nfunction Er(r) {\n throw new Error(\"this code should be unreachable\");\n}\nconst ki = Ri(() => {\n const r = ai(window);\n switch (r.browser) {\n case \"chrome\":\n mi(window, r);\n break;\n case \"firefox\":\n wi(window, r);\n break;\n case \"safari\":\n _i(window, r);\n break;\n default:\n throw new Vr();\n }\n});\nlet Te = Promise.resolve({ type: \"stop\", data: {} });\nasync function Or(r, o, i) {\n var g, b, p;\n if (console.debug(\n \"[vue-qrcode-reader] starting camera with constraints: \",\n JSON.stringify(o)\n ), window.isSecureContext !== !0)\n throw new Zo();\n if (((g = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : g.getUserMedia) === void 0)\n throw new Vr();\n ki(), console.debug(\"[vue-qrcode-reader] calling getUserMedia\");\n const c = await navigator.mediaDevices.getUserMedia({\n audio: !1,\n video: o\n });\n r.srcObject !== void 0 ? r.srcObject = c : r.mozSrcObject !== void 0 ? r.mozSrcObject = c : window.URL.createObjectURL ? r.src = window.URL.createObjectURL(c) : window.webkitURL ? r.src = window.webkitURL.createObjectURL(c) : r.src = c.id, r.play(), console.debug(\"[vue-qrcode-reader] waiting for video element to load\"), await Promise.race([\n Vt(r, \"loadeddata\"),\n // On iOS devices in PWA mode, QrcodeStream works initially, but after\n // killing and restarting the PWA, all video elements fail to load camera\n // streams and never emit the `loadeddata` event. Looks like this is\n // related to a WebKit issue (see #298). No workarounds at the moment.\n // To at least detect this situation, we throw an error if the event\n // has not been emitted after a 6 second timeout.\n Sr(6e3).then(() => {\n throw new Ko();\n })\n ]), console.debug(\"[vue-qrcode-reader] video element loaded\"), await Sr(500);\n const [l] = c.getVideoTracks(), h = (p = (b = l == null ? void 0 : l.getCapabilities) == null ? void 0 : b.call(l)) != null ? p : {};\n let v = !1;\n return i && h.torch && (await l.applyConstraints({ advanced: [{ torch: !0 }] }), v = !0), console.debug(\"[vue-qrcode-reader] camera ready\"), {\n type: \"start\",\n data: {\n videoEl: r,\n stream: c,\n capabilities: h,\n constraints: o,\n isTorchOn: v\n }\n };\n}\nasync function Ii(r, {\n constraints: o,\n torch: i,\n restart: c = !1\n}) {\n Te = Te.then((h) => {\n if (h.type === \"start\") {\n const {\n data: {\n videoEl: v,\n stream: g,\n constraints: b,\n isTorchOn: p\n }\n } = h;\n return !c && r === v && o === b && i === p ? h : nn(v, g, p).then(\n () => Or(r, o, i)\n );\n } else if (h.type === \"stop\" || h.type === \"failed\")\n return Or(r, o, i);\n Er();\n }).catch((h) => (console.debug(`[vue-qrcode-reader] starting camera failed with \"${h}\"`), { type: \"failed\", error: h }));\n const l = await Te;\n if (l.type === \"stop\")\n throw new Error(\"Something went wrong with the camera task queue (start task).\");\n if (l.type === \"failed\")\n throw l.error;\n if (l.type === \"start\")\n return l.data.capabilities;\n Er();\n}\nasync function nn(r, o, i) {\n console.debug(\"[vue-qrcode-reader] stopping camera\"), r.src = \"\", r.srcObject = null, r.load(), await Vt(r, \"error\");\n for (const c of o.getTracks())\n i != null || await c.applyConstraints({ advanced: [{ torch: !1 }] }), o.removeTrack(c), c.stop();\n return {\n type: \"stop\",\n data: {}\n };\n}\nasync function ot() {\n if (Te = Te.then((o) => {\n if (o.type === \"stop\" || o.type === \"failed\")\n return o;\n const {\n data: { videoEl: i, stream: c, isTorchOn: l }\n } = o;\n return nn(i, c, l);\n }), (await Te).type === \"start\")\n throw new Error(\"Something went wrong with the camera task queue (stop task).\");\n}\nconst Fi = /* @__PURE__ */ jt({\n __name: \"QrcodeStream\",\n props: {\n // in this file: don't use `props.constraints` directly. Use `constraintsCached`.\n /**\n * Passes an object with various camera configuration options.\n */\n constraints: {\n type: Object,\n default() {\n return { facingMode: \"environment\" };\n }\n },\n // in this file: don't use `props.formats` directly. Use `formatsCached`.\n /**\n * Passes formats that will be recognized during detection.\n */\n formats: {\n type: Array,\n default: () => [\"qr_code\"]\n },\n /**\n * Setting this prop to true freezes the camera. Set to false to resume.\n */\n paused: {\n type: Boolean,\n default: !1\n },\n /**\n * Enables or disables camera torch during detection.\n */\n torch: {\n type: Boolean,\n default: !1\n },\n /**\n * Defines callback function that will be responsible for drawing detected code tracking rectangle\n */\n track: {\n type: Function\n }\n },\n emits: [\"detect\", \"camera-on\", \"camera-off\", \"error\"],\n setup(r, { emit: o }) {\n const i = r, c = o, l = we(i.constraints), h = we(i.formats);\n We(\n () => i.constraints,\n (k, D) => {\n JSON.stringify(k) !== JSON.stringify(D) && (l.value = k);\n },\n { deep: !0 }\n ), We(\n () => i.formats,\n (k, D) => {\n JSON.stringify(k) !== JSON.stringify(D) && (h.value = k);\n },\n { deep: !0 }\n );\n const v = we(), g = we(), b = we(), p = we(!1), C = we(!1);\n vo(() => {\n C.value = !0;\n }), yo(() => {\n ot();\n });\n const S = Ut(() => ({\n torch: i.torch,\n constraints: l.value,\n shouldStream: C.value && !i.paused\n }));\n We(\n S,\n async (k) => {\n const D = b.value;\n ue(\n D !== void 0,\n \"cameraSettings watcher should never be triggered when component is not mounted. Thus video element should always be defined.\"\n );\n const M = v.value;\n ue(\n M !== void 0,\n \"cameraSettings watcher should never be triggered when component is not mounted. Thus canvas should always be defined.\"\n );\n const le = M.getContext(\"2d\");\n if (ue(le !== null, \"if cavnas is defined, canvas 2d context should also be non-null\"), k.shouldStream) {\n ot(), p.value = !1;\n try {\n const oe = await Ii(D, k);\n C.value ? (p.value = !0, c(\"camera-on\", oe)) : await ot();\n } catch (oe) {\n c(\"error\", oe);\n }\n } else\n M.width = D.videoWidth, M.height = D.videoHeight, le.drawImage(D, 0, 0, D.videoWidth, D.videoHeight), ot(), p.value = !1, c(\"camera-off\");\n },\n { deep: !0 }\n ), We(h, async (k) => {\n C.value && await Nr(k);\n });\n const $ = Ut(() => S.value.shouldStream && p.value);\n We($, (k) => {\n if (k) {\n ue(\n v.value !== void 0,\n \"shouldScan watcher should only be triggered when component is mounted. Thus pause frame canvas is defined\"\n ), F(v.value), ue(\n g.value !== void 0,\n \"shouldScan watcher should only be triggered when component is mounted. Thus tracking canvas is defined\"\n ), F(g.value);\n const D = () => i.track === void 0 ? 500 : 40;\n ue(\n b.value !== void 0,\n \"shouldScan watcher should only be triggered when component is mounted. Thus video element is defined\"\n ), ti(b.value, {\n detectHandler: (M) => c(\"detect\", M),\n formats: h.value,\n locateHandler: U,\n minDelay: D()\n });\n }\n });\n const F = (k) => {\n const D = k.getContext(\"2d\");\n ue(D !== null, \"canvas 2d context should always be non-null\"), D.clearRect(0, 0, k.width, k.height);\n }, U = (k) => {\n const D = g.value;\n ue(\n D !== void 0,\n \"onLocate handler should only be called when component is mounted. Thus tracking canvas is always defined.\"\n );\n const M = b.value;\n if (ue(\n M !== void 0,\n \"onLocate handler should only be called when component is mounted. Thus video element is always defined.\"\n ), k.length === 0 || i.track === void 0)\n F(D);\n else {\n const le = M.offsetWidth, oe = M.offsetHeight, be = M.videoWidth, Ce = M.videoHeight, Oe = Math.max(le / be, oe / Ce), De = be * Oe, Le = Ce * Oe, dt = De / be, ft = Le / Ce, ht = (le - De) / 2, pt = (oe - Le) / 2, Me = ({ x: de, y: Z }) => ({\n x: Math.floor(de * dt),\n y: Math.floor(Z * ft)\n }), te = ({ x: de, y: Z }) => ({\n x: Math.floor(de + ht),\n y: Math.floor(Z + pt)\n }), ve = k.map((de) => {\n const { boundingBox: Z, cornerPoints: vt } = de, { x: He, y: fe } = te(\n Me({\n x: Z.x,\n y: Z.y\n })\n ), { x: Be, y: yt } = Me({\n x: Z.width,\n y: Z.height\n });\n return {\n ...de,\n cornerPoints: vt.map((Ve) => te(Me(Ve))),\n boundingBox: DOMRectReadOnly.fromRect({ x: He, y: fe, width: Be, height: yt })\n };\n });\n D.width = M.offsetWidth, D.height = M.offsetHeight;\n const mt = D.getContext(\"2d\");\n i.track(ve, mt);\n }\n }, W = {\n width: \"100%\",\n height: \"100%\",\n position: \"relative\",\n // notice that we use z-index only once for the wrapper div.\n // If z-index is not defined, elements are stacked in the order they appear in the DOM.\n // The first element is at the very bottom and subsequent elements are added on top.\n \"z-index\": \"0\"\n }, R = {\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n top: \"0\",\n left: \"0\"\n }, A = {\n width: \"100%\",\n height: \"100%\",\n \"object-fit\": \"cover\"\n }, X = Ut(() => $.value ? A : {\n ...A,\n visibility: \"hidden\",\n position: \"absolute\"\n });\n return (k, D) => (Lt(), Ht(\"div\", { style: W }, [\n nt(\"video\", {\n ref_key: \"videoRef\",\n ref: b,\n style: go(X.value),\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\"\n }, null, 4),\n wo(nt(\"canvas\", {\n id: \"qrcode-stream-pause-frame\",\n ref_key: \"pauseFrameRef\",\n ref: v,\n style: A\n }, null, 512), [\n [bo, !$.value]\n ]),\n nt(\"canvas\", {\n id: \"qrcode-stream-tracking-layer\",\n ref_key: \"trackingLayerRef\",\n ref: g,\n style: R\n }, null, 512),\n nt(\"div\", { style: R }, [\n Dr(k.$slots, \"default\")\n ])\n ]));\n }\n}), Ui = /* @__PURE__ */ jt({\n __name: \"QrcodeCapture\",\n props: {\n formats: {\n type: Array,\n default: () => [\"qr_code\"]\n }\n },\n emits: [\"detect\"],\n setup(r, { emit: o }) {\n const i = r, c = o, l = (h) => {\n if (!(!(h.target instanceof HTMLInputElement) || !h.target.files))\n for (const v of Array.from(h.target.files))\n zr(v, i.formats).then((g) => {\n c(\"detect\", g);\n });\n };\n return (h, v) => (Lt(), Ht(\"input\", {\n onChange: l,\n type: \"file\",\n name: \"image\",\n accept: \"image/*\",\n capture: \"environment\",\n multiple: \"\"\n }, null, 32));\n }\n}), Wi = /* @__PURE__ */ jt({\n __name: \"QrcodeDropZone\",\n props: {\n formats: {\n type: Array,\n default: () => [\"qr_code\"]\n }\n },\n emits: [\"detect\", \"dragover\", \"error\"],\n setup(r, { emit: o }) {\n const i = r, c = o, l = async (g) => {\n try {\n const b = await g;\n c(\"detect\", b);\n } catch (b) {\n c(\"error\", b);\n }\n }, h = (g) => {\n c(\"dragover\", g);\n }, v = ({ dataTransfer: g }) => {\n if (!g)\n return;\n h(!1);\n const b = [...Array.from(g.files)], p = g.getData(\"text/uri-list\");\n b.forEach((C) => {\n l(zr(C, i.formats));\n }), p !== \"\" && l(ni(p, i.formats));\n };\n return (g, b) => (Lt(), Ht(\"div\", {\n onDrop: at(v, [\"prevent\", \"stop\"]),\n onDragenter: b[0] || (b[0] = at((p) => h(!0), [\"prevent\", \"stop\"])),\n onDragleave: b[1] || (b[1] = at((p) => h(!1), [\"prevent\", \"stop\"])),\n onDragover: b[2] || (b[2] = at(() => {\n }, [\"prevent\", \"stop\"]))\n }, [\n Dr(g.$slots, \"default\")\n ], 32));\n }\n});\nfunction ji(r) {\n r.component(\"qrcode-stream\", Fi), r.component(\"qrcode-capture\", Ui), r.component(\"qrcode-drop-zone\", Wi);\n}\nconst Bi = { install: ji };\nexport {\n Ui as QrcodeCapture,\n Wi as QrcodeDropZone,\n Fi as QrcodeStream,\n Bi as VueQrcodeReader,\n ji as install,\n Hi as setZXingModuleOverrides\n};\n"], + "mappings": "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", + "names": [] +} diff --git a/utils/date.ts b/utils/date.ts new file mode 100644 index 0000000..4332455 --- /dev/null +++ b/utils/date.ts @@ -0,0 +1,17 @@ +export function formatDate(time:Date|string,separator='-'){ + time=new Date(time); + let year=time.getFullYear(), + month=time.getMonth()+ 1, + date=time.getDate(); + return year+separator+(month<10?'0'+month:month)+separator+(date<10?'0'+date:date); +} + +//时间格式化 +export function formatTime(time:Date,separator1='-',seperator2=':'){ + time=new Date(time); + let date=formatDate(time,separator1), + hours=time.getHours(), + minutes=time.getMinutes(), + seconds=time.getSeconds(); + return date+' '+(hours<10?'0'+hours:hours)+seperator2+(minutes<10?'0'+minutes:minutes)+seperator2+(seconds<10?'0'+seconds:seconds); +} \ No newline at end of file