fedipod 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +123 -0
- package/architecture.svg +89 -0
- package/bin/fedipod.mjs +2303 -0
- package/cli.md +243 -0
- package/groups.md +85 -0
- package/gui.md +99 -0
- package/lib/account.mjs +87 -0
- package/lib/admin.mjs +1606 -0
- package/lib/atproto.mjs +310 -0
- package/lib/bskyfeed.mjs +166 -0
- package/lib/bskygroup.mjs +162 -0
- package/lib/c2s.mjs +305 -0
- package/lib/certs.mjs +265 -0
- package/lib/deliver.mjs +249 -0
- package/lib/directory.mjs +90 -0
- package/lib/embed.mjs +214 -0
- package/lib/export-collections.mjs +161 -0
- package/lib/front-core.mjs +322 -0
- package/lib/gateway-core.mjs +115 -0
- package/lib/guard.mjs +213 -0
- package/lib/home.mjs +161 -0
- package/lib/httpsig.mjs +109 -0
- package/lib/import.mjs +357 -0
- package/lib/intake.mjs +1710 -0
- package/lib/keys.mjs +139 -0
- package/lib/lease.mjs +190 -0
- package/lib/localapi.mjs +87 -0
- package/lib/mastoapi.mjs +1588 -0
- package/lib/migrate.mjs +127 -0
- package/lib/oidc-auth.mjs +53 -0
- package/lib/podrdf.mjs +132 -0
- package/lib/ports.mjs +27 -0
- package/lib/publisher.mjs +1003 -0
- package/lib/remote.mjs +303 -0
- package/lib/safefetch.mjs +235 -0
- package/lib/setup.mjs +262 -0
- package/lib/social.mjs +505 -0
- package/lib/storage.mjs +170 -0
- package/lib/store.mjs +470 -0
- package/lib/streaming.mjs +154 -0
- package/lib/tagfeed.mjs +158 -0
- package/lib/ua.mjs +29 -0
- package/lib/update.mjs +91 -0
- package/lib/webpush.mjs +98 -0
- package/lib/wire.mjs +762 -0
- package/package.json +60 -0
- package/phanpy/dist/404.html +40 -0
- package/phanpy/dist/_headers +2 -0
- package/phanpy/dist/apple-touch-icon.png +0 -0
- package/phanpy/dist/assets/ICONS-DIPJeU0C.js +2 -0
- package/phanpy/dist/assets/ICONS-DIPJeU0C.js.map +1 -0
- package/phanpy/dist/assets/ScheduledAtField-D-Abfo4J.js +183 -0
- package/phanpy/dist/assets/ScheduledAtField-D-Abfo4J.js.map +1 -0
- package/phanpy/dist/assets/Temml-CCjoacWt.woff2 +0 -0
- package/phanpy/dist/assets/__vite-browser-external-C7iut881.js +2 -0
- package/phanpy/dist/assets/__vite-browser-external-C7iut881.js.map +1 -0
- package/phanpy/dist/assets/boosts-carousel-BiOaNdMT.jpg +0 -0
- package/phanpy/dist/assets/catch-up-O5q5C75Z.png +0 -0
- package/phanpy/dist/assets/chunk-aKtaBQYM.js +1 -0
- package/phanpy/dist/assets/compose-CFEx7wb4.js +2 -0
- package/phanpy/dist/assets/compose-CFEx7wb4.js.map +1 -0
- package/phanpy/dist/assets/compose-ZJN5xSb4.js +35 -0
- package/phanpy/dist/assets/compose-ZJN5xSb4.js.map +1 -0
- package/phanpy/dist/assets/debug.module-YFQgwnIr.js +52 -0
- package/phanpy/dist/assets/debug.module-YFQgwnIr.js.map +1 -0
- package/phanpy/dist/assets/dom-p1YcJ5Rw.js +2 -0
- package/phanpy/dist/assets/dom-p1YcJ5Rw.js.map +1 -0
- package/phanpy/dist/assets/home-mobile-dark@2x-Dc-J8-SM.png +0 -0
- package/phanpy/dist/assets/home-mobile-light@2x-Bd3fod8m.png +0 -0
- package/phanpy/dist/assets/home-tablet-dark@2x-BgcNI8le.png +0 -0
- package/phanpy/dist/assets/home-tablet-light@2x-BW2RV9T6.png +0 -0
- package/phanpy/dist/assets/icons/add-circle-line-WD0mwORD.js +1 -0
- package/phanpy/dist/assets/icons/alert-line-CpFUMf9s.js +1 -0
- package/phanpy/dist/assets/icons/android-2-line-Bzxnrd3S.js +1 -0
- package/phanpy/dist/assets/icons/announcement-line-5nwaJFJm.js +1 -0
- package/phanpy/dist/assets/icons/arrow-down-circle-line-a7Id9-Iv.js +1 -0
- package/phanpy/dist/assets/icons/arrow-down-line-B8uzXzq6.js +1 -0
- package/phanpy/dist/assets/icons/arrow-left-line-CGrGT9C-.js +1 -0
- package/phanpy/dist/assets/icons/arrow-right-line-CE-HERfX.js +1 -0
- package/phanpy/dist/assets/icons/arrow-to-up-line-CvdQjmcy.js +1 -0
- package/phanpy/dist/assets/icons/arrow-up-circle-line-DEparSNF.js +1 -0
- package/phanpy/dist/assets/icons/arrow-up-line-C7yBeugc.js +1 -0
- package/phanpy/dist/assets/icons/arrows-right-line-BtbXmJGP.js +1 -0
- package/phanpy/dist/assets/icons/at-line-CF66Bznk.js +1 -0
- package/phanpy/dist/assets/icons/attachment-line-BY8It-l9.js +1 -0
- package/phanpy/dist/assets/icons/blockquote-line-BS6pU_hm.js +1 -0
- package/phanpy/dist/assets/icons/board-line-C0UWXyA6.js +1 -0
- package/phanpy/dist/assets/icons/bookmark-line-1CtX5JLF.js +1 -0
- package/phanpy/dist/assets/icons/building-5-line-Dd59MzbO.js +1 -0
- package/phanpy/dist/assets/icons/bus-2-line-6_dvA0GG.js +1 -0
- package/phanpy/dist/assets/icons/calendar-day-line-Crpl_fmu.js +1 -0
- package/phanpy/dist/assets/icons/calendar-month-line-vommts2C.js +1 -0
- package/phanpy/dist/assets/icons/calendar-time-add-line-BU_DTlQk.js +1 -0
- package/phanpy/dist/assets/icons/camera-line-Cv69MEei.js +1 -0
- package/phanpy/dist/assets/icons/celebrate-line-B8DvIoi0.js +1 -0
- package/phanpy/dist/assets/icons/chart-bar-line-FK-QOmtF.js +1 -0
- package/phanpy/dist/assets/icons/chart-line-line-BGcJAFWw.js +1 -0
- package/phanpy/dist/assets/icons/chat-3-line-YFK2-hwz.js +1 -0
- package/phanpy/dist/assets/icons/check-circle-line-DsAxFr5-.js +1 -0
- package/phanpy/dist/assets/icons/clipboard-line-BBp364gJ.js +1 -0
- package/phanpy/dist/assets/icons/close-circle-line-CICdiuGz.js +1 -0
- package/phanpy/dist/assets/icons/close-line-DYrFWcjv.js +1 -0
- package/phanpy/dist/assets/icons/cloud-line-tiQAbah8.js +1 -0
- package/phanpy/dist/assets/icons/code-line-fAl8iiV3.js +1 -0
- package/phanpy/dist/assets/icons/comment-2-line-CR3g7WeB.js +1 -0
- package/phanpy/dist/assets/icons/copy-2-line-CLW69yF5.js +1 -0
- package/phanpy/dist/assets/icons/delete-2-line-B8xmbr4n.js +1 -0
- package/phanpy/dist/assets/icons/document-3-line-DBGNhAg2.js +1 -0
- package/phanpy/dist/assets/icons/document-line-C7mb9sb7.js +1 -0
- package/phanpy/dist/assets/icons/down-line-BGqSSThd.js +1 -0
- package/phanpy/dist/assets/icons/edit-4-line-DcgGaEhx.js +1 -0
- package/phanpy/dist/assets/icons/emoji-2-line-D8YgnM-y.js +1 -0
- package/phanpy/dist/assets/icons/exit-line-Dc07BS-x.js +1 -0
- package/phanpy/dist/assets/icons/external-link-line-BvpSkmjO.js +1 -0
- package/phanpy/dist/assets/icons/eye-2-line-CiWXx-f_.js +1 -0
- package/phanpy/dist/assets/icons/eye-close-line-BgTaSJ4P.js +1 -0
- package/phanpy/dist/assets/icons/filter-2-line-B_mR2usy.js +1 -0
- package/phanpy/dist/assets/icons/filter-line-C_nm-3cU.js +1 -0
- package/phanpy/dist/assets/icons/flag-1-line-C2HB05I0.js +1 -0
- package/phanpy/dist/assets/icons/forbid-circle-line-D3LTT9yd.js +1 -0
- package/phanpy/dist/assets/icons/formula-line-DLrt2d6j.js +1 -0
- package/phanpy/dist/assets/icons/grid-line-CgUmEikf.js +1 -0
- package/phanpy/dist/assets/icons/group-line-C5fnX0wU.js +1 -0
- package/phanpy/dist/assets/icons/hand-finger-2-line-BGgxbuL9.js +1 -0
- package/phanpy/dist/assets/icons/hashtag-line-CyTEEXBb.js +1 -0
- package/phanpy/dist/assets/icons/heart-crack-line-BZddbO2C.js +1 -0
- package/phanpy/dist/assets/icons/heart-line-CJ7K47J4.js +1 -0
- package/phanpy/dist/assets/icons/history-2-line-kWWvFzqv.js +1 -0
- package/phanpy/dist/assets/icons/history-line-bGQiwbTH.js +1 -0
- package/phanpy/dist/assets/icons/home-3-line-fRU1zeLG.js +1 -0
- package/phanpy/dist/assets/icons/information-line-iNk6-sOY.js +1 -0
- package/phanpy/dist/assets/icons/keyboard-line-DsCyuQNz.js +1 -0
- package/phanpy/dist/assets/icons/layout-4-line-CZkOX52Z.js +1 -0
- package/phanpy/dist/assets/icons/layout-5-line-B_znt5wO.js +1 -0
- package/phanpy/dist/assets/icons/left-line-eUw0tya4.js +1 -0
- package/phanpy/dist/assets/icons/lightning-line-DaKoDdix.js +1 -0
- package/phanpy/dist/assets/icons/link-2-line-DCqLmMA7.js +1 -0
- package/phanpy/dist/assets/icons/list-check-line-BAxosBh9.js +1 -0
- package/phanpy/dist/assets/icons/lock-line-CPoaXeUW.js +1 -0
- package/phanpy/dist/assets/icons/mail-line-B0P8aa1L.js +1 -0
- package/phanpy/dist/assets/icons/moon-line-CEqNAToP.js +1 -0
- package/phanpy/dist/assets/icons/more-1-fill-Dw2e5xab.js +1 -0
- package/phanpy/dist/assets/icons/more-3-line-BIiVjYTz.js +1 -0
- package/phanpy/dist/assets/icons/notification-line-BZZq2Gtu.js +1 -0
- package/phanpy/dist/assets/icons/pencil-line-CKh8-A1v.js +1 -0
- package/phanpy/dist/assets/icons/photo-album-line-Bnfg2u40.js +1 -0
- package/phanpy/dist/assets/icons/pin-line-DpTolyhs.js +1 -0
- package/phanpy/dist/assets/icons/play-fill-B0-G_8lX.js +1 -0
- package/phanpy/dist/assets/icons/qrcode-2-line-B6SPCaHn.js +1 -0
- package/phanpy/dist/assets/icons/quill-pen-line-B6LUrnCP.js +1 -0
- package/phanpy/dist/assets/icons/quote-left-fill-hQZ1cj_6.js +1 -0
- package/phanpy/dist/assets/icons/radar-line-CKyroTth.js +1 -0
- package/phanpy/dist/assets/icons/react-line-CoIKhhtK.js +1 -0
- package/phanpy/dist/assets/icons/refresh-2-line-D0mTF97S.js +1 -0
- package/phanpy/dist/assets/icons/right-line-B3KWJaqc.js +1 -0
- package/phanpy/dist/assets/icons/rocket-line-4KZl537D.js +1 -0
- package/phanpy/dist/assets/icons/round-fill-C69NTrZ0.js +1 -0
- package/phanpy/dist/assets/icons/round-line-B9k_1uo-.js +1 -0
- package/phanpy/dist/assets/icons/route-line-B28ReHcE.js +1 -0
- package/phanpy/dist/assets/icons/rows-4-line-CrBniagM.js +1 -0
- package/phanpy/dist/assets/icons/scan-line-DSf74YdP.js +1 -0
- package/phanpy/dist/assets/icons/search-2-line-B6geIU1z.js +1 -0
- package/phanpy/dist/assets/icons/settings-3-line-azJwK47w.js +1 -0
- package/phanpy/dist/assets/icons/settings-6-line-C_5zc5YR.js +1 -0
- package/phanpy/dist/assets/icons/share-2-line-D5MxWjrm.js +1 -0
- package/phanpy/dist/assets/icons/share-forward-line-Cp61fZzZ.js +1 -0
- package/phanpy/dist/assets/icons/sparkles-2-line-DYYyXTaW.js +1 -0
- package/phanpy/dist/assets/icons/sparkles-line-C2hY1s6I.js +1 -0
- package/phanpy/dist/assets/icons/time-line-BF3eet1v.js +1 -0
- package/phanpy/dist/assets/icons/transfer-4-line-oisfvTBw.js +1 -0
- package/phanpy/dist/assets/icons/translate-line-BFWol2Ce.js +1 -0
- package/phanpy/dist/assets/icons/unlock-line-X_x5vwv3.js +1 -0
- package/phanpy/dist/assets/icons/upload-3-line-DgzwUJeW.js +1 -0
- package/phanpy/dist/assets/icons/user-4-line-BVSynZCp.js +1 -0
- package/phanpy/dist/assets/icons/user-add-2-line-BlGS5Q8q.js +1 -0
- package/phanpy/dist/assets/icons/user-add-line-BbXdHG4z.js +1 -0
- package/phanpy/dist/assets/icons/user-edit-line-BFAHOV0X.js +1 -0
- package/phanpy/dist/assets/icons/user-follow-line-BXux0wSd.js +1 -0
- package/phanpy/dist/assets/icons/user-star-line-DdYlpHLU.js +1 -0
- package/phanpy/dist/assets/icons/user-warning-line-Cj43j0_E.js +1 -0
- package/phanpy/dist/assets/icons/user-x-line-DIDgNlPH.js +1 -0
- package/phanpy/dist/assets/icons/volume-line-Bs390KQt.js +1 -0
- package/phanpy/dist/assets/icons/volume-mute-line-DzlzIqFZ.js +1 -0
- package/phanpy/dist/assets/icons/walk-line-yNXfB-md.js +1 -0
- package/phanpy/dist/assets/icons/world-2-line-CenkGIwj.js +1 -0
- package/phanpy/dist/assets/icons/zoom-in-line-CaENUphf.js +1 -0
- package/phanpy/dist/assets/icons/zoom-out-line-BDNk0EWo.js +1 -0
- package/phanpy/dist/assets/instances-BNPptnn-.json +333 -0
- package/phanpy/dist/assets/locales/ar-SA-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/ca-ES-DHRW86Tz.js +1 -0
- package/phanpy/dist/assets/locales/cs-CZ-CKoqEuA1.js +1 -0
- package/phanpy/dist/assets/locales/de-DE-ByRPMRFy.js +1 -0
- package/phanpy/dist/assets/locales/eo-UY-CPC7wLCS.js +1 -0
- package/phanpy/dist/assets/locales/es-ES-dJa0Fd9t.js +1 -0
- package/phanpy/dist/assets/locales/eu-ES-C3djlPR2.js +1 -0
- package/phanpy/dist/assets/locales/fa-IR-DTT490Ck.js +1 -0
- package/phanpy/dist/assets/locales/fi-FI-B23MCPuz.js +1 -0
- package/phanpy/dist/assets/locales/fr-FR-BcaQsO5C.js +1 -0
- package/phanpy/dist/assets/locales/gl-ES-BR-CVKBN.js +1 -0
- package/phanpy/dist/assets/locales/he-IL-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/hu-HU-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/it-IT-C1136UFV.js +1 -0
- package/phanpy/dist/assets/locales/ja-JP-CRZmRAhD.js +1 -0
- package/phanpy/dist/assets/locales/kab-Cz8xH_TT.js +1 -0
- package/phanpy/dist/assets/locales/ko-KR-CG9UiY4o.js +1 -0
- package/phanpy/dist/assets/locales/lt-LT-CJcI6sHZ.js +1 -0
- package/phanpy/dist/assets/locales/nb-NO-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/nl-NL-DxN4Yc1t.js +1 -0
- package/phanpy/dist/assets/locales/oc-FR-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/pl-PL-DkwGXf6P.js +1 -0
- package/phanpy/dist/assets/locales/pseudo-LOCALE-CQ4XxkQ0.js +1 -0
- package/phanpy/dist/assets/locales/pt-BR-nGL0HdFS.js +1 -0
- package/phanpy/dist/assets/locales/pt-PT-Cp17aj2z.js +1 -0
- package/phanpy/dist/assets/locales/ru-RU-0Y8cIoaK.js +1 -0
- package/phanpy/dist/assets/locales/th-TH-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/tok-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/tr-TR-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/locales/uk-UA-C5E3dFBf.js +1 -0
- package/phanpy/dist/assets/locales/zh-CN-BHJi7_et.js +1 -0
- package/phanpy/dist/assets/locales/zh-TW-CfheRbCu.js +1 -0
- package/phanpy/dist/assets/main-BdqNbG-a.js +26 -0
- package/phanpy/dist/assets/main-BdqNbG-a.js.map +1 -0
- package/phanpy/dist/assets/mock-home-DGhR__He.js +2 -0
- package/phanpy/dist/assets/mock-home-DGhR__He.js.map +1 -0
- package/phanpy/dist/assets/multi-column-ROck0NVt.jpg +0 -0
- package/phanpy/dist/assets/multi-hashtag-timeline-DH5INVHi.jpg +0 -0
- package/phanpy/dist/assets/nested-comments-thread-hv59kZLc.jpg +0 -0
- package/phanpy/dist/assets/polyfill-force-H8sUkLGp.js +2 -0
- package/phanpy/dist/assets/polyfill-force-H8sUkLGp.js.map +1 -0
- package/phanpy/dist/assets/pwa-viewport-ogKbF51K.js +20 -0
- package/phanpy/dist/assets/pwa-viewport-ogKbF51K.js.map +1 -0
- package/phanpy/dist/assets/style-B1iLPTPR.css +2 -0
- package/phanpy/dist/assets/temml-DuyIQMei.js +97 -0
- package/phanpy/dist/assets/temml-DuyIQMei.js.map +1 -0
- package/phanpy/dist/assets/tinyld.light.node-DtbBhLYC.js +2 -0
- package/phanpy/dist/assets/tinyld.light.node-DtbBhLYC.js.map +1 -0
- package/phanpy/dist/assets/year-in-posts-B2lywqdx.png +0 -0
- package/phanpy/dist/assets/year-in-posts-DJv_star.js +3 -0
- package/phanpy/dist/assets/year-in-posts-DJv_star.js.map +1 -0
- package/phanpy/dist/compose/index.html +20 -0
- package/phanpy/dist/favicon.ico +0 -0
- package/phanpy/dist/index.html +73 -0
- package/phanpy/dist/logo-192.png +0 -0
- package/phanpy/dist/logo-512.png +0 -0
- package/phanpy/dist/logo-badge-72.png +0 -0
- package/phanpy/dist/logo-maskable-512.png +0 -0
- package/phanpy/dist/logo-monochrome-512.png +0 -0
- package/phanpy/dist/logo-monochrome-maskable-512.png +0 -0
- package/phanpy/dist/manifest.webmanifest +1 -0
- package/phanpy/dist/og-image-2.jpg +0 -0
- package/phanpy/dist/og-image.png +0 -0
- package/phanpy/dist/robots.txt +2 -0
- package/phanpy/dist/sw.js +25 -0
- package/phanpy/dist/version.json +1 -0
- package/run-agent.mjs +805 -0
- package/scripts/build-dist.mjs +37 -0
- package/scripts/verify-ui.mjs +60 -0
- package/ui/README.md +23 -0
- package/vendor/gate.cjs +132 -0
- package/vendor/idp-grant.cjs +394 -0
- package/vendor/jfetch.cjs +16 -0
- package/web/admin/admin.js +958 -0
- package/web/admin/bar.css +64 -0
- package/web/admin/bar.js +61 -0
- package/web/admin/client/client.js +66 -0
- package/web/admin/client/index.html +42 -0
- package/web/admin/index.html +493 -0
- package/web/admin/setup/index.html +172 -0
- package/web/admin/setup/setup.js +268 -0
- package/web/admin/window.css +55 -0
- package/web/admin/window.js +136 -0
- package/web/front/install.sh +69 -0
- package/web/front/new-account.html +424 -0
- package/web/front/run.html +138 -0
- package/web/front/solid-client-authn.bundle.js +2 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import{$t as e,Xt as t,rn as n}from"./pwa-viewport-ogKbF51K.js";var r;(r=typeof globalThis<`u`?globalThis:typeof window<`u`?window:void 0)!=null&&r.__PREACT_DEVTOOLS__&&r.__PREACT_DEVTOOLS__.attachPreact(`10.29.2`,n,{Fragment:e,Component:t});var i={};function a(){i={}}function o(t){return t.type===e?`Fragment`:typeof t.type==`function`?t.type.displayName||t.type.name:typeof t.type==`string`?t.type:`#text`}var s=[],c=[];function l(){return s.length>0?s[s.length-1]:null}var u=!0;function d(t){return typeof t.type==`function`&&t.type!=e}function f(e){for(var t=[e],n=e;n.__o!=null;)t.push(n.__o),n=n.__o;return t.reduce(function(e,t){e+=` in `+o(t);var n=t.__source;return n?e+=` (at `+n.fileName+`:`+n.lineNumber+`)`:u&&console.warn(`Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.`),u=!1,e+`
|
|
2
|
+
`},``)}var p=typeof WeakMap==`function`;function m(e){var t=[];return e.__k&&e.__k.forEach(function(e){e&&typeof e.type==`function`?t.push.apply(t,m(e)):e&&typeof e.type==`string`&&t.push(e.type)}),t}function h(e){return e?typeof e.type==`function`?e.__==null?e.__e!=null&&e.__e.parentNode!=null?e.__e.parentNode.localName:``:h(e.__):e.type:``}var g=t.prototype.setState;function _(e){return e===`table`||e===`tfoot`||e===`tbody`||e===`thead`||e===`td`||e===`tr`||e===`th`}t.prototype.setState=function(e,t){return this.__v==null&&this.state==null&&console.warn(`Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.
|
|
3
|
+
|
|
4
|
+
`+f(l())),g.call(this,e,t)};var v=/^(address|article|aside|blockquote|details|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|main|menu|nav|ol|p|pre|search|section|table|ul)$/,y=t.prototype.forceUpdate;function b(e){var t=e.props,n=o(e),r=``;for(var i in t)if(t.hasOwnProperty(i)&&i!==`children`){var a=t[i];typeof a==`function`&&(a=`function `+(a.displayName||a.name)+`() {}`),a=Object(a)!==a||a.toString?a+``:Object.prototype.toString.call(a),r+=` `+i+`=`+JSON.stringify(a)}var s=t.children;return`<`+n+r+(s&&s.length?`>..</`+n+`>`:` />`)}t.prototype.forceUpdate=function(e){return this.__v==null?console.warn(`Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.
|
|
5
|
+
|
|
6
|
+
`+f(l())):this.__P??console.warn(`Can't call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
|
|
7
|
+
|
|
8
|
+
`+f(this.__v)),y.call(this,e)},n.__m=function(e,t){var n=e.type,r=t.map(function(e){return e&&e.localName}).filter(Boolean);console.error(`Expected a DOM node of type "`+n+`" but found "`+r.join(`, `)+`" as available DOM-node(s), this is caused by the SSR'd HTML containing different DOM-nodes compared to the hydrated one.
|
|
9
|
+
|
|
10
|
+
`+f(e))},function(){(function(){var e=n.__b,t=n.diffed,r=n.__,i=n.vnode,a=n.__r;n.diffed=function(e){d(e)&&c.pop(),s.pop(),t&&t(e)},n.__b=function(t){d(t)&&s.push(t),e&&e(t)},n.__=function(e,t){c=[],r&&r(e,t)},n.vnode=function(e){e.__o=c.length>0?c[c.length-1]:null,i&&i(e)},n.__r=function(e){d(e)&&c.push(e),a&&a(e)}})();var e=!1,t=n.__b,r=n.diffed,a=n.vnode,l=n.__r,u=n.__e,g=n.__,y=n.__h,x=p?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null,S=[];n.__e=function(e,t,n,r){if(t&&t.__c&&typeof e.then==`function`){var i=e;e=Error(`Missing Suspense. The throwing component was: `+o(t));for(var a=t;a;a=a.__)if(a.__c&&a.__c.__c){e=i;break}if(e instanceof Error)throw e}try{(r||={}).componentStack=f(t),u(e,t,n,r),typeof e.then!=`function`&&setTimeout(function(){throw e})}catch(e){throw e}},n.__=function(e,t){if(!t)throw Error(`Undefined parent passed to render(), this is the second argument.
|
|
11
|
+
Check if the element is available in the DOM/has the correct id.`);var n;switch(t.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(e);throw Error(`Expected a valid HTML node as a second argument to render. Received `+t+` instead: render(<`+r+` />, `+t+`);`)}g&&g(e,t)},n.__b=function(n){var r=n.type;if(e=!0,r===void 0)throw Error(`Undefined component passed to createElement()
|
|
12
|
+
|
|
13
|
+
You likely forgot to export your component or might have mixed up default and named imports`+b(n)+`
|
|
14
|
+
|
|
15
|
+
`+f(n));if(typeof r==`object`&&r)throw r.__k!==void 0&&r.__e!==void 0?Error(`Invalid type passed to createElement(): `+r+`
|
|
16
|
+
|
|
17
|
+
Did you accidentally pass a JSX literal as JSX twice?
|
|
18
|
+
|
|
19
|
+
let My`+o(n)+` = `+b(r)+`;
|
|
20
|
+
let vnode = <My`+o(n)+` />;
|
|
21
|
+
|
|
22
|
+
This usually happens when you export a JSX literal and not the component.
|
|
23
|
+
|
|
24
|
+
`+f(n)):Error(`Invalid type passed to createElement(): `+(Array.isArray(r)?`array`:r));if(n.ref!==void 0&&typeof n.ref!=`function`&&typeof n.ref!=`object`&&!(`$$typeof`in n))throw Error(`Component's "ref" property should be a function, or an object created by createRef(), but got [`+typeof n.ref+`] instead
|
|
25
|
+
`+b(n)+`
|
|
26
|
+
|
|
27
|
+
`+f(n));if(typeof n.type==`string`){for(var a in n.props)if(a[0]===`o`&&a[1]===`n`&&typeof n.props[a]!=`function`&&n.props[a]!=null)throw Error(`Component's "`+a+`" property should be a function, but got [`+typeof n.props[a]+`] instead
|
|
28
|
+
`+b(n)+`
|
|
29
|
+
|
|
30
|
+
`+f(n))}if(typeof n.type==`function`&&n.type.propTypes){if(n.type.displayName===`Lazy`&&x&&!x.lazyPropTypes.has(n.type)){var s=`PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. `;try{var c=n.type();x.lazyPropTypes.set(n.type,!0),console.warn(s+`Component wrapped in lazy() is `+o(c))}catch{console.warn(s+`We will log the wrapped component's name once it is loaded.`)}}var l=n.props;n.type.__f&&delete(l=function(e,t){for(var n in t)e[n]=t[n];return e}({},l)).ref,function(e,t,n,r,a){Object.keys(e).forEach(function(n){var o;try{o=e[n](t,n,r,`prop`,null,`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`)}catch(e){o=e}o&&!(o.message in i)&&(i[o.message]=!0,console.error(`Failed prop type: `+o.message+(a&&`
|
|
31
|
+
`+a()||``)))})}(n.type.propTypes,l,0,o(n),function(){return f(n)})}t&&t(n)};var C,w=0;n.__r=function(t){l&&l(t),e=!0;var n=t.__c;if(n===C?w++:w=1,w>=25)throw Error(`Too many re-renders. This is limited to prevent an infinite loop which may lock up your browser. The component causing this is: `+o(t));C=n},n.__h=function(t,n,r){if(!t||!e)throw Error(`Hook can only be invoked from render methods.`);y&&y(t,n,r)};var T=function(e,t){return{get:function(){var n=`get`+e+t;S&&S.indexOf(n)<0&&(S.push(n),console.warn(`getting vnode.`+e+` is deprecated, `+t))},set:function(){var n=`set`+e+t;S&&S.indexOf(n)<0&&(S.push(n),console.warn(`setting vnode.`+e+` is not allowed, `+t))}}},E={nodeName:T(`nodeName`,`use vnode.type`),attributes:T(`attributes`,`use vnode.props`),children:T(`children`,`use vnode.props.children`)},D=Object.create({},E);n.vnode=function(e){var t=e.props;if(e.type!==null&&t!=null&&(`__source`in t||`__self`in t)){var n=e.props={};for(var r in t){var i=t[r];r===`__source`?e.__source=i:r===`__self`?e.__self=i:n[r]=i}}e.__proto__=D,a&&a(e)},n.diffed=function(t){var n,i=t.type,a=t.__;if(t.__k&&t.__k.forEach(function(e){if(typeof e==`object`&&e&&e.type===void 0){var n=Object.keys(e).join(`,`);throw Error(`Objects are not valid as a child. Encountered an object with the keys {`+n+`}.
|
|
32
|
+
|
|
33
|
+
`+f(t))}}),t.__c===C&&(w=0),typeof i==`string`&&(_(i)||i===`p`||i===`a`||i===`button`)){var s=h(a);if(s!==``&&_(i))i===`table`&&s!==`td`&&_(s)?console.error(`Improper nesting of table. Your <table> should not have a table-node parent.`+b(t)+`
|
|
34
|
+
|
|
35
|
+
`+f(t)):i!==`thead`&&i!==`tfoot`&&i!==`tbody`||s===`table`?i===`tr`&&s!==`thead`&&s!==`tfoot`&&s!==`tbody`?console.error(`Improper nesting of table. Your <tr> should have a <thead/tbody/tfoot> parent.`+b(t)+`
|
|
36
|
+
|
|
37
|
+
`+f(t)):i===`td`&&s!==`tr`?console.error(`Improper nesting of table. Your <td> should have a <tr> parent.`+b(t)+`
|
|
38
|
+
|
|
39
|
+
`+f(t)):i===`th`&&s!==`tr`&&console.error(`Improper nesting of table. Your <th> should have a <tr>.`+b(t)+`
|
|
40
|
+
|
|
41
|
+
`+f(t)):console.error(`Improper nesting of table. Your <thead/tbody/tfoot> should have a <table> parent.`+b(t)+`
|
|
42
|
+
|
|
43
|
+
`+f(t));else if(i===`p`){var c=m(t).filter(function(e){return v.test(e)});c.length&&console.error(`Improper nesting of paragraph. Your <p> should not have `+c.join(`, `)+` as child-elements.`+b(t)+`
|
|
44
|
+
|
|
45
|
+
`+f(t))}else i!==`a`&&i!==`button`||m(t).indexOf(i)!==-1&&console.error(`Improper nesting of interactive content. Your <`+i+`> should not have other `+(i===`a`?`anchor`:`button`)+` tags as child-elements.`+b(t)+`
|
|
46
|
+
|
|
47
|
+
`+f(t))}if(e=!1,r&&r(t),t.__k!=null)for(var l=[],u=0;u<t.__k.length;u++){var d=t.__k[u];if(d&&d.key!=null){var p=d.key;if(l.indexOf(p)!==-1){console.error(`Following component has two or more children with the same key attribute: "`+p+`". This may cause glitches and misbehavior in rendering process. Component:
|
|
48
|
+
|
|
49
|
+
`+b(t)+`
|
|
50
|
+
|
|
51
|
+
`+f(t));break}l.push(p)}}if(t.__c!=null&&t.__c.__H!=null){var g=t.__c.__H.__;if(g)for(var y=0;y<g.length;y+=1){var x=g[y];if(x.__H){for(var S=0;S<x.__H.length;S++)if((n=x.__H[S])!=n){var T=o(t);console.warn(`Invalid argument passed to hook. Hooks should not be called with NaN in the dependency array. Hook index `+y+` in component `+T+` was called with NaN.`)}}}}}}();export{l as getCurrentVNode,o as getDisplayName,f as getOwnerStack,a as resetPropWarnings};
|
|
52
|
+
//# sourceMappingURL=debug.module-YFQgwnIr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.module-YFQgwnIr.js","names":["i","t","n","o","e","n","o","e"],"sources":["../../node_modules/preact/devtools/dist/devtools.module.js","../../node_modules/preact/debug/dist/debug.module.js"],"sourcesContent":["import{options as n,Fragment as o,Component as e}from\"preact\";var i;function t(o,e){return n.__a&&n.__a(e),o}null!=(i=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:void 0)&&i.__PREACT_DEVTOOLS__&&i.__PREACT_DEVTOOLS__.attachPreact(\"10.29.2\",n,{Fragment:o,Component:e});export{t as addHookName};\n//# sourceMappingURL=devtools.module.js.map\n","import{Fragment as n,options as e,Component as o}from\"preact\";import\"preact/devtools\";var t={};function r(){t={}}function a(e){return e.type===n?\"Fragment\":\"function\"==typeof e.type?e.type.displayName||e.type.name:\"string\"==typeof e.type?e.type:\"#text\"}var i=[],s=[];function c(){return i.length>0?i[i.length-1]:null}var l=!0;function u(e){return\"function\"==typeof e.type&&e.type!=n}function f(n){for(var e=[n],o=n;null!=o.__o;)e.push(o.__o),o=o.__o;return e.reduce(function(n,e){n+=\" in \"+a(e);var o=e.__source;return o?n+=\" (at \"+o.fileName+\":\"+o.lineNumber+\")\":l&&console.warn(\"Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.\"),l=!1,n+\"\\n\"},\"\")}var d=\"function\"==typeof WeakMap;function p(n){var e=[];return n.__k?(n.__k.forEach(function(n){n&&\"function\"==typeof n.type?e.push.apply(e,p(n)):n&&\"string\"==typeof n.type&&e.push(n.type)}),e):e}function h(n){return n?\"function\"==typeof n.type?null==n.__?null!=n.__e&&null!=n.__e.parentNode?n.__e.parentNode.localName:\"\":h(n.__):n.type:\"\"}var v=o.prototype.setState;function y(n){return\"table\"===n||\"tfoot\"===n||\"tbody\"===n||\"thead\"===n||\"td\"===n||\"tr\"===n||\"th\"===n}o.prototype.setState=function(n,e){return null==this.__v&&null==this.state&&console.warn('Calling \"this.setState\" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set \"this.state = {}\" directly.\\n\\n'+f(c())),v.call(this,n,e)};var m=/^(address|article|aside|blockquote|details|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|main|menu|nav|ol|p|pre|search|section|table|ul)$/,b=o.prototype.forceUpdate;function w(n){var e=n.props,o=a(n),t=\"\";for(var r in e)if(e.hasOwnProperty(r)&&\"children\"!==r){var i=e[r];\"function\"==typeof i&&(i=\"function \"+(i.displayName||i.name)+\"() {}\"),i=Object(i)!==i||i.toString?i+\"\":Object.prototype.toString.call(i),t+=\" \"+r+\"=\"+JSON.stringify(i)}var s=e.children;return\"<\"+o+t+(s&&s.length?\">..</\"+o+\">\":\" />\")}o.prototype.forceUpdate=function(n){return null==this.__v?console.warn('Calling \"this.forceUpdate\" inside the constructor of a component is a no-op and might be a bug in your application.\\n\\n'+f(c())):null==this.__P&&console.warn('Can\\'t call \"this.forceUpdate\" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\\n\\n'+f(this.__v)),b.call(this,n)},e.__m=function(n,e){var o=n.type,t=e.map(function(n){return n&&n.localName}).filter(Boolean);console.error('Expected a DOM node of type \"'+o+'\" but found \"'+t.join(\", \")+\"\\\" as available DOM-node(s), this is caused by the SSR'd HTML containing different DOM-nodes compared to the hydrated one.\\n\\n\"+f(n))},function(){!function(){var n=e.__b,o=e.diffed,t=e.__,r=e.vnode,a=e.__r;e.diffed=function(n){u(n)&&s.pop(),i.pop(),o&&o(n)},e.__b=function(e){u(e)&&i.push(e),n&&n(e)},e.__=function(n,e){s=[],t&&t(n,e)},e.vnode=function(n){n.__o=s.length>0?s[s.length-1]:null,r&&r(n)},e.__r=function(n){u(n)&&s.push(n),a&&a(n)}}();var n=!1,o=e.__b,r=e.diffed,c=e.vnode,l=e.__r,v=e.__e,b=e.__,g=e.__h,E=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null,k=[];e.__e=function(n,e,o,t){if(e&&e.__c&&\"function\"==typeof n.then){var r=n;n=new Error(\"Missing Suspense. The throwing component was: \"+a(e));for(var i=e;i;i=i.__)if(i.__c&&i.__c.__c){n=r;break}if(n instanceof Error)throw n}try{(t=t||{}).componentStack=f(e),v(n,e,o,t),\"function\"!=typeof n.then&&setTimeout(function(){throw n})}catch(n){throw n}},e.__=function(n,e){if(!e)throw new Error(\"Undefined parent passed to render(), this is the second argument.\\nCheck if the element is available in the DOM/has the correct id.\");var o;switch(e.nodeType){case 1:case 11:case 9:o=!0;break;default:o=!1}if(!o){var t=a(n);throw new Error(\"Expected a valid HTML node as a second argument to render.\\tReceived \"+e+\" instead: render(<\"+t+\" />, \"+e+\");\")}b&&b(n,e)},e.__b=function(e){var r=e.type;if(n=!0,void 0===r)throw new Error(\"Undefined component passed to createElement()\\n\\nYou likely forgot to export your component or might have mixed up default and named imports\"+w(e)+\"\\n\\n\"+f(e));if(null!=r&&\"object\"==typeof r){if(void 0!==r.__k&&void 0!==r.__e)throw new Error(\"Invalid type passed to createElement(): \"+r+\"\\n\\nDid you accidentally pass a JSX literal as JSX twice?\\n\\n let My\"+a(e)+\" = \"+w(r)+\";\\n let vnode = <My\"+a(e)+\" />;\\n\\nThis usually happens when you export a JSX literal and not the component.\\n\\n\"+f(e));throw new Error(\"Invalid type passed to createElement(): \"+(Array.isArray(r)?\"array\":r))}if(void 0!==e.ref&&\"function\"!=typeof e.ref&&\"object\"!=typeof e.ref&&!(\"$$typeof\"in e))throw new Error('Component\\'s \"ref\" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+\"] instead\\n\"+w(e)+\"\\n\\n\"+f(e));if(\"string\"==typeof e.type)for(var i in e.props)if(\"o\"===i[0]&&\"n\"===i[1]&&\"function\"!=typeof e.props[i]&&null!=e.props[i])throw new Error(\"Component's \\\"\"+i+'\" property should be a function, but got ['+typeof e.props[i]+\"] instead\\n\"+w(e)+\"\\n\\n\"+f(e));if(\"function\"==typeof e.type&&e.type.propTypes){if(\"Lazy\"===e.type.displayName&&E&&!E.lazyPropTypes.has(e.type)){var s=\"PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. \";try{var c=e.type();E.lazyPropTypes.set(e.type,!0),console.warn(s+\"Component wrapped in lazy() is \"+a(c))}catch(n){console.warn(s+\"We will log the wrapped component's name once it is loaded.\")}}var l=e.props;e.type.__f&&delete(l=function(n,e){for(var o in e)n[o]=e[o];return n}({},l)).ref,function(n,e,o,r,a){Object.keys(n).forEach(function(o){var i;try{i=n[o](e,o,r,\"prop\",null,\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\")}catch(n){i=n}i&&!(i.message in t)&&(t[i.message]=!0,console.error(\"Failed prop type: \"+i.message+(a&&\"\\n\"+a()||\"\")))})}(e.type.propTypes,l,0,a(e),function(){return f(e)})}o&&o(e)};var T,_=0;e.__r=function(e){l&&l(e),n=!0;var o=e.__c;if(o===T?_++:_=1,_>=25)throw new Error(\"Too many re-renders. This is limited to prevent an infinite loop which may lock up your browser. The component causing this is: \"+a(e));T=o},e.__h=function(e,o,t){if(!e||!n)throw new Error(\"Hook can only be invoked from render methods.\");g&&g(e,o,t)};var O=function(n,e){return{get:function(){var o=\"get\"+n+e;k&&k.indexOf(o)<0&&(k.push(o),console.warn(\"getting vnode.\"+n+\" is deprecated, \"+e))},set:function(){var o=\"set\"+n+e;k&&k.indexOf(o)<0&&(k.push(o),console.warn(\"setting vnode.\"+n+\" is not allowed, \"+e))}}},I={nodeName:O(\"nodeName\",\"use vnode.type\"),attributes:O(\"attributes\",\"use vnode.props\"),children:O(\"children\",\"use vnode.props.children\")},M=Object.create({},I);e.vnode=function(n){var e=n.props;if(null!==n.type&&null!=e&&(\"__source\"in e||\"__self\"in e)){var o=n.props={};for(var t in e){var r=e[t];\"__source\"===t?n.__source=r:\"__self\"===t?n.__self=r:o[t]=r}}n.__proto__=M,c&&c(n)},e.diffed=function(e){var o,t=e.type,i=e.__;if(e.__k&&e.__k.forEach(function(n){if(\"object\"==typeof n&&n&&void 0===n.type){var o=Object.keys(n).join(\",\");throw new Error(\"Objects are not valid as a child. Encountered an object with the keys {\"+o+\"}.\\n\\n\"+f(e))}}),e.__c===T&&(_=0),\"string\"==typeof t&&(y(t)||\"p\"===t||\"a\"===t||\"button\"===t)){var s=h(i);if(\"\"!==s&&y(t))\"table\"===t&&\"td\"!==s&&y(s)?console.error(\"Improper nesting of table. Your <table> should not have a table-node parent.\"+w(e)+\"\\n\\n\"+f(e)):\"thead\"!==t&&\"tfoot\"!==t&&\"tbody\"!==t||\"table\"===s?\"tr\"===t&&\"thead\"!==s&&\"tfoot\"!==s&&\"tbody\"!==s?console.error(\"Improper nesting of table. Your <tr> should have a <thead/tbody/tfoot> parent.\"+w(e)+\"\\n\\n\"+f(e)):\"td\"===t&&\"tr\"!==s?console.error(\"Improper nesting of table. Your <td> should have a <tr> parent.\"+w(e)+\"\\n\\n\"+f(e)):\"th\"===t&&\"tr\"!==s&&console.error(\"Improper nesting of table. Your <th> should have a <tr>.\"+w(e)+\"\\n\\n\"+f(e)):console.error(\"Improper nesting of table. Your <thead/tbody/tfoot> should have a <table> parent.\"+w(e)+\"\\n\\n\"+f(e));else if(\"p\"===t){var c=p(e).filter(function(n){return m.test(n)});c.length&&console.error(\"Improper nesting of paragraph. Your <p> should not have \"+c.join(\", \")+\" as child-elements.\"+w(e)+\"\\n\\n\"+f(e))}else\"a\"!==t&&\"button\"!==t||-1!==p(e).indexOf(t)&&console.error(\"Improper nesting of interactive content. Your <\"+t+\"> should not have other \"+(\"a\"===t?\"anchor\":\"button\")+\" tags as child-elements.\"+w(e)+\"\\n\\n\"+f(e))}if(n=!1,r&&r(e),null!=e.__k)for(var l=[],u=0;u<e.__k.length;u++){var d=e.__k[u];if(d&&null!=d.key){var v=d.key;if(-1!==l.indexOf(v)){console.error('Following component has two or more children with the same key attribute: \"'+v+'\". This may cause glitches and misbehavior in rendering process. Component: \\n\\n'+w(e)+\"\\n\\n\"+f(e));break}l.push(v)}}if(null!=e.__c&&null!=e.__c.__H){var b=e.__c.__H.__;if(b)for(var g=0;g<b.length;g+=1){var E=b[g];if(E.__H)for(var k=0;k<E.__H.length;k++)if((o=E.__H[k])!=o){var O=a(e);console.warn(\"Invalid argument passed to hook. Hooks should not be called with NaN in the dependency array. Hook index \"+g+\" in component \"+O+\" was called with NaN.\")}}}}}();export{c as getCurrentVNode,a as getDisplayName,f as getOwnerStack,r as resetPropWarnings};\n//# sourceMappingURL=debug.module.js.map\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e,r as t}from"./main-BdqNbG-a.js";var n=3,r=8,i=24,a=2,o=1.333,s=2,c=3,l=new Uint16Array(65536),u=new Uint8Array(65536),d=new Uint8Array(65536);for(let e=0;e<l.length;e++){let t=e&255,n=e>>>8;l[e]=t+n,u[e]=t<n?t:n,d[e]=t>n?t:n}var f=e=>e>>>0,p=(e,t)=>{let n=e.x-t.x,r=e.y-t.y;return n*n+r*r},m=(e,t)=>Math.sqrt(p(e,t)),h=e=>e.reduce((e,t)=>e+t),g=(e,t)=>{e.x+=t.x,e.y+=t.y},_=e=>({x:-e.x,y:-e.y}),v=e=>({x:e.y,y:e.x}),y=e=>({x:e.x,y:e.y}),b=e=>({x:f(e.x),y:f(e.y)}),x=(e,t)=>({x:e.x+t.x,y:e.y+t.y}),S=e=>(e>>>=0,e===0?32:31-Math.clz32((e&-e)>>>0));function C(e,t,n){let r=e;return n!==void 0&&(r=Math.min(r,n)),t!==void 0&&(r=Math.max(r,t)),r}function w(e){let t=e,n=t.data.length/(t.width*t.height);if(n===3||n===4)return n;throw Error(`Unknown image format, bytes per pixel=${n}`)}function T(e){return e instanceof Uint8Array||e instanceof Uint8ClampedArray}function E(e){let n=e,a=n.width,o=n.height,s=n.data,c=w(e),p=o*a,m=new Uint8Array(p);if(c===4&&T(s)&&!(s.byteOffset&3)){let e=new Uint32Array(s.buffer,s.byteOffset,p),t=new Uint32Array(m.buffer,m.byteOffset,m.length>>>2),n=e.length&-4;for(let r=0,i=0;r<n;r+=4,i++){let n=e[r]>>>0,a=e[r+1]>>>0,o=e[r+2]>>>0,s=e[r+3]>>>0,c=(n&255)+((n>>>8&255)<<1)+(n>>>16&255)>>>2,l=(a&255)+((a>>>8&255)<<1)+(a>>>16&255)>>>2,u=(o&255)+((o>>>8&255)<<1)+(o>>>16&255)>>>2,d=(s&255)+((s>>>8&255)<<1)+(s>>>16&255)>>>2;t[i]=c|l<<8|u<<16|d<<24}for(let t=n;t<e.length;t++){let n=e[t]>>>0;m[t]=(n&255)+((n>>>8&255)<<1)+(n>>>16&255)>>>2}}else for(let e=0,t=0,n=s;e<n.length;e+=c){let r=n[e],i=n[e+1],a=n[e+2];m[t++]=f((r+2*i+a)/4)&255}let h=0,g=0,_=c*16;for(let e=0;e<s.length;e+=_){let t=s[e],n=s[e+1],r=s[e+2];h+=(t>n?t>r?t:r:n>r?n:r)-(t<n?t<r?t:r:n<r?n:r),g++}let v=h/g,y=r;if(a<y*5||o<y*5)throw Error(`image too small`);let b=Math.ceil(a/y),x=Math.ceil(o/y),S=o-y,E=a-y,D=b*x,O=new Uint32Array(D),k=0,A=0,j=a+3&-4,M=a,N;if(a&3){let e=j*o,t=new Uint8Array(e);for(let e=0;e<o;e++){let n=e*a,r=e*j;t.set(m.subarray(n,n+a),r)}M=j,N=new Uint32Array(t.buffer,t.byteOffset,j*o>>>2)}else N=new Uint32Array(m.buffer,m.byteOffset,m.length>>>2);for(let e=0;e<x;e++){let t=C(e*y,0,S);for(let n=0;n<b;n++){let r=C(n*y,0,E),o=0,s=255,c=0;if(r&3)for(let e=0,n=t*a+r;e<y;e++,n+=a)for(let e=0;e<y;e++){let t=m[n+e];o+=t,t<s&&(s=t),t>c&&(c=t)}else for(let e=0,n=t*M+r;e<y;e++,n+=M){let e=n>>>2,t=N[e]>>>0,r=N[e+1]>>>0,i=t&65535,a=t>>>16,f=r&65535,p=r>>>16;o+=l[i]+l[a]+l[f]+l[p];let m=u[i],h=u[a],g=u[f],_=u[p];m<s&&(s=m),h<s&&(s=h),g<s&&(s=g),_<s&&(s=_);let v=d[i],y=d[a],b=d[f],x=d[p];v>c&&(c=v),y>c&&(c=y),b>c&&(c=b),x>c&&(c=x)}let p=b*e+n,h=c-s,g=o>>>6;if(h<=i&&(g=s/2,e>0&&n>0)){let t=(e,t)=>t*b+e,r=(O[t(n,e-1)]&255)+2*(O[t(n-1,e)]&255)+(O[t(n-1,e-1)]&255);s*4<r&&(g=r/4)}O[p]=f(g)|s<<8|c<<16,h>40&&g<224&&k++,h<=10&&A++}}let P=k/D,F=A/D,I=F>.55&&F<.66&&P<.02&&v>10&&v<20?-1:0,L=F<.62||v>30,R=b+1,z=(x+1)*R,B=new Uint32Array(z),V=L?new Float32Array(z):void 0;for(let e=0;e<x;e++){let t=0,n=0,r=e*b,i=(e+1)*R,a=e*R;for(let e=0;e<b;e++){let o=O[r+e]&255;t+=o,V&&(n+=o*o),B[i+e+1]=B[a+e+1]+t,V&&(V[i+e+1]=V[a+e+1]+n)}}let H=new t({width:a,height:o}),U=Math.ceil(a/32),W=H.value;for(let e=0;e<x;e++){let t=C(e*y,0,S),n=C(e,2,x-2-1),r=n-2,i=n+2,o=r*R,s=(i+1)*R;for(let n=0;n<b;n++){let r=C(n*y,0,E),i=r&31,c=r>>>5,l=C(n,2,b-2-1),u=l-2,d=l+2,p=(B[s+(d+1)]-B[o+(d+1)]-B[s+u]+B[o+u])/25|0,h=p,g=O[b*e+n],_=g&255,x=g>>>8&255,S=g>>>16,w=S-x;if(p<x)continue;if(p>=S){for(let e=0,n=t*U+c;e<y;e++,n+=U){let e=255<<i>>>0;W[n]|=e,i>24&&(W[n+1]|=255>>>32-i)}continue}let T=_-p>>4;T<0&&(T=0),T>1&&(T=1);let D=0;if(w>6&&p>48&&p<232){let e=v>8?v-8:0,t=128-Math.abs(p-128);D=f(e*(w-6)*t/22e5),D>1&&(D=1)}let k=0;if(V&&w>=6&&w<=128){let e=(V[s+(d+1)]-V[o+(d+1)]-V[s+u]+V[o+u])/25-p*p;e<0&&(e=0),k=f((p-x)*(e-196)/((e+832)*9)),k<-1&&(k=-1),k>4&&(k=4)}h=p+T+D+k,v>10&&w>=8&&w<=96&&p>x+8&&p<192&&h++,F>.68&&F<.86&&w>=6&&w<=20&&p<196&&h++,h+=I,h<x&&(h=x),h>S&&(h=S);for(let e=0,n=t*a+r,o=t*U+c;e<y;e++,n+=a,o+=U){let e=0;if(m[n]<=h&&(e|=1),m[n+1]<=h&&(e|=2),m[n+2]<=h&&(e|=4),m[n+3]<=h&&(e|=8),m[n+4]<=h&&(e|=16),m[n+5]<=h&&(e|=32),m[n+6]<=h&&(e|=64),m[n+7]<=h&&(e|=128),e===0)continue;let t=e<<i>>>0;W[o]|=t,i>24&&(W[o+1]|=e>>>32-i)}}}return H}function D(e,t){if(Math.abs(t.y-e.y)<=t.moduleSize&&Math.abs(t.x-e.x)<=t.moduleSize){let n=Math.abs(t.moduleSize-e.moduleSize);return n<=1||n<=e.moduleSize}return!1}function O(e,t){let n=e.count+t.count;return{x:(e.count*e.x+t.count*t.x)/n,y:(e.count*e.y+t.count*t.y)/n,moduleSize:(e.count*e.moduleSize+t.count*t.moduleSize)/n,count:n}}var k=e=>e.filter(e=>e.count>=s);function A(t,n){let r=n||e.fillArr(t.length,1);if(t.length!==r.length)throw Error(`invalid pattern`);if(!(t.length&1))throw Error(`invalid pattern, length should be odd`);let i={center:Math.ceil(t.length/2)-1,length:t.length,pattern:t,size:r,runs:()=>e.fillArr(t.length,0),totalSize:h(r),total:e=>e.reduce((e,t)=>e+t),shift:(e,t)=>{for(let n=0;n<e.length-t;n++)e[n]=e[n+2];for(let n=e.length-t;n<e.length;n++)e[n]=0},checkSize(e,t,n=a){let i=t/n;for(let n=0;n<e.length;n++)if(Math.abs(r[n]*t-e[n])>=r[n]*i)return!1;return!0},add(e,t,n,r){let a={x:t,y:n,moduleSize:r/i.totalSize,count:1};for(let t=0;t<e.length;t++){let n=e[t];if(D(n,a))return e[t]=O(n,a)}e.push(a)},toCenter(e,n){for(let r=t.length-1;r>i.center;r--)n-=e[r];return n-=e[i.center]/2,n},check(e,t,n,r,a){let o=e,s=0,c=y(n),l=_(r),u=(e,n)=>{for(;o.isInside(c)&&!!o.point(c)===i.pattern[e];g(c,n))t[e]++,s++;if(t[e]===0)return!0;let r=e===i.center;return!!(a&&!r&&t[e]>i.size[e]*a)};for(let e=i.center;e>=0;e--)if(u(e,l))return!1;c=y(n),g(c,r),s=1;for(let e=i.center;e<i.length;e++)if(u(e,r))return!1;return s},scanLine(e,t,n,r,a){let o=e,s=i.runs(),c=o.words,l=o.value,u=t*c,d=i.pattern,f=e=>(l[u+(e>>>5)]>>>(e&31)&1)==1,p=(e,t)=>{let n=u+(e>>>5),i=e&31,a=l[n]>>>i>>>0,o=r-e,s=0;for(;o>0;){let e=32-i,r=S(t?~a>>>0:a);if(r>e&&(r=e),r>o&&(r=o),s+=r,r<e&&r<o||(o-=r,o<=0))break;n++,i=0,a=l[n]>>>0}return s},m=0,h=n;for(n&&(h+=p(h,d[0]));h<r;h++){let e=f(h);if(e===d[m]){let t=p(h,e);if(s[m]+=t,h+=t-1,h!==o.width-1)continue;h++}if(m!==i.length-1){s[++m]++;continue}let t=a(s,h);if(t)m=0,s.fill(0);else if(t===!1)break;else i.shift(s,2),m=i.length-2,s[m]++}}};return i}var j=A([!0,!1,!0,!1,!0],[1,1,3,1,1]),M=A([!1,!0,!1]);function N(t){let n=t,r=[];function i(e,t=2){let n=h(e);if(n<j.totalSize)return!1;let r=n/j.totalSize;return j.checkSize(e,r,t)}function a(e,t,r,a){let o=j.runs(),s=j.check(n,o,e,a,t);if(s===!1)return!1;let c=h(o);return 5*Math.abs(c-r)>=2*r?!1:i(o)?j.toCenter(o,s):!1}function l(e,t,s){if(!i(e))return!1;let c=h(e),l=j.toCenter(e,s),u=a({x:f(l),y:t},e[2],c,{y:1,x:0});if(u===!1)return!1;u+=t;let d=a({x:f(l),y:f(u)},e[2],c,{y:0,x:1});if(d===!1)return!1;l=d+f(l);let p=j.runs();return!j.check(n,p,{x:f(l),y:f(u)},{x:1,y:1})||!i(p,o)?!1:(j.add(r,l,u,c),!0)}let u=!1,d=C(f(3*n.height/388),c),g=!1;for(let e=d-1;e<n.height&&!g;e+=d)j.scanLine(n,e,0,n.width,(t,n)=>{if(l(t,e,n)){if(d=2,u){let e=0,t=0;for(let n of r)n.count<s||(e++,t+=n.moduleSize);if(e<3)return;let n=t/r.length,i=0;for(let e of r)i+=Math.abs(e.moduleSize-n);if(i<=.05*t)return g=!0,!1}else if(r.length>1){let n=k(r);if(n.length<2)return!0;u=!0;let i=f((Math.abs(n[0].x-n[1].x)-Math.abs(n[0].y-n[1].y))/2);return i<=t[2]+d?!0:(e+=i-t[2]-d,!1)}}});let _=r.length;if(_<3)throw Error(`Finder: len(found) = ${_}`);r.sort((e,t)=>e.moduleSize-t.moduleSize);let v=e.best();for(let e=0;e<_-2;e++){let t=r[e];for(let n=e+1;n<_-1;n++){let e=r[n],i=p(t,e);for(let a=n+1;a<_;a++){let n=r[a];if(n.moduleSize>t.moduleSize*1.4)continue;let o=[i,p(e,n),p(t,n)].sort((e,t)=>e-t),s=o[0],c=o[1],l=o[2];v.add(Math.abs(l-2*c)+Math.abs(l-2*s),[t,e,n])}}}let y=v.get();if(!y)throw Error(`cannot find finder`);let b=y[0],x=y[1],S=y[2],w=m(b,x),T=m(x,S),E=m(b,S),D=S,O=b,A=x;if(T>=w&&T>=E?(D=b,O=x,A=S):E>=T&&E>=w&&(D=x,O=b,A=S),(A.x-D.x)*(O.y-D.y)-(A.y-D.y)*(O.x-D.x)<0){let e=O;O=A,A=e}return{bl:O,tl:D,tr:A}}function P(e,t,n){let r=e,{moduleSize:i}=t,a=f(n*i),o=C(t.x-a,0),s=C(t.x+a,void 0,r.width-1),c=s-o,l=C(t.y-a,0),u=C(t.y+a,void 0,r.height-1),d=u-l;if(c<i*3||d<i*3)throw Error(`x = ${c}, y=${d} moduleSize = ${i}`);let p=o,m=l,g=s-o+1,_=u-l+1,v=[],y=p+g,b=f(m+_/2);for(let e=0;e<_;e++){let t=f((e+1)/2),n=b+(e&1?-t:t),a;if(M.scanLine(r,n,p,y,(e,t)=>{if(!M.checkSize(e,i))return;let o=h(e),s=M.toCenter(e,t),c=M.runs(),l=M.check(r,c,{x:f(s),y:n},{y:1,x:0},2*e[1]);if(l===!1)return;l+=n;let u=h(c);if(5*Math.abs(u-o)>=2*o||!M.checkSize(c,i))return;let d=M.toCenter(c,l);if(a=M.add(v,s,d,o),a)return!1}),a)return a}if(v.length>0)return v[0];throw Error(`Alignment pattern not found`)}function F(e,t,n){let r=e,i=!1,a={x:Math.abs(n.x-t.x),y:Math.abs(n.y-t.y)};a.y>a.x&&(i=!0,t=v(t),n=v(n),a=v(a));let o=-a.x/2,s={x:t.x>=n.x?-1:1,y:t.y>=n.y?-1:1},c=0,l=n.x+s.x;for(let e=t.x,u=t.y;e!==l;e+=s.x){let l={x:e,y:u};if(i&&(l=v(l)),c===1==!!r.point(l)){if(c===2)return m({x:e,y:u},t);c++}if(o+=a.y,!(o<=0)){if(u===n.y)break;u+=s.y,o-=a.x}}return c===2?m({x:n.x+s.x,y:n.y},t):NaN}function I(e,t,n){let r=e,i=F(r,t,n),a=1,{x:o,y:s}=t,c=o-(n.x-o),l=r.width;c<0?(a=o/(o-c),c=0):c>=l&&(a=(l-1-o)/(c-o),c=l-1);let u=f(s-(n.y-s)*a),d=1,p=r.height;return u<0?(d=s/(s-u),u=0):u>=p&&(d=(p-1-s)/(u-s),u=p-1),c=f(o+(c-o)*d),i+=F(r,t,{x:c,y:u}),i-1}function L(e,t,n){let r=I(e,b(t),b(n)),i=I(e,b(n),b(t));return Number.isNaN(r)?i/j.totalSize:Number.isNaN(i)?r/j.totalSize:(r+i)/(2*j.totalSize)}function R(t){let n=t,r,i,a;try{({bl:r,tl:i,tr:a}=N(n))}catch{try{n.negate(),{bl:r,tl:i,tr:a}=N(n)}catch(e){throw n.negate(),e}}let o=(L(n,i,a)+L(n,i,r))/2;if(o<1)throw Error(`invalid moduleSize = ${o}`);let s=f((f(m(i,a)/o+.5)+f(m(i,r)/o+.5))/2+7),c=s%4;c===0?s++:c===2?s--:c===3&&(s-=2);let l=e.info.size.decode(s);e.validateVersion(l);let u;if(e.info.alignmentPatterns(l).length>0){let t={x:a.x-i.x+r.x,y:a.y-i.y+r.y},s=1-3/(e.info.size.encode(l)-7),c={x:f(i.x+s*(t.x-i.x)),y:f(i.y+s*(t.y-i.y)),moduleSize:o,count:1};for(let e=4;e<=16;e<<=1)try{u=P(n,c,e);break}catch{}}let d={x:3.5,y:3.5},p={x:s-3.5,y:3.5},h={x:3.5,y:s-3.5},g,_;u?(g=u,_={x:s-6.5,y:s-6.5}):(g={x:a.x-i.x+r.x,y:a.y-i.y+r.y},_={x:s-3.5,y:s-3.5});let v=[i,a,g,r];return{bits:B(n,s,v,[d,p,_,h]),points:v}}function z(e){let t={x:e[0].x-e[1].x+e[2].x-e[3].x,y:e[0].y-e[1].y+e[2].y-e[3].y};if(t.x===0&&t.y===0)return[[e[1].x-e[0].x,e[2].x-e[1].x,e[0].x],[e[1].y-e[0].y,e[2].y-e[1].y,e[0].y],[0,0,1]];{let n={x:e[1].x-e[2].x,y:e[1].y-e[2].y},r={x:e[3].x-e[2].x,y:e[3].y-e[2].y},i=n.x*r.y-r.x*n.y,a=(t.x*r.y-r.x*t.y)/i,o=(n.x*t.y-t.x*n.y)/i;return[[e[1].x-e[0].x+a*e[1].x,e[3].x-e[0].x+o*e[3].x,e[0].x],[e[1].y-e[0].y+a*e[1].y,e[3].y-e[0].y+o*e[3].y,e[0].y],[a,o,1]]}}function B(n,r,i,a){let o=n,s=z(a),c=[[s[1][1]*s[2][2]-s[2][1]*s[1][2],s[2][1]*s[0][2]-s[0][1]*s[2][2],s[0][1]*s[1][2]-s[1][1]*s[0][2]],[s[2][0]*s[1][2]-s[1][0]*s[2][2],s[0][0]*s[2][2]-s[2][0]*s[0][2],s[1][0]*s[0][2]-s[0][0]*s[1][2]],[s[1][0]*s[2][1]-s[2][0]*s[1][1],s[2][0]*s[0][1]-s[0][0]*s[2][1],s[0][0]*s[1][1]-s[1][0]*s[0][1]]],l=z(i).map(e=>e.map((t,n)=>e.reduce((e,t,r)=>e+t*c[r][n],0))),u=new t(r),d=e.fillArr(2*r,0),p=d.length;for(let e=0;e<r;e++){let t=l;for(let n=0;n<p-1;n+=2){let r=n/2+.5,i=e+.5,a=t[2][0]*r+t[2][1]*i+t[2][2];d[n]=f(C((t[0][0]*r+t[0][1]*i+t[0][2])/a,0,o.width-1)),d[n+1]=f(C((t[1][0]*r+t[1][1]*i+t[1][2])/a,0,o.height-1))}for(let t=0;t<p;t+=2)o.get(d[t],d[t+1])&&u.set(t/2|0,e,!0)}return u}function V(e){let t=e,n=(e,n,r)=>r<<1|!!t.get(e,n),r=t.height,i=0;for(let e=5;e>=0;e--)for(let t=r-9;t>=r-11;t--)i=n(t,e,i);let a=0;for(let e=5;e>=0;e--)for(let t=r-9;t>=r-11;t--)a=n(e,t,a);let o=0;for(let e=0;e<6;e++)o=n(e,8,o);o=n(7,8,o),o=n(8,8,o),o=n(8,7,o);for(let e=5;e>=0;e--)o=n(8,e,o);let s=0;for(let e=r-1;e>=r-7;e--)s=n(8,e,s);for(let e=r-8;e<r;e++)s=n(e,8,s);return{version1:i,version2:a,format1:o,format2:s}}function H(t){let r=t,i=r.height,{version1:a,version2:o,format1:s,format2:c}=V(r),l,u=e.best();for(let t of[`medium`,`low`,`high`,`quartile`])for(let n=0;n<8;n++){let r=e.info.formatBits(t,n),i={ecc:t,mask:n};if(r===s||r===c){l=i;break}u.add(e.popcnt(s^r),i),s!==c&&u.add(e.popcnt(c^r),i)}if(l===void 0&&u.score()<=n&&(l=u.get()),l===void 0)throw Error(`invalid format pattern`);let d=e.info.size.decode(i);if(d<7)e.validateVersion(d);else{d=void 0;let t=e.best();for(let n=7;n<=40;n++){let r=e.info.versionBits(n);if(r===a||r===o){d=n;break}t.add(e.popcnt(a^r),n),a!==o&&t.add(e.popcnt(o^r),n)}if(d===void 0&&t.score()<=n&&(d=t.get()),d===void 0)throw Error(`invalid version pattern`);if(e.info.size.encode(d)!==i)throw Error(`invalid version size`)}return{version:d,...l}}var U={1:`iso-8859-1`,2:`ibm437`,3:`iso-8859-1`,4:`iso-8859-2`,5:`iso-8859-3`,6:`iso-8859-4`,7:`iso-8859-5`,8:`iso-8859-6`,9:`iso-8859-7`,10:`iso-8859-8`,11:`iso-8859-9`,13:`iso-8859-11`,15:`iso-8859-13`,16:`iso-8859-14`,17:`iso-8859-15`,18:`iso-8859-16`,20:`shift-jis`,21:`windows-1250`,22:`windows-1251`,23:`windows-1252`,24:`windows-1256`,25:`utf-16be`,26:`utf-8`,28:`big5`,29:`gbk`,30:`euc-kr`};function W(e,t=26){let n=U[t];if(!n)throw Error(`Unsupported ECI: ${t}`);return new TextDecoder(n).decode(e)}function G(t,n=W){let r=t,i=r.height;if(i<21||(i&3)!=1||i!==r.width)throw Error(`decode: invalid size=${i}`);let{version:a,mask:o,ecc:s}=H(r),c=e.drawTemplate(a,s,o),{total:l}=e.info.capacity(a,s),u=new Uint8Array(l),d=0,f=0,p=0;if(e.zigzag(c,o,(e,t,n)=>{p++,f<<=1,f|=+(!!r.get(e,t)!==n),p===8&&(u[d++]=f,p=0,f=0)}),d!==l)throw Error(`decode: pos=${d}, total=${l}`);let m=Array.from(e.interleave(a,s).decode(u)).map(t=>e.bin(t,8)).join(``),h=e=>{if(e>m.length)throw Error(`Not enough bits`);let t=m.slice(0,e);return m=m.slice(e),t},g=e=>Number(`0b${e}`),_={"0000":`terminator`,"0001":`numeric`,"0010":`alphanumeric`,"0100":`byte`,"0111":`eci`,1e3:`kanji`},v=``,y=26;for(;!(m.length<4);){let t=h(4),r=_[t];if(r===void 0)throw Error(`Unknown modeBits=${t} res="${v}"`);if(r===`terminator`)break;let i=g(h(e.info.lengthBits(a,r)));if(r===`numeric`){for(;i>=3;){let e=g(h(10));if(e>=1e3)throw Error(`numberic(3) = ${e}`);v+=e.toString().padStart(3,`0`),i-=3}if(i===2){let e=g(h(7));if(e>=100)throw Error(`numeric(2) = ${e}`);v+=e.toString().padStart(2,`0`)}else if(i===1){let e=g(h(4));if(e>=10)throw Error(`Numeric(1) = ${e}`);v+=e.toString()}}else if(r===`alphanumeric`){for(;i>=2;){let t=g(h(11));v+=e.info.alphabet.alphanumerc.encode([Math.floor(t/45),t%45]).join(``),i-=2}i===1&&(v+=e.info.alphabet.alphanumerc.encode([g(h(6))]).join(``))}else if(r===`eci`){let e=g(h(8));y=e&128?(e&192)==128?(e&63)<<8|g(h(8)):(e&31)<<16|g(h(16)):e;continue}else if(r===`byte`){let e=new Uint8Array(i);for(let t=0;t<i;t++)e[t]=g(h(8));v+=n(e,y)}else if(r===`kanji`)throw Error(`Kanji mode is not supported`);else throw Error(`Unknown mode=${r}`)}return v}function K(e){let t=e,n=Array.isArray(t.data)?new Uint8Array(t.data):t.data,{height:r,width:i}=t,a=Math.min(r,i),o={x:Math.floor((i-a)/2),y:Math.floor((r-a)/2)},s=w(e),c=new Uint8Array(a*a*s);for(let e=0;e<a;e++){let t=((e+o.y)*i+o.x)*s,r=e*a*s,l=a*s;c.set(n.subarray(t,t+l),r)}return{offset:o,img:{height:a,width:a,data:c}}}function q(e,t={}){let n=e,r=t;for(let e of[`height`,`width`])if(!Number.isSafeInteger(n[e])||n[e]<=0)throw Error(`invalid img.${e}=${n[e]} (${typeof n[e]})`);let{data:i}=n;if(!Array.isArray(i)&&!T(i))throw Error(`invalid image.data=${i} (${typeof i})`);if(r.cropToSquare!==void 0&&typeof r.cropToSquare!=`boolean`)throw Error(`invalid opts.cropToSquare=${r.cropToSquare}`);for(let e of[`textDecoder`,`pointsOnDetect`,`imageOnBitmap`,`imageOnDetect`,`imageOnResult`])if(r[e]!==void 0&&typeof r[e]!=`function`)throw Error(`invalid opts.${e}=${r[e]} (${typeof r[e]})`);let a={x:0,y:0};r.cropToSquare&&({img:n,offset:a}=K(n));let o=E(n);r.imageOnBitmap&&r.imageOnBitmap(o.toImage());let{bits:s,points:c}=R(o);if(r.pointsOnDetect){let e=c.map(e=>({...e,...x(e,a)}));r.pointsOnDetect(e)}r.imageOnDetect&&r.imageOnDetect(s.toImage());let l=G(s,r.textDecoder);return r.imageOnResult&&r.imageOnResult(s.toImage()),l}var J=e=>{let t=getComputedStyle(e);return{width:Math.floor(+t.width.split(`px`)[0]),height:Math.floor(+t.height.split(`px`)[0])}},Y=(e,t,n)=>{e.height!==t&&(e.height=t),e.width!==n&&(e.width=n)},X=e=>{let t=e.getContext(`2d`);if(t===null)throw Error(`Cannot get canvas context`);return{canvas:e,context:t}},Z=({canvas:e,context:t})=>{t.clearRect(0,0,e.width,e.height)},Q=class{opts;lastDetect=0;main;overlay;bitmap;resultQR;constructor(e={},t={}){let{overlay:n,bitmap:r,resultQR:i}=e;this.opts={resultBlockSize:8,overlayMainColor:`green`,overlayFinderColor:`blue`,overlaySideColor:`black`,overlayTimeout:500,cropToSquare:!0,...t},this.main=X(document.createElement(`canvas`)),n&&(this.overlay=X(n)),r&&(this.bitmap=X(r)),i&&(this.resultQR=X(i),this.resultQR.context.imageSmoothingEnabled=!1)}setSize(e,t){Y(this.main.canvas,e,t),this.overlay&&Y(this.overlay.canvas,e,t),this.bitmap&&Y(this.bitmap.canvas,e,t)}drawBitmap({data:e,height:t,width:n}){if(!this.bitmap)return;let r=new ImageData(Uint8ClampedArray.from(e),n,t),i={x:0,y:0};this.opts.cropToSquare&&(i={x:Math.floor((this.bitmap.canvas.width-n)/2),y:Math.floor((this.bitmap.canvas.height-t)/2)}),this.bitmap.context.putImageData(r,i.x,i.y)}drawResultQr({data:e,height:t,width:n}){if(!this.resultQR)return;let r=this.opts.resultBlockSize;Y(this.resultQR.canvas,t,n);let i=new ImageData(Uint8ClampedArray.from(e),n,t);this.resultQR.context.putImageData(i,0,0),this.resultQR.canvas.style=`image-rendering: pixelated; width: ${r*n}px; height: ${r*t}px`}drawOverlay(e){if(!this.overlay)return;let t=this.overlay.context,n=this.overlay.canvas.height,r=this.overlay.canvas.width;if(this.opts.cropToSquare&&n!==r){let e=Math.min(n,r),i={x:Math.floor((r-e)/2),y:Math.floor((n-e)/2)};if(t.clearRect(i.x,i.y,e,e),t.fillStyle=this.opts.overlaySideColor,r>n){let a=i.x+e;t.fillRect(0,0,i.x,n),t.fillRect(a,0,r-a,n)}else if(n>r){let a=i.y+e;t.fillRect(0,0,r,i.y),t.fillRect(0,a,r,n-a)}}else t.clearRect(0,0,r,n);if(e){let[n,r,i,a]=e;t.fillStyle=this.opts.overlayMainColor,t.beginPath(),t.moveTo(n.x,n.y),t.lineTo(r.x,r.y),t.lineTo(i.x,i.y),t.lineTo(a.x,a.y),t.fill(),t.closePath(),t.fillStyle=this.opts.overlayFinderColor;for(let n of e){if(!(`moduleSize`in n))continue;let e=n.x-3*n.moduleSize,r=n.y-3*n.moduleSize,i=7*n.moduleSize;t.fillRect(e,r,i,i)}}}drawImage(e,t,n){this.setSize(t,n);let{context:r}=this.main;r.drawImage(e,0,0,n,t);let i=r.getImageData(0,0,n,t),a={cropToSquare:this.opts.cropToSquare,textDecoder:this.opts.textDecoder};this.bitmap&&(a.imageOnBitmap=e=>this.drawBitmap(e)),this.overlay&&(a.pointsOnDetect=e=>this.drawOverlay(e)),this.resultQR&&(a.imageOnResult=e=>this.drawResultQr(e));try{let e=q(i,a);return this.lastDetect=Date.now(),e}catch{this.overlay&&Date.now()-this.lastDetect>this.opts.overlayTimeout&&this.drawOverlay()}}clear(){Z(this.main),this.overlay&&Z(this.overlay),this.bitmap&&Z(this.bitmap),this.resultQR&&Z(this.resultQR)}},$=class{stream;player;constructor(e,t){this.stream=e,this.player=t,this.setStream(e)}setStream(e){this.stream=e;let{player:t}=this;t.setAttribute(`autoplay`,``),t.setAttribute(`muted`,``),t.setAttribute(`playsinline`,``),t.srcObject=e}async listDevices(){if(!navigator.mediaDevices||!navigator.mediaDevices.enumerateDevices)throw Error(`Media Devices not supported`);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`videoinput`).map(e=>({deviceId:e.deviceId,label:e.label||`Camera ${e.deviceId}`}))}async setDevice(e){this.stop();let t=await navigator.mediaDevices.getUserMedia({video:{deviceId:{exact:e}}});this.setStream(t)}readFrame(e,t=!1){let{player:n}=this;if(t)return e.drawImage(n,n.videoHeight,n.videoWidth);let r=J(n);return e.drawImage(n,r.height,r.width)}stop(){for(let e of this.stream.getTracks())e.stop()}};async function ee(e){return new $(await navigator.mediaDevices.getUserMedia({video:{height:{ideal:window.screen.height},width:{ideal:window.screen.width},facingMode:`environment`}}),e)}function te(e){let t;function n(r){e(r),t=requestAnimationFrame(n)}return t=requestAnimationFrame(n),()=>{t!==void 0&&(cancelAnimationFrame(t),t=void 0)}}function ne(e,t,n){return new Promise((r,i)=>{if(!(Number.isSafeInteger(t)&&Number.isSafeInteger(n)&&t>0&&n>0&&t<8192&&n<8192))return i(Error(`invalid width and height: `+t+` `+n));let a=new DOMParser().parseFromString(e,`image/svg+xml`),o=a.documentElement;o.setAttribute(`width`,String(t)),o.setAttribute(`height`,String(n));let s=a.createElementNS(`http://www.w3.org/2000/svg`,`rect`);s.setAttribute(`width`,`100%`),s.setAttribute(`height`,`100%`),s.setAttribute(`fill`,`white`),o.insertBefore(s,o.firstChild);let c=new XMLSerializer().serializeToString(a),l=new Image;l.onload=function(){let e=document.createElement(`canvas`);e.width=t,e.height=n;let a=e.getContext(`2d`);if(!a)return i(Error(`was not able to create 2d context`));a.drawImage(l,0,0,t,n),r(e.toDataURL(`image/png`))},l.onerror=i,l.src=`data:image/svg+xml,`+encodeURIComponent(c)})}async function re(e){let t=new Blob([e],{type:`image/gif`}),n=await createImageBitmap(t);try{let e=new OffscreenCanvas(n.width,n.height),t=e.getContext(`bitmaprenderer`,{alpha:!1});if(!t)throw Error(`was not able to create bitmaprenderer context`);return t.transferFromImageBitmap(n),await e.convertToBlob({type:`image/png`})}finally{n.close()}}export{Q as QRCanvas,te as frameLoop,ee as frontalCamera,J as getSize,re as gifToPng,ne as svgToPng};
|
|
2
|
+
//# sourceMappingURL=dom-p1YcJ5Rw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-p1YcJ5Rw.js","names":[],"sources":["../../node_modules/qr/decode.js","../../node_modules/qr/dom.js"],"sourcesContent":["/*!\nCopyright (c) 2023 Paul Miller (paulmillr.com)\nThe library paulmillr-qr is dual-licensed under the Apache 2.0 OR MIT license.\nYou can select a license of your choice.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n/**\n * Methods for decoding (reading) QR code patterns.\n * @module\n */\nimport { Bitmap, utils } from \"./index.js\";\n// Constants\nconst MAX_BITS_ERROR = 3; // Up to 3 bit errors in version/format\n// Kept at 8: the block-stat fast path reads two u32 words per row and the\n// average uses `sum >>> 6`, so the current binarizer assumes 8x8 = 64 pixels.\nconst GRAYSCALE_BLOCK_SIZE = 8;\nconst GRAYSCALE_RANGE = 24;\nconst PATTERN_VARIANCE = 2;\n// Diagonal finder scans are noisier under blur/perspective than horizontal or\n// vertical runs, so they use a looser ratio tolerance.\nconst PATTERN_VARIANCE_DIAGONAL = 1.333;\nconst PATTERN_MIN_CONFIRMATIONS = 2;\nconst DETECT_MIN_ROW_SKIP = 3;\n// Pair LUTs for the 8x8 block-stat fast path: each 16-bit lane holds two\n// brightness bytes, so we can accumulate sum/min/max four pixels at a time.\nconst SUM16 = new Uint16Array(1 << 16);\nconst MIN16 = new Uint8Array(1 << 16);\nconst MAX16 = new Uint8Array(1 << 16);\nfor (let i = 0; i < SUM16.length; i++) {\n const lo = i & 0xff;\n const hi = i >>> 8;\n SUM16[i] = lo + hi;\n MIN16[i] = lo < hi ? lo : hi;\n MAX16[i] = lo > hi ? lo : hi;\n}\n// TODO: move to index, nearby with bitmap and other graph related stuff?\n// Fast truncation for values expected to be non-negative; negatives would wrap\n// through uint32 because this uses `>>> 0`, not `Math.floor()`.\nconst int = (n) => n >>> 0;\n// distance ^ 2\nconst distance2 = (p1, p2) => {\n const x = p1.x - p2.x;\n const y = p1.y - p2.y;\n return x * x + y * y;\n};\nconst distance = (p1, p2) => Math.sqrt(distance2(p1, p2));\nconst sum = (lst) => lst.reduce((acc, i) => acc + i);\nconst pointIncr = (p, incr) => {\n p.x += incr.x;\n p.y += incr.y;\n};\nconst pointNeg = (p) => ({ x: -p.x, y: -p.y });\nconst pointMirror = (p) => ({ x: p.y, y: p.x });\nconst pointClone = (p) => ({ x: p.x, y: p.y });\nconst pointInt = (p) => ({ x: int(p.x), y: int(p.y) });\nconst pointAdd = (a, b) => ({ x: a.x + b.x, y: a.y + b.y });\n// Count trailing zeroes in a packed bitmap word so scanLine can skip whole\n// runs instead of testing one bit at a time.\nconst ctz32 = (v) => {\n v = v >>> 0;\n if (v === 0)\n return 32;\n return 31 - Math.clz32((v & -v) >>> 0);\n};\nfunction cap(value, min, max) {\n // ISO/IEC 18004:2024 §12 h) builds the sampling grid from \"module centres\";\n // detector callers pass `0` as a real image edge when clipping those samples\n // and search windows. `|| value` treats that bound as absent.\n let res = value;\n if (max !== undefined)\n res = Math.min(res, max);\n if (min !== undefined)\n res = Math.max(res, min);\n return res;\n}\nfunction getBytesPerPixel(img) {\n const image = img;\n const perPixel = image.data.length / (image.width * image.height);\n if (perPixel === 3 || perPixel === 4)\n return perPixel; // RGB or RGBA\n throw new Error(`Unknown image format, bytes per pixel=${perPixel}`);\n}\nfunction isBytes(data) {\n return data instanceof Uint8Array || data instanceof Uint8ClampedArray;\n}\n/**\n * Convert to grayscale. The function is the most expensive part of decoding:\n * it takes up to 90% of time.\n *\n * Binarization pipeline:\n * 1. Convert RGB/RGBA image to one luma byte per pixel.\n * 2. Split the image into 8x8 blocks and collect per-block mean/min/max.\n * 3. Build a 5x5 neighborhood mean over those block means.\n * 4. Turn each 8x8 block into bitmap bits using a local cut derived from:\n * - the neighborhood mean,\n * - the current block statistics,\n * - a cheap whole-image color-spread estimate,\n * - and, on risky scenes, a local variance field over block means.\n *\n * Instead of producing \"best looking\" thresholding: we produce a\n * bitmap where finder patterns survive perspective / blur / highlights while\n * keeping false dark regions low enough for downstream finder selection.\n */\nfunction toBitmap(img) {\n const image = img;\n const width = image.width;\n const height = image.height;\n const data = image.data;\n const bytesPerPixel = getBytesPerPixel(img);\n const pixLen = height * width;\n const brightness = new Uint8Array(pixLen);\n if (bytesPerPixel === 4 && isBytes(data) && (data.byteOffset & 3) === 0) {\n // Little-endian RGBA: compute four grayscale bytes and commit as one u32 store.\n // Unaligned RGBA subarray views are still valid inputs; they fall back to\n // the scalar path because Uint32Array would throw on a misaligned offset.\n const pixels = new Uint32Array(data.buffer, data.byteOffset, pixLen);\n const bright32 = new Uint32Array(brightness.buffer, brightness.byteOffset, brightness.length >>> 2);\n const n4 = pixels.length & ~3;\n for (let i = 0, j = 0; i < n4; i += 4, j++) {\n const v0 = pixels[i] >>> 0;\n const v1 = pixels[i + 1] >>> 0;\n const v2 = pixels[i + 2] >>> 0;\n const v3 = pixels[i + 3] >>> 0;\n // RGBA words are little-endian here, so this is `(r + 2*g + b) / 4`\n // computed from the packed byte lanes for four pixels at once.\n const b0 = ((v0 & 0xff) + (((v0 >>> 8) & 0xff) << 1) + ((v0 >>> 16) & 0xff)) >>> 2;\n const b1 = ((v1 & 0xff) + (((v1 >>> 8) & 0xff) << 1) + ((v1 >>> 16) & 0xff)) >>> 2;\n const b2 = ((v2 & 0xff) + (((v2 >>> 8) & 0xff) << 1) + ((v2 >>> 16) & 0xff)) >>> 2;\n const b3 = ((v3 & 0xff) + (((v3 >>> 8) & 0xff) << 1) + ((v3 >>> 16) & 0xff)) >>> 2;\n bright32[j] = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24);\n }\n for (let i = n4; i < pixels.length; i++) {\n const v = pixels[i] >>> 0;\n brightness[i] = ((v & 0xff) + (((v >>> 8) & 0xff) << 1) + ((v >>> 16) & 0xff)) >>> 2;\n }\n }\n else {\n for (let i = 0, j = 0, d = data; i < d.length; i += bytesPerPixel) {\n const r = d[i];\n const g = d[i + 1];\n const b = d[i + 2];\n brightness[j++] = int((r + 2 * g + b) / 4) & 0xff;\n }\n }\n // Sampled color spread is a cheap \"scene type\" signal:\n // grayscale / flat lighting scenes want conservative cuts, while colorful or\n // high-spread scenes benefit from a slightly darker threshold.\n let spreadSum = 0;\n let spreadCnt = 0;\n const spreadStep = bytesPerPixel * 16;\n for (let i = 0; i < data.length; i += spreadStep) {\n const r = data[i];\n const g = data[i + 1];\n const b = data[i + 2];\n // hi=max(r,g,b), lo=min(r,g,b): this sampled channel spread is a cheap\n // scene-level proxy for \"how colorful / highlighty is this frame?\".\n const hi = r > g ? (r > b ? r : b) : g > b ? g : b;\n const lo = r < g ? (r < b ? r : b) : g < b ? g : b;\n spreadSum += hi - lo;\n spreadCnt++;\n }\n const spreadMean = spreadSum / spreadCnt;\n // Convert to bitmap\n const block = GRAYSCALE_BLOCK_SIZE;\n if (width < block * 5 || height < block * 5)\n throw new Error('image too small');\n const bWidth = Math.ceil(width / block);\n const bHeight = Math.ceil(height / block);\n const maxY = height - block;\n const maxX = width - block;\n const blockLen = bWidth * bHeight;\n const blockState = new Uint32Array(blockLen);\n // Each 8x8 block stores packed:\n // - bits 0..7: block baseline brightness used by the threshold field\n // - bits 8..15: block min\n // - bits 16..23: block max\n let hiRangeCnt = 0;\n let veryLowCnt = 0;\n const padW = (width + 3) & ~3;\n let statStride = width;\n let stat32;\n if ((width & 3) !== 0) {\n const padLen = padW * height;\n const brightPad = new Uint8Array(padLen);\n for (let y = 0; y < height; y++) {\n const src = y * width;\n const dst = y * padW;\n brightPad.set(brightness.subarray(src, src + width), dst);\n }\n // Misaligned widths are padded only for the block-stat fast path.\n statStride = padW;\n stat32 = new Uint32Array(brightPad.buffer, brightPad.byteOffset, (padW * height) >>> 2);\n }\n else\n stat32 = new Uint32Array(brightness.buffer, brightness.byteOffset, brightness.length >>> 2);\n for (let y = 0; y < bHeight; y++) {\n const yPos = cap(y * block, 0, maxY);\n for (let x = 0; x < bWidth; x++) {\n const xPos = cap(x * block, 0, maxX);\n let sum = 0;\n let min = 0xff;\n let max = 0;\n // The stat-LUT fast path needs the 8-pixel row start to be 32-bit aligned\n // so each row can be read as two full u32 words without any shifts.\n if ((xPos & 3) === 0) {\n for (let yy = 0, pos = yPos * statStride + xPos; yy < block; yy++, pos += statStride) {\n const p = pos >>> 2;\n const w0 = stat32[p] >>> 0;\n const w1 = stat32[p + 1] >>> 0;\n const a0 = w0 & 0xffff;\n const a1 = w0 >>> 16;\n const b0 = w1 & 0xffff;\n const b1 = w1 >>> 16;\n sum += SUM16[a0] + SUM16[a1] + SUM16[b0] + SUM16[b1];\n const min0 = MIN16[a0];\n const min1 = MIN16[a1];\n const min2 = MIN16[b0];\n const min3 = MIN16[b1];\n if (min0 < min)\n min = min0;\n if (min1 < min)\n min = min1;\n if (min2 < min)\n min = min2;\n if (min3 < min)\n min = min3;\n const max0 = MAX16[a0];\n const max1 = MAX16[a1];\n const max2 = MAX16[b0];\n const max3 = MAX16[b1];\n if (max0 > max)\n max = max0;\n if (max1 > max)\n max = max1;\n if (max2 > max)\n max = max2;\n if (max3 > max)\n max = max3;\n }\n }\n else {\n for (let yy = 0, pos = yPos * width + xPos; yy < block; yy++, pos += width) {\n for (let xx = 0; xx < block; xx++) {\n const pixel = brightness[pos + xx];\n sum += pixel;\n if (pixel < min)\n min = pixel;\n if (pixel > max)\n max = pixel;\n }\n }\n }\n const bIdx = bWidth * y + x;\n const range = max - min;\n // Average brightness of block\n let average = sum >>> 6;\n if (range <= GRAYSCALE_RANGE) {\n // Low-contrast blocks are unstable if we threshold from their raw mean.\n // Bias toward the local dark floor, then smooth with already-seen\n // neighbors so finder rings don't disappear in washed-out regions.\n average = min / 2;\n if (y > 0 && x > 0) {\n const idx = (x, y) => y * bWidth + x;\n const neighborNumerator = (blockState[idx(x, y - 1)] & 0xff) +\n 2 * (blockState[idx(x - 1, y)] & 0xff) +\n (blockState[idx(x - 1, y - 1)] & 0xff);\n if (min * 4 < neighborNumerator)\n average = neighborNumerator / 4;\n }\n }\n blockState[bIdx] = int(average) | (min << 8) | (max << 16);\n if (range > 40 && average < 224)\n hiRangeCnt++;\n if (range <= 10)\n veryLowCnt++;\n }\n }\n const hiRangeFrac = hiRangeCnt / blockLen;\n const veryLowFrac = veryLowCnt / blockLen;\n // These two scene gates are the main \"policy\" layer on top of the local cut:\n // - `spotBias` darkens globally flat, slightly colorful scenes that otherwise\n // miss bright-spot / washed-out QR modules.\n // - `useVarField` avoids paying the variance-field cost on scenes where the\n // plain 5x5 mean is already stable enough.\n const spotBias = veryLowFrac > 0.55 &&\n veryLowFrac < 0.66 &&\n hiRangeFrac < 0.02 &&\n spreadMean > 10 &&\n spreadMean < 20\n ? -1\n : 0;\n const useVarField = veryLowFrac < 0.62 || spreadMean > 30;\n const iWidth = bWidth + 1;\n const iHeight = bHeight + 1;\n const integLen = iHeight * iWidth;\n // `integ` is the standard summed-area table of block means.\n const integ = new Uint32Array(integLen);\n // `integSqr` is the square-integral / summed-area table of `v * v` over the\n // same block means, not a u8 pixel buffer. Those prefix sums can overflow\n // 32-bit integer storage on large images, and Float32 was the measured\n // faster compromise vs Float64 for this heuristic field.\n const integSqr = useVarField ? new Float32Array(integLen) : undefined;\n for (let y = 0; y < bHeight; y++) {\n let rowSum = 0;\n let rowSq = 0;\n const bRow = y * bWidth;\n const iRow = (y + 1) * iWidth;\n const iPrev = y * iWidth;\n for (let x = 0; x < bWidth; x++) {\n const v = blockState[bRow + x] & 0xff;\n rowSum += v;\n if (integSqr)\n rowSq += v * v;\n integ[iRow + x + 1] = integ[iPrev + x + 1] + rowSum;\n if (integSqr)\n integSqr[iRow + x + 1] = integSqr[iPrev + x + 1] + rowSq;\n }\n }\n const matrix = new Bitmap({ width, height });\n const rows = Math.ceil(width / 32);\n // Decode intentionally writes the packed bitmap words directly here. The\n // per-pixel Bitmap API is too expensive on this hot path, so this must stay\n // in sync with Bitmap's internal `value` layout.\n const bm = matrix.value;\n const rad = 2;\n const win = rad * 2 + 1;\n const area = win * win;\n for (let y = 0; y < bHeight; y++) {\n const yPos = cap(y * block, 0, maxY);\n const top = cap(y, rad, bHeight - rad - 1);\n const y0 = top - rad;\n const y1 = top + rad;\n const r0 = y0 * iWidth;\n const r1 = (y1 + 1) * iWidth;\n for (let x = 0; x < bWidth; x++) {\n const xPos = cap(x * block, 0, maxX);\n const shift = xPos & 31;\n const col = xPos >>> 5;\n const left = cap(x, rad, bWidth - rad - 1);\n const x0 = left - rad;\n const x1 = left + rad;\n // 5x5 blocks average\n const sum = integ[r1 + (x1 + 1)] - integ[r0 + (x1 + 1)] - integ[r1 + x0] + integ[r0 + x0];\n // `average` is the coarse threshold surface: a 5x5 neighborhood mean of\n // the 8x8 block means. The adjustments below decide when to move away\n // from that surface for the current block.\n const average = (sum / area) | 0;\n let cut = average;\n const bIdx = bWidth * y + x;\n const blk = blockState[bIdx];\n const blockAvg = blk & 0xff;\n const min = (blk >>> 8) & 0xff;\n const max = blk >>> 16;\n const range = max - min;\n if (average < min)\n continue;\n if (average >= max) {\n const m = 0xff;\n for (let yy = 0, row = yPos * rows + col; yy < block; yy++, row += rows) {\n const lo = (m << shift) >>> 0;\n bm[row] |= lo;\n if (shift > 24)\n bm[row + 1] |= m >>> (32 - shift);\n }\n continue;\n }\n // `localAdj`: nudge toward the current block when it is darker than\n // its neighborhood. This helps preserve dark rings / modules that are\n // locally meaningful but diluted by the 5x5 field.\n let localAdj = (blockAvg - average) >> 4;\n if (localAdj < 0)\n localAdj = 0;\n if (localAdj > 1)\n localAdj = 1;\n // `chromaAdj`: in colorful, mid-tone blocks, slight extra darkening\n // helps where luma alone underestimates QR structure.\n let chromaAdj = 0;\n if (range > 6 && average > 48 && average < 232) {\n const spreadBoost = spreadMean > 8 ? spreadMean - 8 : 0;\n const mid = 128 - Math.abs(average - 128);\n chromaAdj = int((spreadBoost * (range - 6) * mid) / 2200000);\n if (chromaAdj > 1)\n chromaAdj = 1;\n }\n // `varAdj`: if the surrounding block field has real variance, darken\n // more aggressively when the local mean still sits far above the\n // block minimum. This is what rescues many weak finder cases.\n let varAdj = 0;\n if (integSqr && range >= 6 && range <= 128) {\n const sq = integSqr[r1 + (x1 + 1)] - integSqr[r0 + (x1 + 1)] - integSqr[r1 + x0] + integSqr[r0 + x0];\n const meanSq = sq / area;\n let variance = meanSq - average * average;\n if (variance < 0)\n variance = 0;\n const gap = average - min;\n const num = gap * (variance - 196);\n const den = (variance + 832) * 9;\n // `variance` is clamped non-negative, so `den` stays strictly positive.\n varAdj = int(num / den);\n if (varAdj < -1)\n varAdj = -1;\n if (varAdj > 4)\n varAdj = 4;\n }\n cut = average + localAdj + chromaAdj + varAdj;\n // Small scene-level nudges are intentionally separate from the three\n // local terms above: they are cheap and only target known whole-scene\n // failure modes such as washed-out bright-spot images.\n if (spreadMean > 10 && range >= 8 && range <= 96 && average > min + 8 && average < 192)\n cut++;\n if (veryLowFrac > 0.68 && veryLowFrac < 0.86 && range >= 6 && range <= 20 && average < 196)\n cut++;\n cut += spotBias;\n if (cut < min)\n cut = min;\n if (cut > max)\n cut = max;\n // Emit one 8-pixel row of the current 8x8 block: compare against the\n // block cut, pack the 8 black/white decisions into one byte, then OR\n // that byte into the bitmap word(s) at the current x-bit offset.\n for (let yy = 0, pos = yPos * width + xPos, row = yPos * rows + col; yy < block; yy++, pos += width, row += rows) {\n let m = 0;\n if (brightness[pos] <= cut)\n m |= 1;\n if (brightness[pos + 1] <= cut)\n m |= 2;\n if (brightness[pos + 2] <= cut)\n m |= 4;\n if (brightness[pos + 3] <= cut)\n m |= 8;\n if (brightness[pos + 4] <= cut)\n m |= 16;\n if (brightness[pos + 5] <= cut)\n m |= 32;\n if (brightness[pos + 6] <= cut)\n m |= 64;\n if (brightness[pos + 7] <= cut)\n m |= 128;\n if (m === 0)\n continue;\n const lo = (m << shift) >>> 0;\n bm[row] |= lo;\n if (shift > 24)\n bm[row + 1] |= m >>> (32 - shift);\n }\n }\n }\n return matrix;\n}\nfunction patternEquals(p, p2) {\n if (Math.abs(p2.y - p.y) <= p2.moduleSize && Math.abs(p2.x - p.x) <= p2.moduleSize) {\n const diff = Math.abs(p2.moduleSize - p.moduleSize);\n return diff <= 1.0 || diff <= p.moduleSize;\n }\n return false;\n}\nfunction patternMerge(a, b) {\n const count = a.count + b.count;\n return {\n x: (a.count * a.x + b.count * b.x) / count,\n y: (a.count * a.y + b.count * b.y) / count,\n moduleSize: (a.count * a.moduleSize + b.count * b.moduleSize) / count,\n count,\n };\n}\nconst patternsConfirmed = (lst) => lst.filter((i) => i.count >= PATTERN_MIN_CONFIRMATIONS);\n/**\n * Since pattern means runs of identical color (dark or white), we cannot\n * have pattern like [true, true], because it will be hard to separate same color runs.\n * @param p boolean pattern\n * @param size size of run relative to others\n * @returns\n */\nfunction pattern(p, size) {\n const _size = size || utils.fillArr(p.length, 1);\n if (p.length !== _size.length)\n throw new Error('invalid pattern');\n if (!(p.length & 1))\n throw new Error('invalid pattern, length should be odd');\n const res = {\n center: Math.ceil(p.length / 2) - 1,\n length: p.length,\n pattern: p,\n size: _size,\n runs: () => utils.fillArr(p.length, 0),\n totalSize: sum(_size),\n total: (runs) => runs.reduce((acc, i) => acc + i),\n shift: (runs, n) => {\n for (let i = 0; i < runs.length - n; i++)\n runs[i] = runs[i + 2];\n for (let i = runs.length - n; i < runs.length; i++)\n runs[i] = 0;\n },\n checkSize(runs, moduleSize, v = PATTERN_VARIANCE) {\n const variance = moduleSize / v;\n for (let i = 0; i < runs.length; i++) {\n if (Math.abs(_size[i] * moduleSize - runs[i]) >= _size[i] * variance)\n return false;\n }\n return true;\n },\n add(out, x, y, total) {\n // ISO/IEC 18004:2024 §5.3.3.1 gives finder runs as \"1:1:3:1:1\";\n // §5.3.6 defines alignment as \"5 x 5 dark modules\", \"3 x 3 light\n // modules\", and a central dark module. Use this pattern's own run width\n // so alignment candidates are not divided by finder width 7.\n const moduleSize = total / res.totalSize;\n const cur = { x, y, moduleSize, count: 1 };\n for (let idx = 0; idx < out.length; idx++) {\n const f = out[idx];\n if (!patternEquals(f, cur))\n continue;\n return (out[idx] = patternMerge(f, cur));\n }\n out.push(cur);\n return;\n },\n toCenter(runs, end) {\n for (let i = p.length - 1; i > res.center; i--)\n end -= runs[i];\n end -= runs[res.center] / 2;\n return end;\n },\n check(b, runs, center, incr, maxCount) {\n const bm = b;\n let j = 0;\n let i = pointClone(center);\n const neg = pointNeg(incr);\n const check = (p, step) => {\n for (; bm.isInside(i) && !!bm.point(i) === res.pattern[p]; pointIncr(i, step)) {\n runs[p]++;\n j++;\n }\n if (runs[p] === 0)\n return true;\n const center = p === res.center;\n if (maxCount && !center && runs[p] > res.size[p] * maxCount)\n return true;\n return false;\n };\n for (let p = res.center; p >= 0; p--)\n if (check(p, neg))\n return false;\n i = pointClone(center);\n pointIncr(i, incr);\n j = 1;\n for (let p = res.center; p < res.length; p++)\n if (check(p, incr))\n return false;\n return j;\n },\n scanLine(b, y, xStart, xEnd, fn) {\n const bm = b;\n const runs = res.runs();\n // Finder scanning also couples to Bitmap internals so it can scan packed\n // 32-bit words directly instead of re-reading one pixel bit at a time.\n const words = bm.words;\n const vals = bm.value;\n const row = y * words;\n const pattern = res.pattern;\n // Scan one packed bitmap row by jumping whole equal-bit runs inside 32-bit\n // words; this keeps finder scanning from degenerating into per-pixel work.\n const bitAt = (x) => ((vals[row + (x >>> 5)] >>> (x & 31)) & 1) === 1;\n const runLen = (x, want) => {\n let wi = row + (x >>> 5);\n let bit = x & 31;\n let w = (vals[wi] >>> bit) >>> 0;\n let left = xEnd - x;\n let len = 0;\n while (left > 0) {\n const room = 32 - bit;\n let n = want ? ctz32(~w >>> 0) : ctz32(w);\n if (n > room)\n n = room;\n if (n > left)\n n = left;\n len += n;\n if (n < room && n < left)\n break;\n left -= n;\n if (left <= 0)\n break;\n wi++;\n bit = 0;\n w = vals[wi] >>> 0;\n }\n return len;\n };\n let pos = 0;\n let x = xStart;\n // If we start in middle of an image, skip first pattern run,\n // since we don't know run length of pixels from left side\n if (xStart)\n x += runLen(x, pattern[0]);\n for (; x < xEnd; x++) {\n const cur = bitAt(x);\n // Same run, continue counting\n if (cur === pattern[pos]) {\n const n = runLen(x, cur);\n runs[pos] += n;\n x += n - 1;\n // If not last element - continue counting\n if (x !== bm.width - 1)\n continue;\n // Last element finishes run, set x outside of run\n x++;\n }\n // Not last run: count new one\n if (pos !== res.length - 1) {\n runs[++pos]++;\n continue;\n }\n const found = fn(runs, x);\n if (found) {\n // We found pattern, reset runs counting\n pos = 0;\n runs.fill(0);\n }\n else if (found === false) {\n // Stop scanning\n break;\n }\n else {\n // Not found: shift runs by two (so pattern will continue)\n res.shift(runs, 2);\n pos = res.length - 2;\n runs[pos]++;\n }\n }\n },\n };\n return res;\n}\n// dark/light/dark/light/dark in 1:1:3:1:1 ratio\nconst FINDER = /* @__PURE__ */ pattern([true, false, true, false, true], [1, 1, 3, 1, 1]);\n// central light/dark/light runs of an alignment pattern in 1:1:1 ratio\nconst ALIGNMENT = /* @__PURE__ */ pattern([false, true, false]);\nfunction findFinder(b) {\n const bm = b;\n let found = [];\n function checkRuns(runs, v = 2) {\n const total = sum(runs);\n if (total < FINDER.totalSize)\n return false;\n const moduleSize = total / FINDER.totalSize;\n return FINDER.checkSize(runs, moduleSize, v);\n }\n // Non-diagonal line (horizontal or vertical)\n function checkLine(center, maxCount, total, incr) {\n const runs = FINDER.runs();\n let i = FINDER.check(bm, runs, center, incr, maxCount);\n if (i === false)\n return false;\n const runsTotal = sum(runs);\n if (5 * Math.abs(runsTotal - total) >= 2 * total)\n return false;\n if (checkRuns(runs))\n return FINDER.toCenter(runs, i);\n return false;\n }\n function check(runs, i, j) {\n if (!checkRuns(runs))\n return false;\n const total = sum(runs);\n let x = FINDER.toCenter(runs, j);\n // Vertical\n let y = checkLine({ x: int(x), y: i }, runs[2], total, { y: 1, x: 0 });\n if (y === false)\n return false;\n y += i;\n // Horizontal\n let xx = checkLine({ x: int(x), y: int(y) }, runs[2], total, { y: 0, x: 1 });\n if (xx === false)\n return false;\n x = xx + int(x);\n // Diagonal\n const dRuns = FINDER.runs();\n if (!FINDER.check(bm, dRuns, { x: int(x), y: int(y) }, { x: 1, y: 1 }))\n return false;\n if (!checkRuns(dRuns, PATTERN_VARIANCE_DIAGONAL))\n return false;\n FINDER.add(found, x, y, total);\n return true;\n }\n let skipped = false;\n // Start with high skip lines count until we find first pattern\n let ySkip = cap(int((3 * bm.height) / (4 * 97)), DETECT_MIN_ROW_SKIP);\n let done = false;\n for (let y = ySkip - 1; y < bm.height && !done; y += ySkip) {\n FINDER.scanLine(bm, y, 0, bm.width, (runs, x) => {\n if (!check(runs, y, x))\n return;\n // Found pattern\n // Reduce row skip, since we found pattern and qr code is nearby\n ySkip = 2;\n if (skipped) {\n // Already skipped, so we have at least 2 patterns, lets check if third is ok\n let count = 0;\n let total = 0;\n for (const p of found) {\n if (p.count < PATTERN_MIN_CONFIRMATIONS)\n continue;\n count++;\n total += p.moduleSize;\n }\n if (count < 3)\n return;\n const average = total / found.length;\n let deviation = 0.0;\n for (const p of found)\n deviation += Math.abs(p.moduleSize - average);\n if (deviation <= 0.05 * total) {\n done = true;\n return false;\n }\n }\n else if (found.length > 1) {\n // We found two top patterns, lets skip to approximate location of third pattern\n const q = patternsConfirmed(found);\n if (q.length < 2)\n return true;\n skipped = true;\n const d = int((Math.abs(q[0].x - q[1].x) - Math.abs(q[0].y - q[1].y)) / 2);\n if (d <= runs[2] + ySkip)\n return true;\n y += d - runs[2] - ySkip;\n return false;\n }\n return;\n });\n }\n const flen = found.length;\n if (flen < 3)\n throw new Error(`Finder: len(found) = ${flen}`);\n found.sort((i, j) => i.moduleSize - j.moduleSize);\n const pBest = utils.best();\n // Qubic complexity, but we stop search when we found 3 patterns, so not a problem\n for (let i = 0; i < flen - 2; i++) {\n const fi = found[i];\n for (let j = i + 1; j < flen - 1; j++) {\n const fj = found[j];\n const square0 = distance2(fi, fj);\n for (let k = j + 1; k < flen; k++) {\n const fk = found[k];\n if (fk.moduleSize > fi.moduleSize * 1.4)\n continue;\n const arr = [square0, distance2(fj, fk), distance2(fi, fk)].sort((a, b) => a - b);\n const a = arr[0];\n const b = arr[1];\n const c = arr[2];\n pBest.add(Math.abs(c - 2 * b) + Math.abs(c - 2 * a), [fi, fj, fk]);\n }\n }\n }\n const p = pBest.get();\n if (!p)\n throw new Error('cannot find finder');\n const p0 = p[0];\n const p1 = p[1];\n const p2 = p[2];\n const d01 = distance(p0, p1);\n const d12 = distance(p1, p2);\n const d02 = distance(p0, p2);\n let tl = p2;\n let bl = p0;\n let tr = p1;\n if (d12 >= d01 && d12 >= d02) {\n tl = p0;\n bl = p1;\n tr = p2;\n }\n else if (d02 >= d12 && d02 >= d01) {\n tl = p1;\n bl = p0;\n tr = p2;\n }\n // If cross product is negative -> flip points\n if ((tr.x - tl.x) * (bl.y - tl.y) - (tr.y - tl.y) * (bl.x - tl.x) < 0.0) {\n let _bl = bl;\n bl = tr;\n tr = _bl;\n }\n return { bl, tl, tr };\n}\nfunction findAlignment(b, est, allowanceFactor) {\n const bm = b;\n const { moduleSize } = est;\n const allowance = int(allowanceFactor * moduleSize);\n const leftX = cap(est.x - allowance, 0);\n const rightX = cap(est.x + allowance, undefined, bm.width - 1);\n const x = rightX - leftX;\n const topY = cap(est.y - allowance, 0);\n const bottomY = cap(est.y + allowance, undefined, bm.height - 1);\n const y = bottomY - topY;\n if (x < moduleSize * 3 || y < moduleSize * 3)\n throw new Error(`x = ${x}, y=${y} moduleSize = ${moduleSize}`);\n const xStart = leftX;\n const yStart = topY;\n // ISO/IEC 18004:2024 §12 h)3 scans the alignment pattern's white-square\n // outline from the provisional centre. `rightX` / `bottomY` are inclusive\n // clipped image coordinates; convert them to exclusive scan bounds below so\n // an exact 5x5 search window still includes its final row and column.\n const width = rightX - leftX + 1;\n const height = bottomY - topY + 1;\n const found = [];\n const xEnd = xStart + width;\n const middleY = int(yStart + height / 2);\n for (let yGen = 0; yGen < height; yGen++) {\n const diff = int((yGen + 1) / 2);\n const y = middleY + (yGen & 1 ? -diff : diff);\n let res;\n ALIGNMENT.scanLine(bm, y, xStart, xEnd, (runs, x) => {\n if (!ALIGNMENT.checkSize(runs, moduleSize))\n return;\n const total = sum(runs);\n const xx = ALIGNMENT.toCenter(runs, x);\n // Vertical\n const rVert = ALIGNMENT.runs();\n let v = ALIGNMENT.check(bm, rVert, { x: int(xx), y }, { y: 1, x: 0 }, 2 * runs[1]);\n if (v === false)\n return;\n v += y;\n const vTotal = sum(rVert);\n if (5 * Math.abs(vTotal - total) >= 2 * total)\n return;\n if (!ALIGNMENT.checkSize(rVert, moduleSize))\n return;\n const yy = ALIGNMENT.toCenter(rVert, v);\n res = ALIGNMENT.add(found, xx, yy, total);\n if (res)\n return false;\n return;\n });\n if (res)\n return res;\n }\n if (found.length > 0)\n return found[0];\n throw new Error('Alignment pattern not found');\n}\nfunction _single(b, from, to) {\n const bm = b;\n // http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\n let steep = false;\n let d = { x: Math.abs(to.x - from.x), y: Math.abs(to.y - from.y) };\n if (d.y > d.x) {\n steep = true;\n from = pointMirror(from);\n to = pointMirror(to);\n d = pointMirror(d);\n }\n let error = -d.x / 2;\n let step = { x: from.x >= to.x ? -1 : 1, y: from.y >= to.y ? -1 : 1 };\n let runPos = 0;\n let xLimit = to.x + step.x;\n // TODO: re-use pattern scanLine here?\n for (let x = from.x, y = from.y; x !== xLimit; x += step.x) {\n let real = { x, y };\n if (steep)\n real = pointMirror(real);\n // Starting from a dark finder center, walk until the ray crosses\n // light -> dark -> light; `BWBRunLength()` mirrors this to recover the\n // full finder width around the center point.\n if ((runPos === 1) === !!bm.point(real)) {\n if (runPos === 2)\n return distance({ x, y }, from);\n runPos++;\n }\n error += d.y;\n if (error <= 0)\n continue;\n if (y === to.y)\n break;\n y += step.y;\n error -= d.x;\n }\n if (runPos === 2)\n return distance({ x: to.x + step.x, y: to.y }, from);\n return NaN;\n}\nfunction BWBRunLength(b, from, to) {\n const bm = b;\n let result = _single(bm, from, to);\n let scaleY = 1.0;\n const { x: fx, y: fy } = from;\n let otherToX = fx - (to.x - fx);\n const bw = bm.width;\n if (otherToX < 0) {\n scaleY = fx / (fx - otherToX);\n otherToX = 0;\n }\n else if (otherToX >= bw) {\n scaleY = (bw - 1 - fx) / (otherToX - fx);\n otherToX = bw - 1;\n }\n // ISO/IEC 18004:2024 §12 b) uses finder runs in the 1:1:3:1:1 ratio,\n // and §12 h)1 derives module size from finder pattern width. Clipping the\n // reflected ray before `int()` would avoid `>>> 0` wrapping negative near-edge\n // coordinates to a huge uint32 and clamping to the wrong edge. Policy: keep\n // the existing heuristic because the direct fix degraded decode performance\n // on current vectors (BoofCV sweep 134/485 -> 132/485).\n let otherToY = int(fy - (to.y - fy) * scaleY);\n let scaleX = 1.0;\n const bh = bm.height;\n if (otherToY < 0) {\n scaleX = fy / (fy - otherToY);\n otherToY = 0;\n }\n else if (otherToY >= bh) {\n scaleX = (bh - 1 - fy) / (otherToY - fy);\n otherToY = bh - 1;\n }\n otherToX = int(fx + (otherToX - fx) * scaleX);\n result += _single(bm, from, { x: otherToX, y: otherToY });\n // Both mirrored rays include the center module once, so drop one module\n // after summing them into the full finder-width estimate.\n return result - 1.0;\n}\nfunction moduleSizeAvg(b, p1, p2) {\n const est1 = BWBRunLength(b, pointInt(p1), pointInt(p2));\n const est2 = BWBRunLength(b, pointInt(p2), pointInt(p1));\n // One ray can fail near image edges, so keep the surviving estimate\n // instead of discarding the finder-width measurement outright.\n if (Number.isNaN(est1))\n return est2 / FINDER.totalSize;\n if (Number.isNaN(est2))\n return est1 / FINDER.totalSize;\n return (est1 + est2) / (2 * FINDER.totalSize);\n}\nfunction detect(b) {\n const bm = b;\n let bl, tl, tr;\n try {\n ({ bl, tl, tr } = findFinder(bm));\n }\n catch (e) {\n try {\n // ISO/IEC 18004:2024 §12 b)5 says to \"reverse the colouring of the\n // light and dark pixels\" for reflectance reversal. `detect()` works on\n // the `decodeQR()`-owned scratch bitmap, so keep the retry in-place for\n // performance instead of cloning before this private/test-only helper.\n bm.negate();\n ({ bl, tl, tr } = findFinder(bm));\n }\n catch (e) {\n bm.negate(); // undo negate\n throw e;\n }\n }\n const moduleSize = (moduleSizeAvg(bm, tl, tr) + moduleSizeAvg(bm, tl, bl)) / 2;\n if (moduleSize < 1.0)\n throw new Error(`invalid moduleSize = ${moduleSize}`);\n // Estimate size\n const tltr = int(distance(tl, tr) / moduleSize + 0.5);\n const tlbl = int(distance(tl, bl) / moduleSize + 0.5);\n let size = int((tltr + tlbl) / 2 + 7);\n // QR side lengths are 21 + 4 * (version - 1), so normalize the estimate\n // to the nearest size that is 1 modulo 4 before decoding the version.\n const rem = size % 4;\n if (rem === 0)\n size++; // -> 1\n else if (rem === 2)\n size--; // -> 1\n else if (rem === 3)\n size -= 2;\n const version = utils.info.size.decode(size);\n utils.validateVersion(version);\n let alignmentPattern;\n if (utils.info.alignmentPatterns(version).length > 0) {\n // Bottom right estimate\n const br = { x: tr.x - tl.x + bl.x, y: tr.y - tl.y + bl.y };\n const c = 1.0 - 3.0 / (utils.info.size.encode(version) - 7);\n // Estimated alignment pattern position\n const est = {\n x: int(tl.x + c * (br.x - tl.x)),\n y: int(tl.y + c * (br.y - tl.y)),\n moduleSize,\n count: 1,\n };\n for (let i = 4; i <= 16; i <<= 1) {\n try {\n alignmentPattern = findAlignment(bm, est, i);\n break;\n }\n catch (e) { }\n }\n }\n const toTL = { x: 3.5, y: 3.5 };\n const toTR = { x: size - 3.5, y: 3.5 };\n const toBL = { x: 3.5, y: size - 3.5 };\n let br;\n let toBR;\n if (alignmentPattern) {\n br = alignmentPattern;\n toBR = { x: size - 6.5, y: size - 6.5 };\n }\n else {\n br = { x: tr.x - tl.x + bl.x, y: tr.y - tl.y + bl.y };\n toBR = { x: size - 3.5, y: size - 3.5 };\n }\n const from = [tl, tr, br, bl];\n const bits = transform(bm, size, from, [toTL, toTR, toBR, toBL]);\n return { bits: bits, points: from };\n}\n// Perspective transform by 4 points\nfunction squareToQuadrilateral(p) {\n const d3 = { x: p[0].x - p[1].x + p[2].x - p[3].x, y: p[0].y - p[1].y + p[2].y - p[3].y };\n if (d3.x === 0.0 && d3.y === 0.0) {\n // Parallelogram fast path: perspective terms vanish, so the homography\n // reduces to an affine transform.\n return [\n [p[1].x - p[0].x, p[2].x - p[1].x, p[0].x],\n [p[1].y - p[0].y, p[2].y - p[1].y, p[0].y],\n [0.0, 0.0, 1.0],\n ];\n }\n else {\n const d1 = { x: p[1].x - p[2].x, y: p[1].y - p[2].y };\n const d2 = { x: p[3].x - p[2].x, y: p[3].y - p[2].y };\n const den = d1.x * d2.y - d2.x * d1.y;\n const p13 = (d3.x * d2.y - d2.x * d3.y) / den;\n const p23 = (d1.x * d3.y - d3.x * d1.y) / den;\n return [\n [p[1].x - p[0].x + p13 * p[1].x, p[3].x - p[0].x + p23 * p[3].x, p[0].x],\n [p[1].y - p[0].y + p13 * p[1].y, p[3].y - p[0].y + p23 * p[3].y, p[0].y],\n [p13, p23, 1.0],\n ];\n }\n}\n// Transform quadrilateral to square by 4 points\nfunction transform(b, size, from, to) {\n const bm = b;\n // TODO: check\n // https://math.stackexchange.com/questions/13404/mapping-irregular-quadrilateral-to-a-rectangle\n const p = squareToQuadrilateral(to);\n // Homographies are scale-invariant, so the adjugate is enough here;\n // there is no need to divide by the determinant when inverting `p`.\n const qToS = [\n [\n p[1][1] * p[2][2] - p[2][1] * p[1][2],\n p[2][1] * p[0][2] - p[0][1] * p[2][2],\n p[0][1] * p[1][2] - p[1][1] * p[0][2],\n ],\n [\n p[2][0] * p[1][2] - p[1][0] * p[2][2],\n p[0][0] * p[2][2] - p[2][0] * p[0][2],\n p[1][0] * p[0][2] - p[0][0] * p[1][2],\n ],\n [\n p[1][0] * p[2][1] - p[2][0] * p[1][1],\n p[2][0] * p[0][1] - p[0][0] * p[2][1],\n p[0][0] * p[1][1] - p[1][0] * p[0][1],\n ],\n ];\n const sToQ = squareToQuadrilateral(from);\n const transform = sToQ.map((i) => i.map((_, qx) => i.reduce((acc, v, j) => acc + v * qToS[j][qx], 0)));\n const res = new Bitmap(size);\n const points = utils.fillArr(2 * size, 0);\n const pointsLength = points.length;\n for (let y = 0; y < size; y++) {\n const p = transform;\n for (let i = 0; i < pointsLength - 1; i += 2) {\n const x = i / 2 + 0.5;\n const y2 = y + 0.5;\n const den = p[2][0] * x + p[2][1] * y2 + p[2][2];\n // ISO/IEC 18004:2024 §12 h) maps sampling grid intersections back to\n // image coordinates before deciding dark/light state. Clip projected\n // coordinates before `int()` because `>>> 0` wraps negative samples to a\n // huge uint32 and would clamp them to the far image edge.\n points[i] = int(cap((p[0][0] * x + p[0][1] * y2 + p[0][2]) / den, 0, bm.width - 1));\n points[i + 1] = int(cap((p[1][0] * x + p[1][1] * y2 + p[1][2]) / den, 0, bm.height - 1));\n }\n for (let i = 0; i < pointsLength; i += 2) {\n if (bm.get(points[i], points[i + 1]))\n res.set((i / 2) | 0, y, true);\n }\n }\n return res;\n}\n// Same as in drawTemplate, but reading\n// TODO: merge in CoderType?\nfunction readInfoBits(b) {\n const bm = b;\n // Walk each reserved copy from the highest-numbered module back to module 0\n // so the shift accumulator rebuilds the canonical bit string from MSB to LSB.\n const readBit = (x, y, out) => (out << 1) | (bm.get(x, y) ? 1 : 0);\n const size = bm.height;\n // Version information\n let version1 = 0;\n for (let y = 5; y >= 0; y--)\n for (let x = size - 9; x >= size - 11; x--)\n version1 = readBit(x, y, version1);\n let version2 = 0;\n for (let x = 5; x >= 0; x--)\n for (let y = size - 9; y >= size - 11; y--)\n version2 = readBit(x, y, version2);\n // Format information\n let format1 = 0;\n for (let x = 0; x < 6; x++)\n format1 = readBit(x, 8, format1);\n format1 = readBit(7, 8, format1);\n format1 = readBit(8, 8, format1);\n format1 = readBit(8, 7, format1);\n for (let y = 5; y >= 0; y--)\n format1 = readBit(8, y, format1);\n let format2 = 0;\n for (let y = size - 1; y >= size - 7; y--)\n format2 = readBit(8, y, format2);\n for (let x = size - 8; x < size; x++)\n format2 = readBit(x, 8, format2);\n return { version1, version2, format1, format2 };\n}\nfunction parseInfo(b) {\n const bm = b;\n // Population count over xor -> hamming distance\n const size = bm.height;\n const { version1, version2, format1, format2 } = readInfoBits(bm);\n // Guess format\n let format;\n const bestFormat = utils.best();\n for (const ecc of ['medium', 'low', 'high', 'quartile']) {\n for (let mask = 0; mask < 8; mask++) {\n const bits = utils.info.formatBits(ecc, mask);\n const cur = { ecc, mask: mask };\n if (bits === format1 || bits === format2) {\n format = cur;\n break;\n }\n bestFormat.add(utils.popcnt(format1 ^ bits), cur);\n if (format1 !== format2)\n bestFormat.add(utils.popcnt(format2 ^ bits), cur);\n }\n }\n if (format === undefined && bestFormat.score() <= MAX_BITS_ERROR)\n format = bestFormat.get();\n if (format === undefined)\n throw new Error('invalid format pattern');\n let version = utils.info.size.decode(size); // Guess version based on bitmap size\n // Versions 1-6 do not carry version-information words, so side length is\n // the only authoritative version source until version 7 adds those fields.\n if (version < 7)\n utils.validateVersion(version);\n else {\n version = undefined;\n // Guess version\n const bestVer = utils.best();\n for (let ver = 7; ver <= 40; ver++) {\n const bits = utils.info.versionBits(ver);\n if (bits === version1 || bits === version2) {\n version = ver;\n break;\n }\n bestVer.add(utils.popcnt(version1 ^ bits), ver);\n if (version1 !== version2)\n bestVer.add(utils.popcnt(version2 ^ bits), ver);\n }\n if (version === undefined && bestVer.score() <= MAX_BITS_ERROR)\n version = bestVer.get();\n if (version === undefined)\n throw new Error('invalid version pattern');\n if (utils.info.size.encode(version) !== size)\n throw new Error('invalid version size');\n }\n return { version, ...format };\n}\n// ISO/IEC 18004:2024 §7.4.3.2 says each ECI is a \"6-digit assignment\n// number\"; §7.4.3.4 says invoked ECIs apply until \"a change of ECI\".\n// Decode through platform TextDecoder only: unsupported labels may throw on\n// some runtimes, and callers needing them can provide a custom textDecoder.\nconst eciToEncoding = {\n 1: 'iso-8859-1',\n 2: 'ibm437',\n 3: 'iso-8859-1',\n 4: 'iso-8859-2',\n 5: 'iso-8859-3',\n 6: 'iso-8859-4',\n 7: 'iso-8859-5',\n 8: 'iso-8859-6',\n 9: 'iso-8859-7',\n 10: 'iso-8859-8',\n 11: 'iso-8859-9',\n 13: 'iso-8859-11',\n 15: 'iso-8859-13',\n 16: 'iso-8859-14',\n 17: 'iso-8859-15',\n 18: 'iso-8859-16',\n 20: 'shift-jis',\n 21: 'windows-1250',\n 22: 'windows-1251',\n 23: 'windows-1252',\n 24: 'windows-1256',\n 25: 'utf-16be',\n 26: 'utf-8',\n 28: 'big5',\n 29: 'gbk',\n 30: 'euc-kr',\n};\nfunction decodeWithEci(bytes, eci = 26) {\n // ISO/IEC 18004:2024 §7.3.2 says QR's \"default interpretation\" is\n // \"ECI 000003 representing the ISO/IEC 8859-1 character set\". Keep UTF-8\n // here so this library's UTF-8 byte-mode encoder round-trips without ECI.\n const encoding = eciToEncoding[eci];\n if (!encoding)\n throw new Error(`Unsupported ECI: ${eci}`);\n return new TextDecoder(encoding).decode(bytes);\n}\nfunction decodeBitmap(b, decoder = decodeWithEci) {\n const bm = b;\n const size = bm.height;\n if (size < 21 || (size & 0b11) !== 1 || size !== bm.width)\n throw new Error(`decode: invalid size=${size}`);\n const { version, mask, ecc } = parseInfo(bm);\n const tpl = utils.drawTemplate(version, ecc, mask);\n const { total } = utils.info.capacity(version, ecc);\n const bytes = new Uint8Array(total);\n let pos = 0;\n let buf = 0;\n let bitPos = 0;\n utils.zigzag(tpl, mask, (x, y, m) => {\n bitPos++;\n buf <<= 1;\n buf |= +(!!bm.get(x, y) !== m);\n if (bitPos !== 8)\n return;\n bytes[pos++] = buf;\n bitPos = 0;\n buf = 0;\n });\n if (pos !== total)\n throw new Error(`decode: pos=${pos}, total=${total}`);\n let bits = Array.from(utils.interleave(version, ecc).decode(bytes))\n .map((i) => utils.bin(i, 8))\n .join('');\n // Reverse operation of index.ts/encode working on bits\n const readBits = (n) => {\n if (n > bits.length)\n throw new Error('Not enough bits');\n const val = bits.slice(0, n);\n bits = bits.slice(n);\n return val;\n };\n const toNum = (n) => Number(`0b${n}`);\n // reverse of common.info.modebits\n const modes = {\n '0000': 'terminator',\n '0001': 'numeric',\n '0010': 'alphanumeric',\n '0100': 'byte',\n '0111': 'eci',\n '1000': 'kanji',\n };\n let res = '';\n // ISO/IEC 18004:2024 §7.3.2 defines no-ECI byte data as ECI 000003\n // / ISO-8859-1. Keep ECI 26 for compatibility with legacy no-ECI UTF-8\n // payloads and with encodeQR's UTF-8 byte-mode default.\n let eci = 26; // Default to utf-8 for compat with old behavior\n while (true) {\n if (bits.length < 4)\n break;\n const modeBits = readBits(4);\n const mode = modes[modeBits];\n if (mode === undefined)\n throw new Error(`Unknown modeBits=${modeBits} res=\"${res}\"`);\n if (mode === 'terminator')\n break;\n const countBits = utils.info.lengthBits(version, mode);\n let count = toNum(readBits(countBits));\n if (mode === 'numeric') {\n while (count >= 3) {\n const v = toNum(readBits(10));\n if (v >= 1000)\n throw new Error(`numberic(3) = ${v}`);\n res += v.toString().padStart(3, '0');\n count -= 3;\n }\n if (count === 2) {\n const v = toNum(readBits(7));\n if (v >= 100)\n throw new Error(`numeric(2) = ${v}`);\n res += v.toString().padStart(2, '0');\n }\n else if (count === 1) {\n const v = toNum(readBits(4));\n if (v >= 10)\n throw new Error(`Numeric(1) = ${v}`);\n res += v.toString();\n }\n }\n else if (mode === 'alphanumeric') {\n while (count >= 2) {\n const v = toNum(readBits(11));\n res += utils.info.alphabet.alphanumerc.encode([Math.floor(v / 45), v % 45]).join('');\n count -= 2;\n }\n if (count === 1)\n res += utils.info.alphabet.alphanumerc.encode([toNum(readBits(6))]).join('');\n }\n else if (mode === 'eci') {\n const first = toNum(readBits(8));\n if ((first & 0x80) === 0)\n eci = first;\n else if ((first & 0xc0) === 0x80)\n eci = ((first & 0x3f) << 8) | toNum(readBits(8));\n else\n eci = ((first & 0x1f) << 16) | toNum(readBits(16));\n continue; // ECI doesn't carry data, just sets state\n }\n else if (mode === 'byte') {\n const data = new Uint8Array(count);\n for (let i = 0; i < count; i++)\n data[i] = toNum(readBits(8));\n res += decoder(data, eci);\n }\n else if (mode === 'kanji') {\n // ISO/IEC 18004:2024 §7.3.6 says Kanji mode uses Shift JIS and\n // \"Each two-byte character value is compacted to a 13-bit binary\n // codeword.\" Keep it unsupported until a real interop fixture can verify\n // the 13-bit-to-Shift-JIS mapping rather than adding untested decoding.\n throw new Error('Kanji mode is not supported');\n }\n else\n throw new Error(`Unknown mode=${mode}`);\n }\n return res;\n}\n// Center-crop to a square and return the original-image offset so\n// `decodeQR()` can map detected points back into caller coordinates.\nfunction cropToSquare(img) {\n const image = img;\n const data = Array.isArray(image.data) ? new Uint8Array(image.data) : image.data;\n const { height, width } = image;\n const squareSize = Math.min(height, width);\n const offset = {\n x: Math.floor((width - squareSize) / 2),\n y: Math.floor((height - squareSize) / 2),\n };\n const bytesPerPixel = getBytesPerPixel(img);\n const croppedData = new Uint8Array(squareSize * squareSize * bytesPerPixel);\n for (let y = 0; y < squareSize; y++) {\n const srcPos = ((y + offset.y) * width + offset.x) * bytesPerPixel;\n const dstPos = y * squareSize * bytesPerPixel;\n const length = squareSize * bytesPerPixel;\n croppedData.set(data.subarray(srcPos, srcPos + length), dstPos);\n }\n return { offset, img: { height: squareSize, width: squareSize, data: croppedData } };\n}\n/**\n * Decode text from a QR image.\n * @param img - RGB or RGBA image data that contains a QR code.\n * @param opts - Decoder hooks and image preprocessing options. See {@link DecodeOpts}.\n * @returns Decoded QR payload as a string.\n * @throws If the image, decoder options, or QR contents are invalid. {@link Error}\n * @example\n * Decode text from a QR image.\n * ```ts\n * import encodeQR, { Bitmap } from 'qr';\n * import decodeQR from 'qr/decode.js';\n * const bits = encodeQR('Hello world', 'raw', { scale: 4 });\n * const bm = new Bitmap({ width: bits[0].length, height: bits.length }, bits);\n * const text = decodeQR(bm.toImage());\n * ```\n */\nexport function decodeQR(img, opts = {}) {\n let image = img;\n const options = opts;\n for (const field of ['height', 'width']) {\n if (!Number.isSafeInteger(image[field]) || image[field] <= 0)\n throw new Error(`invalid img.${field}=${image[field]} (${typeof image[field]})`);\n }\n const { data } = image;\n if (!Array.isArray(data) && !isBytes(data))\n throw new Error(`invalid image.data=${data} (${typeof data})`);\n if (options.cropToSquare !== undefined && typeof options.cropToSquare !== 'boolean')\n throw new Error(`invalid opts.cropToSquare=${options.cropToSquare}`);\n // Validate callbacks before decoding so payload mode does not decide whether\n // an invalid public option is accepted.\n for (const fn of [\n 'textDecoder',\n 'pointsOnDetect',\n 'imageOnBitmap',\n 'imageOnDetect',\n 'imageOnResult',\n ]) {\n if (options[fn] !== undefined && typeof options[fn] !== 'function')\n throw new Error(`invalid opts.${fn}=${options[fn]} (${typeof options[fn]})`);\n }\n let offset = { x: 0, y: 0 };\n if (options.cropToSquare)\n ({ img: image, offset } = cropToSquare(image));\n const bmp = toBitmap(image);\n if (options.imageOnBitmap)\n options.imageOnBitmap(bmp.toImage());\n const { bits, points } = detect(bmp);\n if (options.pointsOnDetect) {\n // Report finder points in the caller's original coordinate space after any center-crop.\n const p = points.map((i) => ({ ...i, ...pointAdd(i, offset) }));\n options.pointsOnDetect(p);\n }\n if (options.imageOnDetect)\n options.imageOnDetect(bits.toImage());\n const res = decodeBitmap(bits, options.textDecoder);\n if (options.imageOnResult)\n options.imageOnResult(bits.toImage());\n return res;\n}\n/**\n * Default export alias for {@link decodeQR}.\n * @param img - RGB or RGBA image data that contains a QR code.\n * @param opts - Decoder hooks and image preprocessing options. See {@link DecodeOpts}.\n * @returns Decoded QR payload as a string.\n * @throws If the image, decoder options, or QR contents are invalid. {@link Error}\n * @example\n * Decode a rendered QR image via the default decoder export.\n * ```ts\n * import encodeQR, { Bitmap } from 'qr';\n * import decodeQR from 'qr/decode.js';\n * const bits = encodeQR('Hello world', 'raw', { scale: 4 });\n * const bm = new Bitmap({ width: bits[0].length, height: bits.length }, bits);\n * decodeQR(bm.toImage());\n * ```\n */\nexport default decodeQR;\n// Additional private helpers for focused regression tests; separate from the\n// existing `_tests` object so its current keys remain stable.\nexport const _TESTS = /* @__PURE__ */ Object.freeze({\n findAlignment: findAlignment,\n transform: transform,\n});\n// Unsafe API utils, exported only for tests\nexport const _tests = /* @__PURE__ */ Object.freeze({\n toBitmap,\n decodeBitmap,\n findFinder,\n detect,\n});\n//# sourceMappingURL=decode.js.map","/*!\nCopyright (c) 2023 Paul Miller (paulmillr.com)\nThe library paulmillr-qr is dual-licensed under the Apache 2.0 OR MIT license.\nYou can select a license of your choice.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n/**\n * Optional DOM related utilities. Some utilities, useful to decode QR from camera:\n * - draw overlay: helps user to position QR code on camera\n * - draw bitmap: useful for debugging (what decoder sees)\n * - draw result: show scanned QR code\n * The code is fragile: it is easy to make subtle errors, which will break decoding.\n * @module\n */\nimport decodeQR, {} from \"./decode.js\";\n/**\n * Read rendered element dimensions from computed CSS.\n * @param elm - Element whose computed width and height should be parsed.\n * @returns Pixel width and height parsed from computed styles.\n * @example\n * Read rendered element dimensions from computed CSS.\n * ```ts\n * import { getSize } from 'qr/dom.js';\n * if (typeof document !== 'undefined') {\n * const video = document.querySelector('video')!;\n * void getSize(video);\n * }\n * ```\n */\nexport const getSize = (elm) => {\n const css = getComputedStyle(elm);\n const width = Math.floor(+css.width.split('px')[0]);\n const height = Math.floor(+css.height.split('px')[0]);\n return { width, height };\n};\nconst setCanvasSize = (canvas, height, width) => {\n // NOTE: setting canvas.width even to same size will clear & redraw it (flickering)\n if (canvas.height !== height)\n canvas.height = height;\n if (canvas.width !== width)\n canvas.width = width;\n};\nconst getCanvasContext = (canvas) => {\n const context = canvas.getContext('2d');\n if (context === null)\n throw new Error('Cannot get canvas context');\n return { canvas, context };\n};\nconst clearCanvas = ({ canvas, context }) => {\n context.clearRect(0, 0, canvas.width, canvas.height);\n};\n/**\n * Handles canvases for QR code decoding.\n * @param elements - Optional output canvases. See {@link QRCanvasElements}.\n * @param opts - Drawing and decode options for the helper canvases. See {@link QRCanvasOpts}.\n * @example\n * Create a `QRCanvas` that paints overlay highlights onto a DOM canvas.\n * ```ts\n * import { QRCanvas } from 'qr/dom.js';\n * if (typeof document !== 'undefined') {\n * const overlay = document.createElement('canvas');\n * const canvas = new QRCanvas({ overlay });\n * void canvas;\n * }\n * ```\n */\nexport class QRCanvas {\n opts;\n lastDetect = 0;\n main;\n overlay;\n bitmap;\n resultQR;\n constructor(elements = {}, opts = {}) {\n const { overlay, bitmap, resultQR } = elements;\n this.opts = {\n resultBlockSize: 8,\n overlayMainColor: 'green',\n overlayFinderColor: 'blue',\n overlaySideColor: 'black',\n overlayTimeout: 500,\n cropToSquare: true,\n ...opts,\n };\n // TODO: check https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas\n this.main = getCanvasContext(document.createElement('canvas'));\n if (overlay)\n this.overlay = getCanvasContext(overlay);\n if (bitmap)\n this.bitmap = getCanvasContext(bitmap);\n if (resultQR) {\n this.resultQR = getCanvasContext(resultQR);\n this.resultQR.context.imageSmoothingEnabled = false;\n }\n }\n setSize(height, width) {\n // `resultQR` is resized in `drawResultQr()` because it tracks the decoded\n // QR image size, not the current source frame dimensions.\n setCanvasSize(this.main.canvas, height, width);\n if (this.overlay)\n setCanvasSize(this.overlay.canvas, height, width);\n if (this.bitmap)\n setCanvasSize(this.bitmap.canvas, height, width);\n }\n drawBitmap({ data, height, width }) {\n if (!this.bitmap)\n return;\n const imgData = new ImageData(Uint8ClampedArray.from(data), width, height);\n let offset = { x: 0, y: 0 };\n if (this.opts.cropToSquare) {\n // Match `decodeQR()`'s center-crop offset so the bitmap debug view\n // stays aligned with detected points remapped into the source frame.\n offset = {\n x: Math.floor((this.bitmap.canvas.width - width) / 2),\n y: Math.floor((this.bitmap.canvas.height - height) / 2),\n };\n }\n this.bitmap.context.putImageData(imgData, offset.x, offset.y);\n }\n drawResultQr({ data, height, width }) {\n if (!this.resultQR)\n return;\n const blockSize = this.opts.resultBlockSize;\n setCanvasSize(this.resultQR.canvas, height, width);\n const imgData = new ImageData(Uint8ClampedArray.from(data), width, height);\n this.resultQR.context.putImageData(imgData, 0, 0);\n // The result canvas owns these inline rendering/layout styles: CSS Images\n // defines `image-rendering: pixelated`, and scaled QR modules become hard\n // to read with default smoothing. Use class/id CSS for unrelated styling.\n this.resultQR.canvas.style = `image-rendering: pixelated; width: ${blockSize * width}px; height: ${blockSize * height}px`;\n }\n drawOverlay(points) {\n if (!this.overlay)\n return;\n const ctx = this.overlay.context;\n const height = this.overlay.canvas.height;\n const width = this.overlay.canvas.width;\n // Sides\n if (this.opts.cropToSquare && height !== width) {\n const squareSize = Math.min(height, width);\n const offset = {\n x: Math.floor((width - squareSize) / 2),\n y: Math.floor((height - squareSize) / 2),\n };\n // Clear only central part (flickering)\n ctx.clearRect(offset.x, offset.y, squareSize, squareSize);\n ctx.fillStyle = this.opts.overlaySideColor;\n // Trailing sidebars start where the floor-centered crop ends; odd\n // remainders put the extra pixel on the trailing side.\n if (width > height) {\n const right = offset.x + squareSize;\n ctx.fillRect(0, 0, offset.x, height); // left\n ctx.fillRect(right, 0, width - right, height); // right\n }\n else if (height > width) {\n const bottom = offset.y + squareSize;\n ctx.fillRect(0, 0, width, offset.y); // top\n ctx.fillRect(0, bottom, width, height - bottom); // bottom\n }\n }\n else {\n ctx.clearRect(0, 0, width, height);\n }\n if (points) {\n const [tl, tr, br, bl] = points;\n // Main area\n ctx.fillStyle = this.opts.overlayMainColor;\n ctx.beginPath();\n ctx.moveTo(tl.x, tl.y);\n ctx.lineTo(tr.x, tr.y);\n ctx.lineTo(br.x, br.y);\n ctx.lineTo(bl.x, bl.y);\n ctx.fill();\n ctx.closePath();\n // Finders\n ctx.fillStyle = this.opts.overlayFinderColor;\n for (const p of points) {\n if (!('moduleSize' in p))\n continue;\n const x = p.x - 3 * p.moduleSize;\n const y = p.y - 3 * p.moduleSize;\n const size = 7 * p.moduleSize;\n ctx.fillRect(x, y, size, size);\n }\n }\n }\n drawImage(image, height, width) {\n this.setSize(height, width);\n const { context } = this.main;\n context.drawImage(image, 0, 0, width, height);\n const data = context.getImageData(0, 0, width, height);\n const options = {\n cropToSquare: this.opts.cropToSquare,\n textDecoder: this.opts.textDecoder,\n };\n if (this.bitmap)\n options.imageOnBitmap = (img) => this.drawBitmap(img);\n if (this.overlay)\n options.pointsOnDetect = (points) => this.drawOverlay(points);\n if (this.resultQR)\n options.imageOnResult = (img) => this.drawResultQr(img);\n try {\n const res = decodeQR(data, options);\n this.lastDetect = Date.now();\n return res;\n }\n catch (e) {\n // Camera-frame decoding is fail-soft UI policy: README says \"even if\n // one frame fails, the next frame can succeed\", so decode hook errors\n // are treated as frame misses here instead of breaking the loop.\n if (this.overlay && Date.now() - this.lastDetect > this.opts.overlayTimeout)\n this.drawOverlay();\n }\n return;\n }\n clear() {\n clearCanvas(this.main);\n if (this.overlay)\n clearCanvas(this.overlay);\n if (this.bitmap)\n clearCanvas(this.bitmap);\n if (this.resultQR)\n clearCanvas(this.resultQR);\n }\n}\nclass QRCamera {\n stream;\n player;\n constructor(stream, player) {\n this.stream = stream;\n this.player = player;\n this.setStream(stream);\n }\n setStream(stream) {\n this.stream = stream;\n const { player } = this;\n // Keep camera preview autoplaying inline on mobile before attaching the stream.\n player.setAttribute('autoplay', '');\n player.setAttribute('muted', '');\n player.setAttribute('playsinline', '');\n player.srcObject = stream;\n }\n /**\n * Returns list of cameras\n * NOTE: available only after first getUserMedia request, so cannot be additional method\n */\n async listDevices() {\n if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices)\n throw new Error('Media Devices not supported');\n const devices = await navigator.mediaDevices.enumerateDevices();\n return devices\n .filter((device) => device.kind === 'videoinput')\n .map((i) => ({\n deviceId: i.deviceId,\n label: i.label || `Camera ${i.deviceId}`,\n }));\n }\n /**\n * Change stream to different camera\n * @param deviceId - devideId from '.listDevices'\n */\n async setDevice(deviceId) {\n // Stop-first is intentional for camera switching: WPT's Media Capture\n // `GUM-deny` and `GUM-impossible-constraint` tests show getUserMedia()\n // can reject, but this DOM helper prioritizes releasing constrained\n // camera hardware before requesting the replacement stream.\n this.stop();\n const stream = await navigator.mediaDevices.getUserMedia({\n video: { deviceId: { exact: deviceId } },\n });\n this.setStream(stream);\n }\n readFrame(canvas, fullSize = false) {\n const { player } = this;\n // Default to the rendered player box so overlay coordinates stay aligned\n // with the on-screen preview; `fullSize` opts into intrinsic frame pixels.\n if (fullSize)\n return canvas.drawImage(player, player.videoHeight, player.videoWidth);\n const size = getSize(player);\n return canvas.drawImage(player, size.height, size.width);\n }\n stop() {\n for (const track of this.stream.getTracks())\n track.stop();\n }\n}\n/**\n * Creates new QRCamera from frontal camera\n * @param player - HTML Video element\n * @returns Camera wrapper backed by the selected media stream.\n * @example\n * Create a camera helper and read frames into a `QRCanvas`.\n * ```ts\n * import { QRCanvas, frontalCamera } from 'qr/dom.js';\n * if (typeof document !== 'undefined') {\n * const player = document.querySelector('video')!;\n * const canvas = new QRCanvas();\n * const camera = await frontalCamera(player);\n * camera.readFrame(canvas);\n * camera.stop();\n * }\n * ```\n */\nexport async function frontalCamera(player) {\n const stream = await navigator.mediaDevices.getUserMedia({\n video: {\n // Ask for screen resolution\n height: { ideal: window.screen.height },\n width: { ideal: window.screen.width },\n // Media Capture names the screen/user-facing camera \"user\" and the\n // world-facing camera \"environment\". This helper intentionally treats the\n // phone's camera side as \"frontal\", since it is the main QR scanning side.\n facingMode: 'environment',\n },\n });\n return new QRCamera(stream, player);\n}\n/**\n * Run callback in a loop with requestAnimationFrame.\n * @param cb - Callback invoked for each requested animation frame.\n * @returns Canceller that stops the scheduled loop.\n * @example\n * Run a callback on every animation frame until cancelled.\n * ```ts\n * import { frameLoop } from 'qr/dom.js';\n * if (typeof requestAnimationFrame !== 'undefined') {\n * const cancel = frameLoop(() => {});\n * cancel();\n * }\n * ```\n */\nexport function frameLoop(cb) {\n let handle = undefined;\n function loop(ts) {\n // HTML `AnimationFrameProvider` IDL defines `FrameRequestCallback` as\n // `undefined (DOMHighResTimeStamp time)`. The returned canceller is for the\n // scheduled handle between frames, not self-cancel from inside `cb`, because\n // this loop requests the next frame only after `cb` returns.\n cb(ts);\n handle = requestAnimationFrame(loop);\n }\n handle = requestAnimationFrame(loop);\n return () => {\n if (handle === undefined)\n return;\n cancelAnimationFrame(handle);\n handle = undefined;\n };\n}\n/**\n * Convert an SVG string into a PNG data URL in browser environments.\n * @param svgData - SVG markup to rasterize.\n * @param width - Output PNG width in pixels.\n * @param height - Output PNG height in pixels.\n * @returns Promise that resolves to a PNG `data:` URL.\n * @example\n * Convert an SVG string into a PNG data URL in browser environments.\n * ```ts\n * import { svgToPng } from 'qr/dom.js';\n * const svg = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1 1\"><rect width=\"1\" height=\"1\"/></svg>';\n * if (typeof DOMParser !== 'undefined' && typeof document !== 'undefined') {\n * const pngUrl = await svgToPng(svg, 256, 256);\n * void pngUrl;\n * }\n * ```\n */\nexport function svgToPng(svgData, width, height) {\n return new Promise((resolve, reject) => {\n if (!(Number.isSafeInteger(width) &&\n Number.isSafeInteger(height) &&\n width > 0 &&\n height > 0 &&\n width < 8192 &&\n height < 8192))\n return reject(new Error('invalid width and height: ' + width + ' ' + height));\n const domparser = new DOMParser();\n const doc = domparser.parseFromString(svgData, 'image/svg+xml');\n const svgElement = doc.documentElement;\n svgElement.setAttribute('width', String(width));\n svgElement.setAttribute('height', String(height));\n const rect = doc.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n rect.setAttribute('fill', 'white');\n svgElement.insertBefore(rect, svgElement.firstChild);\n const serializer = new XMLSerializer();\n const source = serializer.serializeToString(doc);\n const img = new Image();\n // HTMLImageElement IDL exposes `src` as the URL attribute and `onload` /\n // `onerror` as EventHandler attributes. Register handlers before mutating\n // `src` so a fast image implementation cannot complete before listeners\n // exist.\n img.onload = function () {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return reject(new Error('was not able to create 2d context'));\n ctx.drawImage(img, 0, 0, width, height);\n const dataUrl = canvas.toDataURL('image/png');\n resolve(dataUrl);\n };\n img.onerror = reject;\n img.src = 'data:image/svg+xml,' + encodeURIComponent(source);\n });\n}\n/**\n * Convert GIF bytes into a PNG blob in browser environments.\n * @param gifBytes - GIF file contents.\n * @returns Promise that resolves to a PNG blob.\n * @throws If the browser cannot create an image bitmap or rendering context for the GIF. {@link Error}\n * @example\n * Convert GIF bytes into a PNG blob in browser environments.\n * ```ts\n * import { gifToPng } from 'qr/dom.js';\n * if (typeof window !== 'undefined') {\n * const gif = new Uint8Array(await (await fetch('/qr.gif')).arrayBuffer());\n * const png = await gifToPng(gif);\n * void png;\n * }\n * ```\n */\nexport async function gifToPng(gifBytes) {\n const blob = new Blob([gifBytes], { type: 'image/gif' });\n const bitmap = await createImageBitmap(blob);\n try {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext('bitmaprenderer', { alpha: false });\n if (!ctx)\n throw new Error('was not able to create bitmaprenderer context');\n ctx.transferFromImageBitmap(bitmap);\n return await canvas.convertToBlob({ type: 'image/png' });\n }\n finally {\n // Release the decoded bitmap even when context creation or PNG encoding fails.\n bitmap.close();\n }\n}\n//# sourceMappingURL=dom.js.map"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2m0 2a8 8 0 1 0 0 16a8 8 0 0 0 0-16m0 3a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H8a1 1 0 1 1 0-2h3V8a1 1 0 0 1 1-1"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="m13.299 3.148l8.634 14.954a1.5 1.5 0 0 1-1.299 2.25H3.366a1.5 1.5 0 0 1-1.299-2.25l8.634-14.954c.577-1 2.02-1 2.598 0M12 4.898L4.232 18.352h15.536zM12 15a1 1 0 1 1 0 2a1 1 0 0 1 0-2m0-7a1 1 0 0 1 1 1v4a1 1 0 1 1-2 0V9a1 1 0 0 1 1-1"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M18.447 4.106a1 1 0 0 1 .447 1.341l-1.174 2.35A9.99 9.99 0 0 1 22 16v1a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1a9.99 9.99 0 0 1 4.28-8.204L5.106 5.447a1 1 0 0 1 1.788-.894L8.028 6.82A10 10 0 0 1 12 6c1.411 0 2.755.292 3.972.82l1.134-2.267a1 1 0 0 1 1.341-.447M12 8a8 8 0 0 0-8 8v1h16v-1a8 8 0 0 0-8-8m-3.5 4a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3m7 0a1.5 1.5 0 1 1 0 3a1.5 1.5 0 0 1 0-3"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M19 4.741V8a3 3 0 1 1 0 6v3c0 1.648-1.881 2.589-3.2 1.6l-2.06-1.546A8.66 8.66 0 0 0 10 15.446v2.844a2.71 2.71 0 0 1-5.316.744l-1.57-5.496a4.7 4.7 0 0 1 3.326-7.73l3.018-.168a9.34 9.34 0 0 0 4.19-1.259l2.344-1.368C17.326 2.236 19 3.197 19 4.741M5.634 15.078l.973 3.407A.71.71 0 0 0 8 18.29v-3.01l-1.56-.087a5 5 0 0 1-.806-.115M17 4.741L14.655 6.11A11.3 11.3 0 0 1 10 7.604v5.819c1.787.246 3.488.943 4.94 2.031L17 17zM8 7.724l-1.45.08a2.7 2.7 0 0 0-.17 5.377l.17.015l1.45.08zM19 10v2a1 1 0 0 0 .117-1.993z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="M24 0v24H0V0zM12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2m0 2a8 8 0 1 0 0 16a8 8 0 0 0 0-16m0 2.757a1 1 0 0 1 .993.884l.007.116v6.076l1.828-1.828a1 1 0 0 1 1.498 1.32l-.084.094l-3.535 3.535a1 1 0 0 1-1.32.083l-.094-.083l-3.536-3.535a1 1 0 0 1 1.32-1.498l.094.084l1.83 1.828V7.757a1 1 0 0 1 1-1Z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M3.636 11.293a1 1 0 0 0 0 1.414l5.657 5.657a1 1 0 0 0 1.414-1.414L6.757 13H20a1 1 0 1 0 0-2H6.757l3.95-3.95a1 1 0 0 0-1.414-1.414z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="m14.707 5.636l5.657 5.657a1 1 0 0 1 0 1.414l-5.657 5.657a1 1 0 0 1-1.414-1.414l3.95-3.95H4a1 1 0 1 1 0-2h13.243l-3.95-3.95a1 1 0 1 1 1.414-1.414"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="M24 0v24H0V0zM12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M19 5a1 1 0 1 0 0-2H5a1 1 0 1 0 0 2zM7.05 12.703a1 1 0 0 0 1.415 0L11 10.167V20a1 1 0 0 0 2 0v-9.833l2.536 2.536a1 1 0 0 0 1.414-1.415l-4.243-4.242a1 1 0 0 0-1.414 0L7.05 11.288a1 1 0 0 0 0 1.415"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="M24 0v24H0V0zM12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.105.074l.014.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.092l.01-.009l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2m0 2a8 8 0 1 0 0 16a8 8 0 0 0 0-16m-.707 3.046a1 1 0 0 1 1.32-.083l.094.083l3.536 3.535a1 1 0 0 1-1.32 1.498l-.094-.083l-1.83-1.83v6.077a1 1 0 0 1-1.992.116L11 16.243v-6.076l-1.828 1.829a1 1 0 0 1-1.498-1.32l.084-.095z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M12.707 3.636a1 1 0 0 0-1.414 0L5.636 9.293a1 1 0 1 0 1.414 1.414L11 6.757V20a1 1 0 1 0 2 0V6.757l3.95 3.95a1 1 0 0 0 1.414-1.414z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="M24 0v24H0V0zM12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M6.293 6.293a1 1 0 0 1 1.414 0l5 5a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414-1.414L10.586 12L6.293 7.707a1 1 0 0 1 0-1.414m6 0a1 1 0 0 1 1.414 0l5 5a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414-1.414L16.586 12l-4.293-4.293a1 1 0 0 1 0-1.414"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M4 12a8 8 0 0 1 8-8c5.367 0 8.445 4.445 8.006 8.39c-.12 1.086-.438 1.723-.72 2.095s-.571.54-.733.62c-.753.377-1.133.212-1.283.093c-.19-.15-.372-.503-.284-1.034l.006-.032l.503-5.032a1 1 0 0 0-1.867-.59A5.03 5.03 0 0 0 12.03 7C9.279 7 7 9.229 7 12c0 2.774 2.288 5 5.038 5c1.212 0 2.35-.436 3.237-1.176c.175.36.425.682.753.942c.917.726 2.172.752 3.42.128c.337-.168.91-.51 1.434-1.203s.956-1.682 1.112-3.08C22.556 7.554 18.633 2 12 2C6.477 2 2 6.477 2 12s4.477 10 10 10a9.96 9.96 0 0 0 4.445-1.04a1 1 0 0 0-.89-1.791A8 8 0 0 1 4 12m5 0c0-1.647 1.364-3 3.03-3c1.92 0 3.364 1.767 2.974 3.62c-.291 1.378-1.539 2.38-2.966 2.38C10.368 15 9 13.645 9 12"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M18.71 17.565a4.25 4.25 0 0 0 0-6.01l-6.54-6.54A1 1 0 0 1 13.584 3.6l6.54 6.54a6.25 6.25 0 1 1-8.838 8.84l-7.954-7.955A4.501 4.501 0 0 1 9.698 4.66l7.953 7.953a2.752 2.752 0 0 1-3.892 3.891L6.513 9.257a1 1 0 0 1 1.414-1.415l7.247 7.247a.751.751 0 0 0 1.063-1.062L8.284 6.074A2.501 2.501 0 0 0 4.746 9.61l7.954 7.954a4.25 4.25 0 0 0 6.01 0Z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M11.778 4.371a1 1 0 0 1-.15 1.407c-.559.452-.924.886-1.163 1.276a2 2 0 1 1-2.46 1.792c-.024-.492.02-1.15.293-1.892c.326-.884.956-1.829 2.073-2.732a1 1 0 0 1 1.407.15ZM15 5a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2zm0 4a1 1 0 1 0 0 2h5a1 1 0 1 0 0-2zM4 14a1 1 0 0 1 1-1h15a1 1 0 1 1 0 2H5a1 1 0 0 1-1-1m1 3a1 1 0 1 0 0 2h15a1 1 0 1 0 0-2zM3.006 8.846a2 2 0 1 0 2.459-1.792c.239-.39.604-.824 1.164-1.276A1 1 0 1 0 5.37 4.222c-1.117.903-1.747 1.848-2.073 2.732a4.8 4.8 0 0 0-.292 1.892Z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M14 3a2 2 0 0 1 1.995 1.85L16 5v1.055l3.641.976a2 2 0 0 1 1.448 2.304l-.034.145l-2.588 9.66a2 2 0 0 1-2.304 1.447l-.145-.033l-.587-.157c-.322.33-.759.55-1.246.595L14 21H5a2 2 0 0 1-1.995-1.85L3 19V5a2 2 0 0 1 1.85-1.995L5 3zm0 2H5v14h9zm2 3.126v10.353l.535.143l2.589-9.66L16 8.127Z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M4 5a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v16.028c0 1.22-1.38 1.93-2.372 1.221L12 18.229l-5.628 4.02c-.993.71-2.372 0-2.372-1.22zm3-1a1 1 0 0 0-1 1v15.057l5.128-3.663a1.5 1.5 0 0 1 1.744 0L18 20.057V5a1 1 0 0 0-1-1z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M15 3a2 2 0 0 1 2 2v4h2a2 2 0 0 1 2 2v8a1 1 0 1 1 0 2H3a1 1 0 1 1 0-2V9a2 2 0 0 1 2-2h2V5a2 2 0 0 1 2-2zM7 9H5v10h2zm12 2h-2v8h2zm-4-6H9v14h6zm-2 10v2h-2v-2zm0-4v2h-2v-2zm0-4v2h-2V7z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M18.93 5a3 3 0 0 1 2.38 1.173l.116.163l1.07 1.605a3 3 0 0 1 .496 1.443l.008.222V16a2 2 0 0 1-1.85 1.995L21 18h-.17a3.001 3.001 0 0 1-5.592.172L15.17 18H8.829a3.001 3.001 0 0 1-5.591.172L3.17 18H3a2 2 0 0 1-1.995-1.85L1 16V8a3 3 0 0 1 2.824-2.995L4 5zM18 16a1 1 0 1 0 0 2a1 1 0 0 0 0-2M6 16a1 1 0 1 0 0 2a1 1 0 0 0 0-2m10.268-4H3v4h.17a3.001 3.001 0 0 1 5.66 0h6.34a3.001 3.001 0 0 1 5.66 0H21v-3h-3a2 2 0 0 1-1.732-1m2.662-5H18v4h3V9.606a1 1 0 0 0-.168-.555l-1.07-1.606A1 1 0 0 0 18.93 7M6 7H4a1 1 0 0 0-.993.883L3 8v2h3zm5 0H8v3h3zm5 0h-3v3h3z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm0 2H5v14h14zm-3 6a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1zm-1 2H9v2h6zm1-6a1 1 0 0 1 .117 1.993L16 9H8a1 1 0 0 1-.117-1.993L8 7z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm0 6H5v10h14zM8.5 15a1 1 0 1 1 0 2h-1a1 1 0 1 1 0-2zm4 0a1 1 0 0 1 .117 1.993L12.5 17h-1a1 1 0 0 1-.117-1.993L11.5 15zm-4-4a1 1 0 0 1 .117 1.993L8.5 13h-1a1 1 0 0 1-.117-1.993L7.5 11zm4 0a1 1 0 1 1 0 2h-1a1 1 0 1 1 0-2zm4 0a1 1 0 0 1 .117 1.993L16.5 13h-1a1 1 0 0 1-.117-1.993L15.5 11zM19 5H5v2h14z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M17 12a5 5 0 1 1 0 10a5 5 0 0 1 0-10m-1-9a1 1 0 0 1 1 1v1h2a2 2 0 0 1 2 2v3h-2V7H5v12h5v2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2V4a1 1 0 0 1 2 0v1h6V4a1 1 0 0 1 1-1m1 11a3 3 0 1 0 0 6a3 3 0 0 0 0-6m0 .5a1 1 0 0 1 1 1v.5a1 1 0 1 1 0 2h-1a1 1 0 0 1-1-1v-1.5a1 1 0 0 1 1-1M8.5 14a1 1 0 0 1 .117 1.993L8.5 16H8a1 1 0 0 1-.117-1.993L8 14zm2.5-4a1 1 0 1 1 0 2H8a1 1 0 1 1 0-2z"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="M2 6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3zm3-1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm11 2a1 1 0 0 1 1-1h1a1 1 0 1 1 0 2h-1a1 1 0 0 1-1-1m-7 5a3 3 0 1 1 6 0a3 3 0 0 1-6 0m3-5a5 5 0 1 0 0 10a5 5 0 0 0 0-10"/></g>`};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={width:24,height:24,body:`<g fill="none" fill-rule="evenodd"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="currentColor" d="m8.076 7.26l.095.083l8.486 8.485a1 1 0 0 1-.246 1.595l-.116.05L5.91 21.3c-1.952.72-3.853-1.115-3.26-3.064l.05-.146L6.526 7.705a1 1 0 0 1 1.447-.516zm-.214 2.602l-3.285 8.92a.5.5 0 0 0 .562.664l.08-.023l8.918-3.286zm9.245 1.742c.911.048 2.16.24 3.246.892a1 1 0 0 1-.925 1.77l-.104-.055c-.682-.41-1.554-.57-2.322-.61a8 8 0 0 0-.95.004l-.316.031a1 1 0 0 1-.281-1.98a8.6 8.6 0 0 1 1.652-.053m2.025-2.786a1 1 0 0 1 .116 1.993l-.116.007h-.708a1 1 0 0 1-.116-1.993l.116-.007zM15.95 8.05a1 1 0 0 1 .083 1.32l-.083.094l-1.06 1.061a1 1 0 0 1-1.498-1.32l.083-.094l1.06-1.06a1 1 0 0 1 1.415 0m-2.587-5.266c.448 1.346.208 2.82-.072 3.85a10 10 0 0 1-.69 1.863a1 1 0 0 1-1.79-.893a8 8 0 0 0 .55-1.496c.227-.832.341-1.735.166-2.475l-.061-.216a1 1 0 1 1 1.897-.633m5.415 2.438a1 1 0 0 1 0 1.414l-.707.707a1 1 0 1 1-1.414-1.414l.707-.707a1 1 0 0 1 1.414 0"/></g>`};export{e as default};
|