diff --git a/.gitattributes b/.gitattributes
index 45cb03d30becb396f81eb6a66d010e1ae7f32dce..6704f75a49269726f47c61ac54110cafa3c28f02 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -129,3 +129,9 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
.venvs/kimodo/lib/python3.10/site-packages/gradio/media_assets/videos/world.mp4 filter=lfs diff=lfs merge=lfs -text
.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/frontend/static/fonts/SourceSansPro/SourceSansPro-Bold.woff2 filter=lfs diff=lfs merge=lfs -text
.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/frontend/static/fonts/SourceSansPro/SourceSansPro-Regular.woff2 filter=lfs diff=lfs merge=lfs -text
+.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcS7mPOC2.js.br filter=lfs diff=lfs merge=lfs -text
+.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CarOLJnO2.js.br filter=lfs diff=lfs merge=lfs -text
+.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Crrb2Aik.js.br filter=lfs diff=lfs merge=lfs -text
+.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyCl8rPi2.js.br filter=lfs diff=lfs merge=lfs -text
+.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKvqWxTe2.js.br filter=lfs diff=lfs merge=lfs -text
+.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/KWqUpNMN.js.br filter=lfs diff=lfs merge=lfs -text
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-CEk4en_.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-CEk4en_.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d631db2a1c323505c2783d469d164449642817de
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-CEk4en_.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-HsouD-b2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-HsouD-b2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4b7104a96a53361794129b1dfe273c6078bd3fe2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-HsouD-b2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-LwB57Pf.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-LwB57Pf.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3d5f95520d2ec66e5855057807bb96133e5422e5
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/-LwB57Pf.js.br
@@ -0,0 +1,2 @@
+o@dµ¦¯oʱd¹ío”½ʛÐF8Ýpès{÷ë(À0Ҳg›
FŸAЫðÜÔ[Bøi¨_„ְAÁ»4ÞÜ{X¸(ön(Õî²RY³šw�®v*5rVÓb!['Óýÿ‹‡oؕóĽmß]½Žýö«•×y¯ߐ�#„@êEÕZ�ÀXd) ޱ¯\P�tÌp D‹Ãàݏ{H þtã³X`˜ÐL<٫I [A×zLR†ܒ1„ғ1'ùé/Æ
+Ü,äâ�:OÔTZ7Ž·ÚÒk€½¼~,•´+õƒı¶û7ÓzúÌý‡CQe8wp�ÑÞ
éR16ÎônH³ݽ¹„ÿY‘Ðï̓qnw!uà&\&ã@qéàûғ‘i¼‹{½õŠáÝi/ØgúiH-ƒs=Zµ±>0"^£®2൵ëëwQY:Ê(ÂðëӍ�c½–44'i\Ö*ޏù³™„bèU¦þñ{e@oöP
®ÿª½qPϭ˗³%ÆGMXȑ�”a^óúµäÄÉD•€ªâë3]éÔçҁ“¿�žaÔÿ`æ*³!iPcɍRyz@ÈS�qœòá‹\HV¸ç°9uDKRÍ4¢ª{N,“PšE‚'P�ZêFÖ+Öïطtx%ÛGw”÷¢
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/2vu9xGoA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/2vu9xGoA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..77fc1454a0a7cbcbd599ff662772f4e9e7dd61d0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/2vu9xGoA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3IyW9uNZ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3IyW9uNZ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..953ad58bc9c4541ea159ed398f27a081d4e599bd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3IyW9uNZ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3KSax-3e2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3KSax-3e2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3dab13de3520e82fe7376c5283b06ae0ce18ead7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3KSax-3e2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3a0kV368.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3a0kV368.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5741909eef5eb39e22ebf6058f7eb3d6cb437b77
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3a0kV368.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3kb7iahY.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3kb7iahY.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..87454ff4c4bd54008109c23503bb180e04ef3c23
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3kb7iahY.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3vHQnZPP.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3vHQnZPP.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..285895978238025515f6ce6a61549f96cd777bd8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/3vHQnZPP.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/4zjvQwZ6.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/4zjvQwZ6.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..479eb9f0a6759bf3ed703a106c42d352c013221e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/4zjvQwZ6.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/5T9M7enD2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/5T9M7enD2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..59e75d9f791188c9d8ff17656b126903414eabad
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/5T9M7enD2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/5Vk9WsqE2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/5Vk9WsqE2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4a8b579f791569aa7e38ca65aa8541f7a6bac595
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/5Vk9WsqE2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6HuDEYFq.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6HuDEYFq.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b9c8d6a92c6ec2dbb32ade3e3d6b22f29b32932e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6HuDEYFq.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6ebfNCwL2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6ebfNCwL2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7c2aa33090ff30804a1d7e85c6690d2e5c782629
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6ebfNCwL2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6wtusvIl2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6wtusvIl2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..13eb7b595bff914ef96d6aa18a428e1d485fbf32
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6wtusvIl2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6xsOOyvX.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6xsOOyvX.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..722a0278d45184c1cbf7c47e6e2c1209e71b336a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/6xsOOyvX.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/7P9cT8WK.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/7P9cT8WK.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c5a74612a43d4f924a5529cfd64fdfc0e6b64ef9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/7P9cT8WK.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/7mfrrhYP.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/7mfrrhYP.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3ec1c5a920ffb0edf27d5f2d0b319836625caedd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/7mfrrhYP.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/813JXoos.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/813JXoos.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b642f7eea048e8b65e0c682932f6a5dabad86472
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/813JXoos.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/814adGya.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/814adGya.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bc33041f144a14cb0f7116094a27f3f7c5921a82
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/814adGya.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/8KTMPg_p2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/8KTMPg_p2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a8fe7fd05f379c32547c726f04b8f472c754400e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/8KTMPg_p2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/8ZF4iR8S.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/8ZF4iR8S.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a4aaa3e59968807bfdaae6d1b85fed11bc297e46
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/8ZF4iR8S.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9BcLhjYw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9BcLhjYw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2190e1f3fefe291ef3e7fce098f1c85ad4bf28dd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9BcLhjYw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9eoqNFPs2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9eoqNFPs2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c30625f0818c2b5db0c2f7e6e0ffd70176568f8d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9eoqNFPs2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9fjMLKSz2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9fjMLKSz2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6cfa034aa861c7352b6deab82c0984d34e13201c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9fjMLKSz2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9qzV5S7c.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9qzV5S7c.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4149e128b5acd1028dad37c3584c770c5c170b18
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9qzV5S7c.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9yH_4iYc.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9yH_4iYc.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..84186dec2c54def1a476424302f28e1a021d6543
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/9yH_4iYc.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/AL7zGNml.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/AL7zGNml.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9f5167a55de95611e38b5b6c89a4583a30392adb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/AL7zGNml.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ASG7U8t_2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ASG7U8t_2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..81f0161235f8efe15b4fbb04b1e2a4d1974e7c88
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ASG7U8t_2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Aow-zjsR2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Aow-zjsR2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e548f5d989058175dc94b5e2fe24d7669640db74
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Aow-zjsR2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-OM1-hR2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-OM1-hR2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..62dcef82b687caa004ce809f4c34418824f0077d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-OM1-hR2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-qquC9g.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-qquC9g.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b3e3276e36d5a0d48d04ec24ebaa110ab5d28537
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-qquC9g.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-vSKB4k2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-vSKB4k2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..005ec93e31aa4f831fee45e5ff520b149b0bd53e
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B-vSKB4k2.js.br
@@ -0,0 +1 @@
+«`ķ¯ÍÓ<™y¨d�öèš-?ˆÈÔMÀÂwš4ۓÒÎcNËòM–¹«_¾C›ÛÊGÂ\9Fþ2`ˆ¬:Zá*›ঠž`™�ϚOñ§†KLó6æðFg뻡dêí)ó}óyH–¡š첐è¦7”ç¿Öb¤u×ßx�GjåšÇ'GäLsmd«@GÚä Ÿ)rf2s˜ɚfɱbêIŸf+?Yь±$ï8–͐�.76ZY"SÌO²ó¾"›ó1Ž$ùU÷ý‡\D%TÄc9"Z¤pæ`µC|føԃñ_Äâ¹$噈ªUäÉÕô’–¶#o›S2Ìâ³í✓w®
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0Or5dEf.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0Or5dEf.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..77ebfcb7b433e2c701638618b9f3b8b1aea51ce0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0Or5dEf.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0RfiViZ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0RfiViZ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1799673e9a8783f6b291c42c8ab6d85205928f12
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0RfiViZ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0V8JQL12.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0V8JQL12.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..515ca3eefefbb6ed244ec215bc8ef434b9f6722d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0V8JQL12.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0esDauO2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0esDauO2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0e028b37c9ace8be8dc3b3a1a6593baffe474638
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0esDauO2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0j1q9gR.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0j1q9gR.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..712a44f8fe0a7eaf487436ac6eccb076aeff86bf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0j1q9gR.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0ucVxYr2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0ucVxYr2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..62446e7c0d29558bc3f688077d08576f963e7cb1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B0ucVxYr2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B17g67Bf2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B17g67Bf2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f3c0754b04f4e72f365b8c23c8c9f38bb543c5b2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B17g67Bf2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1LvqVGS.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1LvqVGS.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3ef5b5bfe95657923a20c1935ee71777e5975562
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1LvqVGS.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1PRDFsw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1PRDFsw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3539353b11ec0a428a8fafaf2a4472b8ef22cdbc
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1PRDFsw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1XCpoZ_.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1XCpoZ_.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cd46858884197330c0805f33858b8927b71734b6
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1XCpoZ_.js.br
@@ -0,0 +1 @@
+‹!€var e={name:`stl`,extensions:{".stl":{isBinary:!0}}};export{e as t};
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1sMBlVO2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1sMBlVO2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..df90902b5ecd89f1e408cb01a8f91270c45cfefb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1sMBlVO2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1xC5jHJ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1xC5jHJ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1e1fc8644caf0be37147e31932a52a565bacbdba
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B1xC5jHJ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B3CmVlaL2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B3CmVlaL2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b39d33e1e3e9789c799c2539cf7f375911f52644
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B3CmVlaL2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B4DIoDMf2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B4DIoDMf2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b1a9dc893f074492acf6259ff26827846060dd82
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B4DIoDMf2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B57vfRjl.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B57vfRjl.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7f1a07011e3ab024e164733ce5667e1f20d2f93f
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B57vfRjl.js.br
@@ -0,0 +1,3 @@
+y <w,ø'ræ&HòBy¢!ä˜@ÁÉ܉^ÄÓWSëê[ÒÎ%!Š
Lä“ F·—#
+vÍbc„¥]vÎð¦Ü]—¹Íõi"5Ýrä„&¨ܺ%JJNöT•eÜäñPçô´ÊË>
+-Ð.›BîÊão†9ÉÊÆp÷6ÁáºCD»+�þФ„ç·%”ö7.SÛ۷FƒʾâõåF™‹}ÜñÑÇbÓÙ/|Çëý2IJEðÉd c—f`Íþ=êϪt]»¤º[²[ÁbÐÌ{»ªMAR¹c¤a¡ÝF>q†ä#…1µ˜8ƒ±×ð¬ÇÙÅ›ìšè?Ãfº‘W��pø‹œ,t�©üE
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B5E98Zwy.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B5E98Zwy.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6f4b8e3fc827d902e6d5609c4de372930a875d3d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B5E98Zwy.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B66rviep.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B66rviep.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3e7d3209098f9796edf413fb0cd0c8b0765dc093
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B66rviep.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8O-h2vC2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8O-h2vC2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e838945a50ab59ca0adaf527eb8cc7e8e69f52aa
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8O-h2vC2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8bT7b6a2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8bT7b6a2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d7ce7f0c5d8272e097bc58c30d75c49e047c008f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8bT7b6a2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8gBHxth2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8gBHxth2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..48cefa5c1adc4429684dedb4392629d957093b2a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8gBHxth2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8kiplG82.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8kiplG82.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7bf8532d3fa3639f4d552fe473a55c0bfdef40b5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B8kiplG82.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B91Ub71Z.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B91Ub71Z.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..692c03f7be5c51d88ca72b7b90497d6f882fe40b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B91Ub71Z.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9HdJ7fD2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9HdJ7fD2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f7bf81b2aaa02dc206e1b1bb1a668370faa4fe87
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9HdJ7fD2.js.br
@@ -0,0 +1 @@
+ÿ@äÐÎý—ÉÚXїšºé�úfO¶f4¶v>&ö€åe¯�§nâg?/ép¤ƒ�ÂÓ3D®þ¦QZ7’Z·vܶšúўæC‰ò)ëìJ'ÒSØ̗©sftNٶ±�-W0UÏ2>Âx´Ú.ùX-ìµÕdõÂwXméä!Ѻ$¢�RârÞ&öÒ_;v茗Œ߲bSœT(c.aß#õã$]�eJ©rsr傈®ø¨‰õù•)P�K¦ƒÉ1z$i!±žˆü®Žþm€/õL<)Vü$^ƒÚp«Õ¶¤Ãf.yÿ©·ÒQü5ðV�L£8À£ßO”¤Á¹SÖ|ï�Ó`©�Üóß[½\ ì§A'Ó(þ=
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9YSBUCV.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9YSBUCV.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9ffb5b7765d43f7daa45f5c75c9abda4954ea2da
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9YSBUCV.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9gaS8YZ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9gaS8YZ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..55b7af4b959c8d96f5adbddbb0f8f2a5917f551c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B9gaS8YZ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BA3To4RE2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BA3To4RE2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d7613f61138b5805bedb03b9691c11b85ef31a3e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BA3To4RE2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BAIdu02S2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BAIdu02S2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5fc2e56e37dbc225cb4878ea439dccf65bc9d2aa
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BAIdu02S2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BCTYjnZ72.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BCTYjnZ72.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..87b38948cdb8ae7a45a4dff24c1985d9ceae70ee
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BCTYjnZ72.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BDMNwahE.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BDMNwahE.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c1c2524016b27b9e628fa0c7b7165376b83e95b0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BDMNwahE.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BDYyMvmW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BDYyMvmW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..14507d86e8c95d681128b20074920917e8449a5c
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BDYyMvmW.js.br
@@ -0,0 +1 @@
+_ äp[}%Á«'3¹án¹#} þû—/¡ֲ–mIøkžú³öM/Ÿ ‰µˆO'>�l4”Ë÷³ç
Oö9VÕ̏J荷Ñïá+
;�wFl¼ßÇJ´y:5KâŒ$UBøè»RÇåR3ƒÂþ>Ü*ÿNØAþÄ?Î#ùNVỐ�^%Løa
j(4\puº+d~ÔzøS³°ËUƒ¦z× 7œõùýùƒªítI…Óh7¿éßO°”†˜¬
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BEYSTsRp.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BEYSTsRp.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..365b00e918fe5d2300dff35c83375d55eaf2f8f2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BEYSTsRp.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFDR5mSs2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFDR5mSs2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..58a28e9c5bf97a721bba6379a1d644eceaa77574
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFDR5mSs2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFSpzYZ22.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFSpzYZ22.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1aeb86c5c2a1cc60b455b5d43176b609ef5aa69d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFSpzYZ22.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFVEBWdY.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFVEBWdY.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..52c8264dbac8a7117bbad1579f3ae7333852b5f0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFVEBWdY.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFYMk4Sb2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFYMk4Sb2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a435b35b3b7eee27e18ee1a12c2c8e37ff30e75f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFYMk4Sb2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFn4kmIs2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFn4kmIs2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e1bbc36eb9f8a81aacfa6a98ac2534ccefe09b52
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFn4kmIs2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFos40Yu.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFos40Yu.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6fbd2fdabf4fbaeb80bab4690e2c1877a00de4ef
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFos40Yu.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFpWo3d82.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFpWo3d82.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6326c2edd3434e3f36907bbe7da4a8980eefc922
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BFpWo3d82.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGGm5lWr2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGGm5lWr2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8a8c3d386fc3226a5eacd362a53ae28f3fc9f07e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGGm5lWr2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGOoM4pO.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGOoM4pO.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..63e4681151cd79a16509a2c41d9797275d7288b7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGOoM4pO.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGOtWTK9.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGOtWTK9.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..76b69603005275d696c3142c68d235fd413021c2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGOtWTK9.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGV7ODbu.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGV7ODbu.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..450b9e8b8d7f7c0cc4dab56003d29039634e8d93
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGV7ODbu.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BG_AQBtT.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BG_AQBtT.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..24425aa5ebdd6be56e0387003d0b4092134e7ccb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BG_AQBtT.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGiINnL4.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGiINnL4.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c531d3e52ab191facaff71e1336dedb568dcc62d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGiINnL4.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGkEP4m-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGkEP4m-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..300d2226a1d9f56353812119410ff9ee1809e1b4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BGkEP4m-.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BH3ncdkW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BH3ncdkW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f1348eb93ef45bab63322f8142c874209cabf863
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BH3ncdkW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHG4owxi.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHG4owxi.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5373e75d2d9cbefd56ecf4653da3f88f92214ed4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHG4owxi.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHJAWphC2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHJAWphC2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..08e15d5c520010c364e498bd1bcdcef09d73de09
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHJAWphC2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHYReDw4.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHYReDw4.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9b00e8b43673c165c277b7ff1fb0b12bcf975ebf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHYReDw4.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHiA7Yc52.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHiA7Yc52.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..61950e0e87b8336203b44cab047729464e9e0dd1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHiA7Yc52.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHl1rArM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHl1rArM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..dd474e6d033900fa7f33211a498946900d57e26d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BHl1rArM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BI8TBd8l.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BI8TBd8l.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9db9d37166a08a099ffb02a348377159aa9b2446
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BI8TBd8l.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BIUQDB3t.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BIUQDB3t.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..faf05b6b2cd8604458bb7dd807ea645a5c6e884e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BIUQDB3t.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BJEoyuYG.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BJEoyuYG.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f5e9d036d4d170722f0ade1c5ef8498b29401255
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BJEoyuYG.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BJMlPOQ1.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BJMlPOQ1.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3ef7b8bfc350cac3ce9298bb576d8ac9147b04b2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BJMlPOQ1.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BK7sr30f.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BK7sr30f.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4f4153f976cb414d2f02be80d59f40dfe08e0ca4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BK7sr30f.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BKW7RodG.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BKW7RodG.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d5b267b60a2ae44e76e9ce23dd4e775753f31402
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BKW7RodG.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLaFPV342.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLaFPV342.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7f173b6ca68d566c1fef8f97530efc661dc306a8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLaFPV342.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLinz7V9.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLinz7V9.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3199cb860d6b4dc54b7929b4a2ce874fdecb8c27
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLinz7V9.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLkppfAX2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLkppfAX2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e87ae59487e0230472169a40310a36b1e3c8e65f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLkppfAX2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLqdD1Ul.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLqdD1Ul.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..445fa3902a57f5b4ae63f23450ffbf1adf98e043
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLqdD1Ul.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLrg7nb12.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLrg7nb12.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3e7ed3df99b6106c0ea8cc1bdf93c7f7b0134cad
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BLrg7nb12.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BM868Bhn.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BM868Bhn.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2e9ff07fdd96b99a51552d22b49ecb209c4a6447
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BM868Bhn.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMd8GP_92.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMd8GP_92.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..93cbfa4c0ff973a3abc9a3159f9e4d2272d95d52
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMd8GP_92.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMhXDmdo.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMhXDmdo.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..38837488063e04328625fdc433937718969cf775
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMhXDmdo.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMqONzxf2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMqONzxf2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..388bd7b5a7c001d25c3da7ff83429d2369a573bd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BMqONzxf2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BNB1mSly2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BNB1mSly2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9177a12cd16336c6e59e5a8a552d5d522a877e1b
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BNB1mSly2.js.br
@@ -0,0 +1,3 @@
+d dÐMž«¦HÚ)£¢:$¸TŽßÏM<օh-,®=»?³džĒØí&†&B#ÿ¡i
�á|b²ªKN=ÝíÄàÛï� ë”KUÜnPÙI�HÌ!¨Çj]EÜÒß}Í;ŒD{%*m鎽¶<²‡œϿp©A5‚)m¶ÔôÑÚ.×"ÍAû¿¤¯ñн˜ÙJC‹‰$ŕùc8»ÞÖq͵I+�µÑÔ%
ƒ€ÜÕÛ{þ&ýH©ï崁ú¯gE5:\Kš§º´
ϙnŽ®AqË"Z]“'B| 󙪤µ®ÑnµY�ʞœ=ÊÀr¦1çãÅõ}žƒ|l»#ÎÖ@Ìó^A�“x<à,ؿÙözÛu‰Ôþ¸Ýu$ž÷H&4ÆÁuNiזÂÀbó™‰l³ÇæFÆl�kÂ:ÒCég†»tEº¦ë)ÉßǠå:¶ë®6ÝÃF#‰V›¾a쎶ÁZ0ÒHÈ?ìjìÜñ}”¨#ˆeã3ó™ÿx™Gžz®ú.ö,e
+QIжoàzö °ßQýé:¿/EÏXîzÆÍÖ»ÕXeÂE[Œ‘‚۹×ú%Åó[io[Ýis�ä†T‡Ô;ÉHWb�ày¿á¯ò D?(Y ƒIkù)BÉó4—�dÚ4=àWÝ%Åóù( L?€ëÀž�s1ˆL;d_¹†l»ǵ¦—`ÿk0ØæB^c°Ÿ+¬w`ßOÜ6IËóˆbí83YCÞÿ$D‹²Q§
dÝg÷úzåÀ9J/íËÛÔsJ£
+nÉÁûÕß$K\6½8žy“
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BNJItPIv2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BNJItPIv2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..41c0aab444dc6fbed14c99155a9c144ec3aeed94
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BNJItPIv2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BO4HtxuU2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BO4HtxuU2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4f06e0fa73e9f55bad0954fcdec98e34f24e8d34
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BO4HtxuU2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOQ3ApEd.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOQ3ApEd.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..433da729f44c2983c4494d527d13a4cd026cc0ae
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOQ3ApEd.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOZXzlyn.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOZXzlyn.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c224b815ed5d4cc4375b52f9b8ae24996996c098
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOZXzlyn.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOtej2xA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOtej2xA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ca35a518a0a918ccb4f99733b077dc62a6093180
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BOtej2xA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BPCHgiwM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BPCHgiwM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d4958db3f663a66e9c71cfa0479517a0f5390545
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BPCHgiwM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BPZ_hSMB2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BPZ_hSMB2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..faf84398f47af1e333e649864399643660e6a8b0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BPZ_hSMB2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BQHxJIXM2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BQHxJIXM2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6442aea395fdd41927c5dd08bb0a886892ef9cb7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BQHxJIXM2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRByJbwW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRByJbwW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e408494ba94b21d4e35bb60d770441f9fad4c2b9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRByJbwW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BREDOME32.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BREDOME32.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e002b8ff011ce03697fc0402d11a8b386e013d06
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BREDOME32.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRKpYd2j.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRKpYd2j.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b0365d8cbbe4d0ef80501a07589675b39748d91b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRKpYd2j.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRfcgNbX.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRfcgNbX.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..89fb372fa77d7f74899e683240b75fcfc59c2607
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRfcgNbX.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRzwSKF0.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRzwSKF0.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..09afd1df7c2ce87f578d90e4f546627dd0eadfc9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BRzwSKF0.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSD94YCI2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSD94YCI2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..faaa8501c56dba2e8f517afd95d593a8f57d7f57
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSD94YCI2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSTfMD_Y.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSTfMD_Y.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0bb1dcc92f3cbd1447603873ebe727e619de4f4c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSTfMD_Y.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSUOAu-L2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSUOAu-L2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d9913b0dc13e21909d7858a3c547e5febe8bc252
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSUOAu-L2.js.br
@@ -0,0 +1 @@
+d Œø±۵ÑLâh«Î×÷ �I‰½êkå\¤T³ ¨á]oՄx¥èzòy(ßTզ)r¦j61€Ò3-«7!ԥV�áâ«ÖUð@¹)ߠQÌzp�IÞÀ´Š« 8¯ÿóŽR82êÅìzcú ï*6öæÔR¡ Ú 5�ì/‡{aÑÝ?øE^ݼÐÒçëûŒòV|øâ�<…_ºpŽC‘Ÿ;µ„ÂÙçï±?ƒM' 0SÔhåqÙß;RMD˜ÿ
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSut97vP2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSut97vP2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..dc70e8a1b10d03f0a1014609de2fe94f9ffd819b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BSut97vP2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BUrPCPda2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BUrPCPda2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..35a17d968dd1dbd843aed662b20259b952340546
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BUrPCPda2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BV2LopCd2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BV2LopCd2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..81626cb6cdc17f4c12d1b46d92502c14f0e53f2d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BV2LopCd2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BV6P-eiA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BV6P-eiA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f4043996fb32a0efc266dbaa346a4b4770a2d62d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BV6P-eiA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BVNPc5BY.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BVNPc5BY.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c34c6de895af833de8be2d8326b40feb189ef334
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BVNPc5BY.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BVRF3FoE2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BVRF3FoE2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b39bd3f1a6b8525d6a355a303beebfde41f42304
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BVRF3FoE2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BWDa9BTQ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BWDa9BTQ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7bb5519d573b3451e2fcb157ea78d211f153a568
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BWDa9BTQ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BWuczE8i.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BWuczE8i.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..856891732631d96b1327d922cbe4a3f7e3437788
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BWuczE8i.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXQqm-KE.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXQqm-KE.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f7787f5b5a8bc3223d221152dba96d4a580fa445
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXQqm-KE.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXdVC_j_.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXdVC_j_.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..83183ed15b75780ff17622ec7156e4c9f62e956c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXdVC_j_.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXg9BSNe2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXg9BSNe2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..704991f1d7095221beb4a30fdff842f394855475
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BXg9BSNe2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BYAi04MR2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BYAi04MR2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e08a7d39ac2ce5350c0637984cb595bc4fc505e3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BYAi04MR2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BYavn8yA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BYavn8yA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8bda9c69f24e29763ec156fe5440428c892c6729
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BYavn8yA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZ2CjMyi.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZ2CjMyi.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..af7884bfb7683ef27f270b0afe1b37a51474af3d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZ2CjMyi.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZ9fZS4J.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZ9fZS4J.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2596f5e8918da58e4c3311bdfd2f6cebb4cef941
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZ9fZS4J.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZAfVPqr.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZAfVPqr.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4700114e1fc4a920b2d93a9a1a5c5dd59435d006
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZAfVPqr.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZCdcrH7.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZCdcrH7.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..484f838dd6730e71a8fcb1ec610be8ba037db08c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZCdcrH7.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZNUAsmb.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZNUAsmb.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..04b057ff863ae10132b304ec607041805a71d169
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZNUAsmb.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZqBdC7U2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZqBdC7U2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..677397b49f58aeb2b39f300760b6ebe674b96044
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BZqBdC7U2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_K4I2yu.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_K4I2yu.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..aaf4539cffec1e1b6cf7fa663532ed0eb5aac7c4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_K4I2yu.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_PULRJe.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_PULRJe.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bcc450b19e354e714ff181aa55f9e0116d4bc117
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_PULRJe.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_ruYJ9J.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_ruYJ9J.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..466e42ade6c4642daae570f984b8678627f429d0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/B_ruYJ9J.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ba9LpNR1.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ba9LpNR1.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..020744b795d8b98e8e7b225d4fee441a847fc4db
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ba9LpNR1.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BaN-bgo5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BaN-bgo5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0ec4a309ef7e9907d51db6ea288bd21e6fc86f3a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BaN-bgo5.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bao9V6Rl.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bao9V6Rl.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f9bb12dbaf9ece68d249b437b1c7d570e5c20257
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bao9V6Rl.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bb7yM4Bb.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bb7yM4Bb.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..945bd9366468c89af4ed100d9ca8d4151e94401f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bb7yM4Bb.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BbJScPRG2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BbJScPRG2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a6f1ed3bf8ecc0df75fa389ca837166cf275583b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BbJScPRG2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BbNLVwEh.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BbNLVwEh.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1f80f8f19f7b1b17a18e6be9eea0e6c9a3b2be47
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BbNLVwEh.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BblP797C.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BblP797C.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..da15b717c342e0f327ef2940729bb44d32200982
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BblP797C.js.br
@@ -0,0 +1,2 @@
+2 ,ìÆyO‹`ñ›Nõ�È)©ڷ/ZÁØÀ<ûJ²âÎ8lgÄ)gږ´EȏÇàP¸U
+á)™¡6K·Üýfº¨ì$�ÛK�ôœSWùâß/X�T•Im?ØO~´¿٢áÃ_�òfIŸŒÉÌs8ñ>>Pýu…՞ïã›ðÃg�L*–öș¯¸¤(~g=NbjoUۮÔà¼ß%r°±¶ìrÿà:“Æ
ÈÙÐykäXÏÕß}»^})ê¦Ó:6h3¨%勒ÿ‡úPÌV�‘“ŸÎX’ÚÒ-
•g¼Û'‚Ìâ’,ròmçIËɉÌÚE¨Á$2%û–“HaÊ(V™LE‡³Ÿ‹%(õs–Ìë�uóâUpJѧDÄÄÄjÉÌ]+•pûŽG¾ú“'Éö$•ú;œÅÔl¡qܧ鳏žʴ¤ƒˀÂ2‰xJT¶ |D2O T\…5;‘�‰."ÁÈÐH’«@ ±ý8æRžÕ{›ÚUÕ*_w(¶2o5ú³ďԓËÿO²‹•©
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcBZXJsI.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcBZXJsI.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..af57330167d00d18da7338fc347ce365ec2f094f
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcBZXJsI.js.br
@@ -0,0 +1,2 @@
+G ŒÔYÍÏc«OI÷0»µð©!Xéٱ¼Y•½›(;Ú<�f‚0kúP‚Aæܼ<ޱ—Q QápøÖdzP”û/W–¥óFÒþ̽ø€�ðGo ¸Çêuí~ˆBÚw=õÞzôN0üGø¥\ý.Æ#,òËá+/$³=K_�@úÏ0äÉuhuàkà&kâkávnÏï*;;úù#×3‰=vóa˜
·‘Vè™[éÍJT?¸òÐ-ŸeöB š íh·asË
+" íÆ1KUg\-Wsü™§7mЂRÇ%u�†Iƒ4Mš¤eÒ"mÒÖ`ôQ7¹Ár
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcMKWFAW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcMKWFAW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a84c54a6ee8c0496d839265cbe075554ff902ba5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcMKWFAW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcPOWFVN2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcPOWFVN2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..83236f914f0e21c4ab1a5f160bc8f0c2589f0ab5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcPOWFVN2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcS7mPOC2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcS7mPOC2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9997d0a7b062463cb0871f1fd55b9a3909579276
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcS7mPOC2.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f7e458bdd4ce2f4f4c503a47ae2a63f8d7177697930728a20300da135bb296f
+size 194946
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcUZD7r7.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcUZD7r7.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d33751000df424db2b298288fe630e3e8061e7ab
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcUZD7r7.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bcd2lxsx2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bcd2lxsx2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..219386a058a56d659e72aa4d1fcceb04e0689c2d
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bcd2lxsx2.js.br
@@ -0,0 +1,2 @@
+C Œ”.s#$™ÔóÏsUœìzL2(vþþ¦þû ØZ4–Ž1é_vϠóÀSÈ
+É0½ÀWÁÔáꋉ-"´ط”Ë]P'ݣ9¸lDÅ[Hàäæ@Ž?o�#
bíÕ7·
n”sr³…˜ŸY<´½O�Ïçƒ7s8²åN‘^§íá@”$J�+¨ðE@W9óû£ޮGÅޠ8Yß`²2�ü¹@?¿ ez$¨LjlKU‹G$ª©Ü'íŒ%„øFNÝd±²¾ „sÖ'¹Š$'ÓÐ\E?‹û¼ŽüHR%Y%ùæ0]n „¬)—Gñ‹™Ý[ðßÄ5Wó|Žúøµq¹ߘãåï'8éÉó€íÂä÷Yr<¬ �Øù×^ÝÃ= 5.÷
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcofOzOF.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcofOzOF.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6c20d353211e492688ae7423a5b009576c4a66ee
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BcofOzOF.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdMYmEE52.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdMYmEE52.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4c1229c3e0647dfa1eab2e4174a0848d433c3d74
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdMYmEE52.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdcmEkhV.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdcmEkhV.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..309e76bef7192f503c5f2262954be4043c39690f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdcmEkhV.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdhWllHN2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdhWllHN2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1fe45409d80a78e0dd257a621676ee82b0cfff7e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdhWllHN2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdnNsedt.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdnNsedt.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4b68bba23ed10104e3722228bb4b8cbdbaa201f3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BdnNsedt.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BeF5dNPa2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BeF5dNPa2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5480362028234d925eabdd89cb2bdc6eaaf7d1e9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BeF5dNPa2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BeTSJyc8.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BeTSJyc8.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..21889b56060f5b19090244a0af2d94d6dc019e4d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BeTSJyc8.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BebUJma8.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BebUJma8.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cd62d60ac288c538adddc7d038091480ff1c34a9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BebUJma8.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BelLxFjg.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BelLxFjg.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2141618972d7435b903d81324ebc89041054fc72
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BelLxFjg.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfAsS7an.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfAsS7an.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..16505f631a0004a937d8a4a2abbaaad9555df676
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfAsS7an.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfjIY-m62.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfjIY-m62.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ff449ef4117515171f547b52362844aa8c8718b1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfjIY-m62.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfnN2lC92.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfnN2lC92.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9e6cc860d51eaaa694c1a15f47e001eaa0eb13b1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BfnN2lC92.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BftAVguK.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BftAVguK.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fce2367c162a9582f98d7b9ebbf3536cd88869f9
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BftAVguK.js.br
@@ -0,0 +1 @@
+‹€import"./BilSyTD5.js";import"./DPzIVE0U.js";
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgK2XBi72.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgK2XBi72.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4e72bcb1bd4cca2849116a88369edde8ef005abf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgK2XBi72.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgL0s2ve.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgL0s2ve.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9d8a1fd363f9d11f4e3b45e1f5ac4cbaea79db0b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgL0s2ve.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgQQNLNz.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgQQNLNz.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3a4bd8479789dc7c3954eb0e039800555d31b46d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgQQNLNz.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgkXxj8G.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgkXxj8G.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..668c46c074ed6853f4a2d830df3387ae25be7e59
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgkXxj8G.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgmsrY0E2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgmsrY0E2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5d8480516b75ed68f99636347aa3f841ebfbb29d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgmsrY0E2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgwYl41j.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgwYl41j.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..956a103ca9ba87e2579e1ae161bd897c5f247a44
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BgwYl41j.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BhI_l7Js2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BhI_l7Js2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8d7c3c80e4351dde8589be03a06824f90cf3fb0e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BhI_l7Js2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BhOdX58a2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BhOdX58a2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..49913c813abbee1248f38bf1bc2ccf3fb7b11a70
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BhOdX58a2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BiVxUfrw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BiVxUfrw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d1c838c398c3548d524a33ed0a396fde4d3d8a28
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BiVxUfrw.js.br
@@ -0,0 +1,2 @@
+‹
+€import"./Dgsy7lJn.js";
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BilSyTD5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BilSyTD5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cac0688424563716c8797112c23298411be74e01
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BilSyTD5.js.br
@@ -0,0 +1,2 @@
+…`Ä̜½¾¹I3[÷èɨ€�Ð.Ðÿ\ó�5Ð ŸӏËE4ER¤Nh€ÜWÛf[¹üW¢’v}Š b�l�¼Àz×nÕnó#Ø>égsïυðæök“íY¿Ԧ«J&É?fnâûæj¤—vô-GGv0vV Rî¼0˜BÎ
â�7´¡ öï4ín,T©|ÐÈå3+¿ŒXi’'wú¹ŽpŠ·
iÞFdp�çÖ@;o¢Æd"�– ª6£*4@¬:´ݳ]N7C;Ãûžr‰Ðøœñ¯hë5ÑÔÈf³nO#5"ßÕ3cðÖÂúwJüñ7â cHûJÂÁßß9cÿåx<ÐÁțÏÖêJÅ4J3Ze>ggQsBŒŒF
+>”jf×oš,²˜p3 âšgðb)¿g\–·åù±=p:Sèõ«.X ÃҊÑ%�ÖrÄûׁ$¶¦Þâû
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BizvQQNm.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BizvQQNm.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1400625f3835fd1fb3a2de9c1717327dea7a97b8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BizvQQNm.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BjDjdlA2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BjDjdlA2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7e0c321353f032e4424edff6262550e6383fe295
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BjDjdlA2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BjWQg83r2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BjWQg83r2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ed6468e6b06195f6a6bb1330dfdd60b639a8a997
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BjWQg83r2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BkZQ-Orz.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BkZQ-Orz.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9779e3e2d6a174c93ce181ca955596805b9d0817
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BkZQ-Orz.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bkk6KkRb.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bkk6KkRb.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a83d54ea3b4e39f009320dae19b72f0fb33c0fc5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bkk6KkRb.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bltizhla.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bltizhla.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..74232ae713bbfec89db0d1faa033e9a7ea5e68c2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bltizhla.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BmAHm8qi.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BmAHm8qi.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0eed48d8f46821ee0b6746d28312db6b05c646bf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BmAHm8qi.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BmIAZ8qp.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BmIAZ8qp.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..35155d0ae46c1a1be2ed3dccfb788d15ceec3ef6
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BmIAZ8qp.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bm_YD73S2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bm_YD73S2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..07649c5176f0964cb3d8bf83331a426483bd1036
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bm_YD73S2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bmwag1I_2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bmwag1I_2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..74debc1c6fc404d3ccb261587a7889c9f68ecd82
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bmwag1I_2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnOMaiG22.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnOMaiG22.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f84f10ed14127b486da359cdb4fba9235776dd52
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnOMaiG22.js.br
@@ -0,0 +1,2 @@
+r dUçõZ½¯Yù¦ŸÑ%LSØfyëB�·ÿPìS¾�aMӫ¨%¶έaéýÅ5å §/‡gô·}�Lkn–Y´ݘI+¡x6Àك
+QƒˆJ;j8
ʑš‡^°Géx�ËPHW>|òt+z{àqѕ\è¦`1rÀ�tŽ8Xñ™A¢b»ØÀ7(£Ñ*ð
³ûÂljMҩ‚ŒâBwL[A±ݱNàÿ�d®ç{»æeCg~ýýdµ°b¸†}_^ã¹ގ©fÅi Ó4»|Ù?
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnV1TB_f.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnV1TB_f.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4e32c36a0362e7bb1f5b112506e21b4d2ecdaa3e
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnV1TB_f.js.br
@@ -0,0 +1,2 @@
+° Ĵœ½¾-ÛÒap¸¸[ ©›Þ:ÿ'L%Îö µ,ˢ.ÐL°¨xL�Ó(š¯Aã…sÏÄnL*×ö@‹먉[�]܂w‘‹¯·ðoˆ
|�>:QŽ®D=˜ôAˆ�ߞy·[š_x^ònn¿Æó©)9np�ÕñËGüÜ}l2¯ÍE‹�s·þÄn»qáìµÁ…ÿö¢bڑwwó68�y†ŸE»MžÕҷT*&oY#xàÃ(M‘˥òËøßU2…Q>ʅ�pꓢϓœú(.²“«-ŒÞƨ"fx» ïîф�d{4O¸5¿šÝÝ]I‘iÙ/.!t$�þO´P:Üäëaæ-Ñþ¾äZ _Á ŠvÆìôüø9±Ôàé´1oԒOóŒZÇz!€ýáî?±cHÃ6
!I ðpEsmü'£{ºKPžáû.„K(©¤øÿÛñM
+ÂüËh‘bÈhÏtH&֗²՟9
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnWZt9Ah2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnWZt9Ah2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6d0c0f23a1aaffb6b2948ede89555da3f3faad90
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BnWZt9Ah2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bn_iuyrF2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bn_iuyrF2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..dd05829c130468ebca73d60d98e49db7cc9d14c1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bn_iuyrF2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bo57A5Ue2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bo57A5Ue2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d4b7325f3c3d48ac34d56b1df19838738e5af1fd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bo57A5Ue2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bocc91eC.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bocc91eC.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..28a4cfed65016a0876277f50ddcde1432384e251
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bocc91eC.js.br
@@ -0,0 +1,2 @@
+‹
+€import"./WS1bLMZz.js";
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bp8LF-NL2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bp8LF-NL2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9c40afa65d04d4f9e3c6dc1161fccf51472a36de
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bp8LF-NL2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpM-rvxo.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpM-rvxo.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0cf64de5449375d287f3622c8398ed5ae18a648c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpM-rvxo.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpOiDlhL.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpOiDlhL.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..41c6195d33eb3cf7b58f36b4c0edd69dc92e1a98
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpOiDlhL.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpqOGZJt2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpqOGZJt2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..eff34f7b1dee169fc6258392e59e51232df216f7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BpqOGZJt2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BqWgjll1.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BqWgjll1.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..70412014cf612a47b1cb40cf34fff464160537b2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BqWgjll1.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BqaM8k_a2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BqaM8k_a2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..275ede01840be77d3a654e60475063aab08c2549
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BqaM8k_a2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Br2NDAtq.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Br2NDAtq.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..23cafd6aa7ddb3ae85da90cd284cc5d78f240261
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Br2NDAtq.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BrDAi4LM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BrDAi4LM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..17bf2cab5e7ee86693e992551b6cf173b879988d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BrDAi4LM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Brd_rNFW2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Brd_rNFW2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6f9812eb8f283a08c064f63d55cd7fde931dfe1f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Brd_rNFW2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BsDFDpPR.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BsDFDpPR.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..583b407b4463bbe17e42e8b680072e86382fa4b7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BsDFDpPR.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BsSMww1m2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BsSMww1m2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b27ffaec43dd0cd070240d0fc48a15454b86fc59
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BsSMww1m2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BtUoShmw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BtUoShmw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c569914e7fa468d8ec1a122783456c1c7eb422bc
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BtUoShmw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BtjAfo_w.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BtjAfo_w.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..86ebbcb561942187824b1bbdc22454d843dc7f64
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BtjAfo_w.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bu4K_HwB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bu4K_HwB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f3e8761078d6f1ec2ade5c1052bae538b97233e4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bu4K_HwB.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bu9N8X3N2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bu9N8X3N2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6f663ed19a6cf98abdb3711ffa36741a005aee29
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bu9N8X3N2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BuO-5nb-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BuO-5nb-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ec746e90169e4df161eb428672e4c145966ae1af
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BuO-5nb-.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvFJKKcF2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvFJKKcF2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bba0de3de557dca5612fda684ea1d2bfb0945439
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvFJKKcF2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvRk9kiK.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvRk9kiK.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1c8a0e7976207fb9f03ed7e260950b62b8b9d396
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvRk9kiK.js.br
@@ -0,0 +1 @@
+;
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvT-WLex.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvT-WLex.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..464a6c77771d4382faa8efcb21d91172509d83f2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvT-WLex.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvZGjyK72.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvZGjyK72.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b8ca95ffd50202deefd2e802b5461ed4d806c5bb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BvZGjyK72.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bwe_7Vos.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bwe_7Vos.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0a67e5052e93a52c48f7a78e7b9e61778757688e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bwe_7Vos.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ByGLEdoe2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ByGLEdoe2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e1b231d4c1d2511e0bce3e949ed3c2bd4c99ae2d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ByGLEdoe2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Byw6EKaD.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Byw6EKaD.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2370ee6f03bf3344d91c3bfa8af9b43034628b58
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Byw6EKaD.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bz7_1ku6.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bz7_1ku6.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..be29246091c0fff1f98608e6400f37cdaa15c5c2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Bz7_1ku6.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzKQiPrx2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzKQiPrx2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..79aa55c1900dbd222dd44d3af5768dbdbbdfc6bf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzKQiPrx2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzL1BD0o.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzL1BD0o.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..279dee2e4413718cac1df577c53f9aedf8efcadf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzL1BD0o.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzLvh6iB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzLvh6iB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..baa6b3efbee03107c461c628292a5da9fdc05cca
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/BzLvh6iB.js.br
@@ -0,0 +1,6 @@
+þ äXNÿù¼n ¥&Œ™üTIJ•‘AÚ^¬
+!V†T(uIÐ|k�˄D¢ûÿ—ø:bËï 䆕ŒáØ*‘�ÜèþÏ6_ÔÞîÕìù‰.²mV
+
9ÿ›ûê%6R]ëù¸=ôŒ†#ûô8c©ÿHÄÿ¦_›Ç8’H pMݾ`Íû³¥ZP>¿0À…TJû8„’j¡¥„±uå£þ6�3�4·L½”A§°åéR˜³ÓàÆ0¾±ÏQs°y7[Šu’sÅÅáê]êßq‹ç‡рpžK>V{ÐúП<†V½¢îl’¹{Ç+Ÿ_¨Á®AÂտk¬Ì}³ä‹x9J*„——賂ÀZ^WâÏïüào'1Ä
Â_–wɶçQŽRZÀ˜¥]Œðòˆr®P–ê1}È`�VûlÅ÷ϻ8ã-‚%5ÖEÅmċó(ßÓàq>žcªL‘NÀµ.7eð ;öÀýfÁ
+ýŽ“3kޠ
Výq;˜¥æ�ìЄõôVÃJ_Û|°qü8VùÀ…ʌû8B¡VkÂq£¼³êwÄÒ
ÔÿCD,‘QåØHøê·QΩfä’ô¬ÆbŠ'…o·Hu%ó`¶õ;A?B¶/©!uû¥†‰Sôª§>|‰¢Ä
÷ø×rÔ<´,�}€a5U¿WZL‡wD3
+Áì0ë M»a=N¹=֠Í.iÐÆ×1Ö!¹,ÕG<
+“‚ÓP9N=Gà�N•K ¢0è…Ô0)qVò{û#f& ò9Øü1I«ªþlÐЛ?óïõ‘<ªç4_R>'™ÌÈ(Ú0iªê:½E…;¶a
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-lJbC-62.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-lJbC-62.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bbd713656ea2da0e1f6dd54dbe8b484ba4b168d1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-lJbC-62.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-pWwmzy.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-pWwmzy.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..93bfe4c90ef2368e765f1ca48ae8eeb7d3e77057
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-pWwmzy.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-rcCF6w.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-rcCF6w.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ffeb546ce81c5fa38673ff63b3a8fa13f2d702ba
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-rcCF6w.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-wqV4qF.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-wqV4qF.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ed2b53df016c6b5a686a060e355459ad9beba7bd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C-wqV4qF.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C06LLaJm.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C06LLaJm.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..429a3e1e82c828a480e6958b765c2f9ddfe52908
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C06LLaJm.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C0JHu8gr2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C0JHu8gr2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7d0f8e186b7f28b543c4592c2d57197aae36710d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C0JHu8gr2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C0gOt6L5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C0gOt6L5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..52dbde7f7e899ea212b8b3fcca241dae662b16d7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C0gOt6L5.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C14W9TXn.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C14W9TXn.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..391f17fbd2091027eb8586d25e60f9d88be8119c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C14W9TXn.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1TTw0Vz.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1TTw0Vz.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..26011ce59042472a2e5b34b40475f292a6b4b9cb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1TTw0Vz.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1WF7mpp2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1WF7mpp2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..438fc80b1688ea97507d40ae216b3fcae794b7e7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1WF7mpp2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1uudsWK.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1uudsWK.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a97c875f74543e54f02e67ad0d18ebc7b47872f1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C1uudsWK.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C2-s1sS8.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C2-s1sS8.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..00f9213912ff9ec4b517aaf40268215b4068acaa
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C2-s1sS8.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C2tEU38V.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C2tEU38V.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..de17a01cfac7b74f57ddabb1e217d7c938d1283c
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C2tEU38V.js.br
@@ -0,0 +1,3 @@
+Ë Äʜ¾¾)ßM7*ЋIŽ}Ë\Òhèrþ $�›֘6+‹£„<½8äl³á"ˆ$¹-�·ùŠC€Ý,yYI°™‹“ãbC
.ÜwäÌðJ¨‡¯$‚gÈÍà³ã#*ÊÒðu½R}º«�Ï/^ÿ+ól}ø$B�yÜ.Oj7å֞BÑt”_éåÙSc'£Ñ*#kî¿bµ;F¨„ôèë"ŸÖ^äjºûCL‚ŒíRòR –”A�ÖGM¬Õk/rթ±…¥&Gëa{ݨ¬$J°y“3Ö#•ù× rÞՕJE;³ە
+‰;a§nT5£S6¥¢Ròģ¬2½q94��H^
+Ž@élᓰƒ–„eúûß$ͪ½Ì*L7Úfž™å³ùšÎǣŽ&ìû¾×(“6ŽòÁZݱËiňœL•¡êÐqf„f߲̥\¯^¯ÛÑX+Ü),ÝAVY]]¥ô-]í÷:æ24âĎ Vìä;HàĸUÜ
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3QcnXKt.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3QcnXKt.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..090e393f64ba689828662016854c5f07b7f32174
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3QcnXKt.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3kDzSwF.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3kDzSwF.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d514d4b77fed34c8e2761d9d45b12f252c574d6e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3kDzSwF.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3mqCRmw2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3mqCRmw2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ece3607b63193fba426874f5da7173feb6dda28d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C3mqCRmw2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4FXosbu.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4FXosbu.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9882a4400a82108eb61e21a628db43ea86368075
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4FXosbu.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4YHs1qy.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4YHs1qy.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ff2f576be0fd1d8d3b4494d161e84b9f0d09286b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4YHs1qy.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4sV2BlZ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4sV2BlZ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b24e74d39128e37fe36fa0cbc4f9fa83f3937dcb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C4sV2BlZ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C5-g0Q-M.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C5-g0Q-M.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..02421d8a92718806aa0851d2211f7dbf1335a279
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C5-g0Q-M.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C50LmoI1.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C50LmoI1.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1c8a0e7976207fb9f03ed7e260950b62b8b9d396
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C50LmoI1.js.br
@@ -0,0 +1 @@
+;
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C5In4ee72.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C5In4ee72.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2862768c21d873d96fbba4fefef1f3877728c868
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C5In4ee72.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C6-JIim-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C6-JIim-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4ebed870e0d8531f1ee1eacc276124574e621464
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C6-JIim-.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7D2N1DC.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7D2N1DC.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3aea16f9c28fdf067b644f2ba405553c605a3f58
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7D2N1DC.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7F_lpaW2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7F_lpaW2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..10a52c701ef42b7957aa3e70041f6cbf6a12e2f5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7F_lpaW2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7FqFWmw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7FqFWmw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c54d6a82b42cd742674de436e53a8312c872d8eb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7FqFWmw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7UuNQNA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7UuNQNA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1a3f34288445f4fac133a83bbb18897879482004
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7UuNQNA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7s7dPaw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7s7dPaw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..155767d279c61edf68a4cee68c67bb424a4d2932
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C7s7dPaw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C8mTjmmv2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C8mTjmmv2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8afd1cef1510c0c7b8a39c4f26689c86600693e7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C8mTjmmv2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C8sOTRjG.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C8sOTRjG.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..75dc8e1de786c0b20bdbd81083baf155a2120d37
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C8sOTRjG.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C9vWVip0.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C9vWVip0.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5606e04cd0ae1ae053de3cb433e99fcc49072571
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C9vWVip0.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CAI3F0qB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CAI3F0qB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cafde6fcb359cb58b18c81bc7f80df6b96c2e5bf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CAI3F0qB.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CCT1DLzq2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CCT1DLzq2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..859d1cd8d350cb739893b2018c1209b7fdf1b7e2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CCT1DLzq2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CC_v2Ejj.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CC_v2Ejj.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..042edd885fb0f7d8dca68464eb8aa5ca7e45566e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CC_v2Ejj.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CD4JOR2q.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CD4JOR2q.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f5d48381e6cf2045f26a17fca8fc42416cce1dc3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CD4JOR2q.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CDcUQ1cw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CDcUQ1cw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..be69af3f641cc3f6614ed64f9002cfb8b2bd7e72
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CDcUQ1cw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CElz2b3g2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CElz2b3g2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e26645ccadbf6d10a4bed58a2ea01ab42816a38f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CElz2b3g2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CEu2XEUi2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CEu2XEUi2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..eaf291be11995afaaaa26848d750cf488c087619
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CEu2XEUi2.js.br
@@ -0,0 +1 @@
+e Ä̚¾¾ Ë3¿\B]c]IAZoՄx¥èzòy(ßTզ)r¦j61€Ò3-«7!ԥV�áâ xë€ ²Qޠ_Ì·°ÂsþÅKŸ0ǜ××óŽ¡dêñ6óÕ뿜’ëPmcoN·�øN�}$ûkb…¸î~w�À7…M-Æ%�š³Ê&°µkRð;FÁL�©©l¾ê®È-Pi{CÎ`N�mœ};ó›x½ÝH"#?řì‰+>Î<¤ªɧ.ÖòPd Ÿ;µĈg_ݒ¹üÒš„Š=8s•S„˜¯5
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CFVQXBEk.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CFVQXBEk.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9925978e6872f4124b06c729f7d5addda0dd6b84
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CFVQXBEk.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CFqdkU0U2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CFqdkU0U2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..53cb623f5449d62d6db03ceff681d87f706e4e97
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CFqdkU0U2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CG04sdi5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CG04sdi5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1b1dc7b495b33b71e20791f5670f8b3f3ecb6d56
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CG04sdi5.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CG5-5ngJ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CG5-5ngJ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d29339acf6b4dd3626739af95a79349db4684d3d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CG5-5ngJ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CGyFUp-M2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CGyFUp-M2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fb0dabdde0ddec12142125400da7ae3d04be554d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CGyFUp-M2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHZ8RmHV.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHZ8RmHV.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d5e770b1fadbd5a5d3c5e7165db86420d9703181
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHZ8RmHV.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHmJ0Y872.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHmJ0Y872.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ea64c67cee9df29c84406f0eabeff1e06a56d5ec
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHmJ0Y872.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHqLujP-2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHqLujP-2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d87f77e3bfeeb0b2cfd2c8eb779e87e7d57832cb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHqLujP-2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHsyc_TJ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHsyc_TJ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..389be7255b9b61e9e6fe7fb9c55db487a25798fa
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHsyc_TJ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHvkQZ8c2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHvkQZ8c2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cb1eb790fc551c3a04f5a04b20140ee6ecc4064e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CHvkQZ8c2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIg7dFmG.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIg7dFmG.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..692eddec4706bc4528573611039403170c6f33d2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIg7dFmG.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIpcr3tn2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIpcr3tn2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7dc0694941e30a6d7c66ff03fc1aa134575c4d44
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIpcr3tn2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIsCCTxy.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIsCCTxy.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..afeb0f768d63f4e4c59ba0ffefe77cc795cc15ea
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CIsCCTxy.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CJyZ1-mp2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CJyZ1-mp2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cbf1ccddb2bb9c25e46eda825e63a07f910a368a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CJyZ1-mp2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CKdJQl3J.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CKdJQl3J.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bc16daf120f80e0c6dde3dcc9179ffa4bd1c0b67
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CKdJQl3J.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMNHWsEj.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMNHWsEj.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c6409e8a84b30ef9d95cf9b122eb4477437d4b97
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMNHWsEj.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMpPrKjA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMpPrKjA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..182d400d80a8634122336b75d79fea511a0a92ce
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMpPrKjA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMuB9dNh.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMuB9dNh.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6d646762e80e35ce80644e1935963c4160233187
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMuB9dNh.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMxSZlY5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMxSZlY5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8104bd9c3bd936a8de70e5053cc618d3c122b2e8
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CMxSZlY5.js.br
@@ -0,0 +1,6 @@
+T€dÛÿôë·srM™ c¢\—ÖózyٜÿÿÞùcÿ³νïÝƚ¼ÖÀÂ8íD‹b½£º%¼9àî�7`ÅWRY¡ŒøuØNn„²3ó{j;尃Ñe¶/ê;ÇÚ6º—ñãÁ(€
+dé6ܝ>u˜Û՝ûûùG½Ÿ9‚ÕmɛGtÈtµÿ‚>«Cðg֘!ÀЦIùC"¢Ùuþ=ÒpÂ/@nBDdtð«mSƒ´·K+L}DÁÚ4äíúçà@x ÛM=ҊúKÌ6I3ßȞwÛÇÏ××kÓ(žlh’Ɯ˜Ì}uö8૽¦@|êʈϯà¤
+ça‘8|_Qût9>ê
+g@²¡äq!�Ãú4CùáhmbvÅ⧜¬òHTŸ¤Z…vÃð³¼jzâ½WûÀÛrÐk×ÉN|.K9‡"ž4–Æ®(t1ŒáõÁÞ'aϊ
+Ult§©=‡�q¬å~Ûw‡ ľ
íò,�îÝÉÙ¹\D<èaÈqY›Z‡Æâ¥S8V>j3dÐ0æm¢øPfSàOJ
+;�uç<¼èߊ*ïø¸J ªtkÔÀšGhsõVø³ÓaG¥0&T4ݎ@“—óÂ7XákÍEΡ&é—ÊGµ§65{½/iÐâˆè›bÖ%D¨™гTU—˜Ýø¦7¹7ÎP<�É6B¬¼Wy_›7d܉ÆzL‡Ãùî�³#£w&pô]‡±Ô+¬5;
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CN1mD56D2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CN1mD56D2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8c98580d49d6fb565ee544c81800a9b6f1dd117b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CN1mD56D2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNEpWfMR2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNEpWfMR2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..341c747d3fd1b06c319f44c92f23839d4cb58828
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNEpWfMR2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNLW7ozo2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNLW7ozo2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..21c151a841587f4d928bcbdb07b509205adeaac5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNLW7ozo2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNRMxjsM2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNRMxjsM2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6ff2011405916ec9c2e2897ee33e4657fc368d9e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNRMxjsM2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNTGq51o.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNTGq51o.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..01fd1dceb71158195a436dea7e12023c6dafecde
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNTGq51o.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNlVvsRR.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNlVvsRR.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..66584f42ad55a4c404dc474d8c6a10a0d27269c2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNlVvsRR.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNmH3iMm.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNmH3iMm.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..87954eabfa27bd08d77bbd40b0356586f95b32dd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNmH3iMm.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNoBTZnE.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNoBTZnE.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e6ebf311fe81b1c9631539f137e90b2816e318a9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNoBTZnE.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNxXIQTX.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNxXIQTX.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1e03fd01f619a18bdf170deea65fbbb29f931dc7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CNxXIQTX.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CORAYiLY2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CORAYiLY2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..24bfff74847d26d51e7c413e8dc470e66cb1a148
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CORAYiLY2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/COo8WS-x2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/COo8WS-x2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..26d1b9835b4dac27779bf2fe2316fecd73a388b1
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/COo8WS-x2.js.br
@@ -0,0 +1,3 @@
+9@dcm©‚owÃ=ªµ,oõ7£»Tå¢Ú~lf¿)B41IQ2ªFoؒäxˆ˜SxÈv~�ñ
+í>]aÒOÜÃg©Ùzß;ìáøK›ªWšU†¸w7hHíkã(‹¦P,`(ÉVgû:]¸Áö‡xÄÝb§/L@
+è þ¾Xf”ýñObÀ0ÊÖJŸù�U®É¿\Z[,Ú+xœfì¼9˜‹Ա²\èW&€M]ü#¹à‘Ž!^/y$É
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CPXT2AaK2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CPXT2AaK2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..55dd2caf3386bae1cc739f0b545abb356e71634c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CPXT2AaK2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQC0IRS_.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQC0IRS_.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bfb52a97f8a232128f873cb284d369e7ee099f9a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQC0IRS_.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQC5yM2r2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQC5yM2r2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..373f67b322c13600b6c37b4ad9b3a00abe7bb765
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQC5yM2r2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQeXRGhG2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQeXRGhG2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..85c271020a92e1b2e9f8f6f3d6e17d775cc436b0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CQeXRGhG2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CR-ctaVJ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CR-ctaVJ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0298e0147cdeade873022efdfaa3f910ccbbae5d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CR-ctaVJ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRD6jFYV.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRD6jFYV.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3f25fcd0d906e5c3e9a8bb34f77d43bfdc546a89
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRD6jFYV.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRGCke9R.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRGCke9R.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1eb36459ecae77376b94934ba97bfdbec437f76b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRGCke9R.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRhX3HmQ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRhX3HmQ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4632fc4beb77b2936af71722b61a0b0ddc942686
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CRhX3HmQ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CS3uRG9x2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CS3uRG9x2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..114a50b1342efbfde4af060ec821b533451f6500
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CS3uRG9x2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSCjeJ9v.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSCjeJ9v.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8c15f5eca4fe8378fdd1d5e7b56eec671dd220da
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSCjeJ9v.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSFT2qoz2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSFT2qoz2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..94be09be4bb9c86856c4f93a0a6c8b8fd5698490
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSFT2qoz2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSKSodPl2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSKSodPl2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f379f14871b63aea08baba9e78c51a8bc3e6be28
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSKSodPl2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSv74ovD2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSv74ovD2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c2b337509cf17b0d902ba5793067cacb7b3ff1a4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CSv74ovD2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CTXhSrQn.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CTXhSrQn.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..81cd9bfa26502895c331209da5ea58dcbe378814
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CTXhSrQn.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CTbXhPmF.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CTbXhPmF.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b7e8088aa44d36abb41c274afdded6dd27365fd5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CTbXhPmF.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CU8o9QCs.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CU8o9QCs.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..eeb0fae7416cb23e19c5379bbf249a080ed2f2d0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CU8o9QCs.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CU9ffMHP2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CU9ffMHP2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8de2beaa38052f92623a168dd5420b11b2180a99
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CU9ffMHP2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUCsZJZh.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUCsZJZh.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..10dfa1a9dc847d081f23bb4a3f0014d74420a6e5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUCsZJZh.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUg2c9za.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUg2c9za.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..87f5ae4f9d05c6524f0d29e1f32d4c616680a60a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUg2c9za.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUt3HZG5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUt3HZG5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1b390168b0c2df0c05d425af7d549df9e3918d7e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CUt3HZG5.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVc_Cjd3.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVc_Cjd3.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..db12b6ef945664576e2b8fbd706f13db5af6fb4f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVc_Cjd3.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVeNsmIA2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVeNsmIA2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..247b75d3654386edfa11e4e99e67ef24eae73a66
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVeNsmIA2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVyHduEV2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVyHduEV2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5fd2cdc0d5c295624ce0375c6aeee51d258f7506
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CVyHduEV2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CWH3Wn7c.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CWH3Wn7c.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ce78cc0c932dfa84535c86bab13f83f7d9f2bfc9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CWH3Wn7c.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CX6sgWpS2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CX6sgWpS2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..29230cfcc3fe3fae4a8e6c5297f6dba3ea43b6dc
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CX6sgWpS2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CXqRGyya2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CXqRGyya2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..806edcbf65a04c0737b948f2965efd53fae034ae
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CXqRGyya2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYSMNSjP2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYSMNSjP2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bfa28263205a5a1103d89af50363d71d2350a271
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYSMNSjP2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYhVDMEE2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYhVDMEE2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..16683ce1b06ddf730d91c6f2656c160145258da6
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYhVDMEE2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYnT1ok52.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYnT1ok52.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..58c28d461f0390ca98e12044e7e4375e718e803b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CYnT1ok52.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CZaj3UDb2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CZaj3UDb2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4f919470daf34cb6c33ce98cb5d1c3f841212b74
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CZaj3UDb2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CZjDQ_dT.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CZjDQ_dT.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f849a4cf6570dcb5a0c16b3a830d84d35ae3e6d5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CZjDQ_dT.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_8qAH5n2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_8qAH5n2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..193b7bc8896a3e47c71588096bd407b31bf9d1ab
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_8qAH5n2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_b1Q7fk2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_b1Q7fk2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3b9debf61a6e58f4a964685f5424464635b41c32
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_b1Q7fk2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_hG5on_.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_hG5on_.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3504a4cb681e2f78c6a48a04a89adfb751c8b9c9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_hG5on_.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_pWpMDJ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_pWpMDJ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..16f001c36d739da67dd556cccfb36587a30f79c7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_pWpMDJ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_tgPnLm2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_tgPnLm2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d31d9f0c279becba8cb7de67cf49bbfe2445e48a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/C_tgPnLm2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CaSEg-8o.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CaSEg-8o.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..672eea6a17f8cecaddc61d10bb70b87008ba924c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CaSEg-8o.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cag49yHA2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cag49yHA2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..855d22ee244ad463cca0f422a464db9bf3ddb4ed
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cag49yHA2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CarOLJnO2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CarOLJnO2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b10eff4b0568b3723da5f45026b9e72f54d099de
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CarOLJnO2.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e83466deebdcc6d631ac9a700bce73ad495cef6673da56b15cfd9a3db2e76330
+size 964683
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CawZHRS4.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CawZHRS4.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8abb4c2bc56cf8898ebabb86f2713d4a49d56bc5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CawZHRS4.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cb3wOx3z2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cb3wOx3z2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5a936a9d0dde6d9a219985f73046e0dcaca99dc2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cb3wOx3z2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cb_8dPXN2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cb_8dPXN2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..dbfeafdce29c3bfedf8f8205621e642e18981349
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cb_8dPXN2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CbpcT2lw2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CbpcT2lw2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e5786c4106e7344b42aa9b993d7c1e2401aed6d9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CbpcT2lw2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cd-iT2tl.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cd-iT2tl.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6e2e366ccf5248d8abf9d269e98fadadca40887a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cd-iT2tl.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cd7A8tIQ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cd7A8tIQ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fca41c69319ff9654a49630f4109768787433ee2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cd7A8tIQ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CdP6UhiE.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CdP6UhiE.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..68a71cab4ec723f15aa081e155f41cbf5c5c6acd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CdP6UhiE.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CdanVCvW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CdanVCvW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..67e8f81f54021836929c7f4219ad49331d5a9a7b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CdanVCvW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CddY0kR22.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CddY0kR22.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a1ef0c367a9ba7f510d48ed10dbda0aefdfdbbe3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CddY0kR22.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ce2b9kd12.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ce2b9kd12.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..22f166bc877a7f8cdc8ff80d0ff066cb35b7394c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ce2b9kd12.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeEWIKKx.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeEWIKKx.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bb3e013adcd02566b57507c5f5d429c6dbbfd49a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeEWIKKx.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeH54rQA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeH54rQA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0560b5a737c7e19220a3f0895f9659b36763228d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeH54rQA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeY-gdYj.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeY-gdYj.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e5f4d5b9abd842d8149661a5236c22eb1149f9e2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CeY-gdYj.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfCevjl-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfCevjl-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a18a637f2bcf48b32926b2332b14a81b2848b136
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfCevjl-.js.br
@@ -0,0 +1 @@
+… Ä÷›S٨{¹âÀh¦”uøoPÀ©›úúˆ¯:VÑZ€]4Q>ÁÃ.ˆmB‹sY \÷„P¶;PGù,ȃ¾!>£hEñàVRðcðz¡læâEE¦Î×ôj~<ÅTÃIäNÞß|>VŠ3{/“*ãj6ˆÑå½îH§îuߝö}ÎÝlÏYO©d´7e�™°VŠÜЦù€S.µÀz²³RÚ÷ÓG/ڭPø§ÐÉrèîüìΝ>Ç`õS
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfM-oSYq2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfM-oSYq2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..67f7eb4564f8dca611d3d4588b8218729bf731e8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfM-oSYq2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfSO84mg.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfSO84mg.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b89217af9f87d5b5adeb1724270829c74ace0925
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfSO84mg.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfiSVtM62.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfiSVtM62.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e22a3e9b18c097021de9657e000f1c7d41f85fc3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CfiSVtM62.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cg5Vh3br2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cg5Vh3br2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..09b33ab9b1bf00f05b5be12c3735e3b73badd436
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cg5Vh3br2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CgGBu2br2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CgGBu2br2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..737b85cdafc2cd35b83a1ca6cda15ed18633d740
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CgGBu2br2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ChBR6Fuz.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ChBR6Fuz.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6d4d60b4e1fe8febc59ac3c1f447890b9ba5a02e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ChBR6Fuz.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Chu84b5o.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Chu84b5o.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4839ff850d34ccefc315276baf23b5a19450becd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Chu84b5o.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ci63OoZH.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ci63OoZH.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..84a9d0f3928710029ec9d8223126e558e2d9195c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ci63OoZH.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiODGAu2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiODGAu2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bd00edf6443b754ac61d1fef89a2d935b15c6941
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiODGAu2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiSPGYra2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiSPGYra2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..22f689f8afdb7d56a4e93fb0735cf4eb46bd4fdc
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiSPGYra2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiUeIMeo.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiUeIMeo.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..684a9bb38894cb93421056d534ff51e4bce48aec
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CiUeIMeo.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjFTV7Dv.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjFTV7Dv.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0460d6af4f912684df264edf589eb36ac4a7f87e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjFTV7Dv.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjI9EX0h.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjI9EX0h.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..776d4fc14234eeb99bd345256456f7a1d4609425
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjI9EX0h.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjvKysRm2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjvKysRm2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f10a52935ec7d106add73bac473c77197e077f37
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CjvKysRm2.js.br
@@ -0,0 +1 @@
+Û Ä,�Umž¥™
Â9%£L|ÁÔMÀÂwš´ÚӺ¬<æ°Ëò�–m“Ý"—èŠüæ¹W¶Ç%sZrq<4Ãušá–ÐÏ0Ägj⋳ÿ@;…™Qj#§,A�¸ó½»‡•êûsݺ¹ýÚT¢éáðB`Wí²_{,ßR��޲i«үÄÊÐ{†§\’‘.Œқ•ðРš\ؼ�“�ƒwVrTB6Ä/AõÄíµòhŸL—†@…¤Ï~2#͘’«Œmª&¤Q‡Ln2sËu]kͳ‰ ٳ[zûw™RÒA¸–˜¡@�́C¼g˜Àå=¾ôìJDä¸ä|^8�jwZþ�™ $<�#‘_FN.4##«@'ˠÙÝ
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CkBKfUWf.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CkBKfUWf.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f0066b5d8ad7771a24de0ab7d5a9c1d684af7ce2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CkBKfUWf.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CkzKEtHR.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CkzKEtHR.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b3a5a831594d1a618c186adc0aea3c9a1c3e8d0d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CkzKEtHR.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClA-g83o.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClA-g83o.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..60e3cd216a0415d4a67f7b7b27ec684dffcda6be
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClA-g83o.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClAwfhVo2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClAwfhVo2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b359ff434e9137017a657525872113c0e9aee33f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClAwfhVo2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClrYBLab2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClrYBLab2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0118176dd48f0b53b039a7481e5a877ffdccb703
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClrYBLab2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClxmZAqR.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClxmZAqR.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0105dbb527fd2905fbee3c0f8667e91e16af0bc0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ClxmZAqR.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cm85DJU5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cm85DJU5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..233989a550a7fdd1954454f75e611a42f3bf2b87
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cm85DJU5.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CmY27Kx_2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CmY27Kx_2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0793097c4c652762709092441aecfaae67fc2b14
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CmY27Kx_2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CmrA1A_c2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CmrA1A_c2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..018ee5dd221a746482efd301b778fca7e3b2a515
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CmrA1A_c2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cmxywti82.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cmxywti82.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b8c800bb4b7f366aabcb7e98b50b5e12e8a700f9
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cmxywti82.js.br
@@ -0,0 +1 @@
+hdÉνËt¥‘—r…ü§›ǁáÙ=û‹jcàm,â,¼¬Þ6w³%ÙÉHÐÕö–jøo +8í?Ÿa9В%Ֆ#ÿ쫐3øO"V †�¤èïH<Ò/%òšÔL�¬-ө!‚_gҚ>±•§ÍäyY:+pò}¤æ\�/œl_ê÷ßDH %
\G®”|ÉWB�ªbû͊ZüMBl–Š·QǯªYU@µì%ÕXŽ�©½““ïÄuÕžÜw^K[\Wÿ,
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CnNQEB_42.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CnNQEB_42.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7913d58fa2ce91b0d25a381d3b4a933679f68a2b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CnNQEB_42.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Co4fM40K2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Co4fM40K2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fcd45dea56c995bbfba58037f62b1b01856eea70
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Co4fM40K2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoGwhvi0.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoGwhvi0.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1191437953c87008a62f0afd18de2db87de5a3ef
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoGwhvi0.js.br
@@ -0,0 +1 @@
+#€import{n as e}from"./PkrLQzKS2.js";export{e as minmaxReduxPixelShader};
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoUCJ6Qr2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoUCJ6Qr2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b81332cc788e9aaeb39d2c2fcc3cbcc17836c74c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoUCJ6Qr2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoaxCTDW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoaxCTDW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..80f8c2543ca40a1ec65b61c6a41a4c085fef1785
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoaxCTDW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CocRaucg.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CocRaucg.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7daaeaa859f2a0d620066a05850ddb20fbf35084
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CocRaucg.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CogpWsmq2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CogpWsmq2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1392bda3528b784432a2daec687e18875458334e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CogpWsmq2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoxeDRXQ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoxeDRXQ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d56cd5a8e7fa5b23137f1ea4c863845abc9220f1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoxeDRXQ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoywC81o.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoywC81o.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ff2f576be0fd1d8d3b4494d161e84b9f0d09286b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CoywC81o.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cp0w6PSE2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cp0w6PSE2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..99e9fa56e07ac22940c31af8304233c18dc674e2
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cp0w6PSE2.js.br
@@ -0,0 +1,2 @@
+K ŒÔa3—²¶™ªñ}C‘/e,´qc+'¸‡±ðò¦n‚¼Ž¥ð�6³µhl ÎË
+°‹(á ôœ\$˜;}‘æWìI†%5\öoL#¬+Ÿ÷k‚˜b¤¯�PqàñËÜ9îi³„Üx'þ…&=e—âٻjû<ÇÁÛ¹¶ R"IO?®!Üê·Èàó¥ûZï¢m4àÈ Mµû“ÏÅò½…|w
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CpTbZzgM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CpTbZzgM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cf739fdd08ea052d906ba9bd6e3b5e35cfa3666b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CpTbZzgM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CpizwD1C.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CpizwD1C.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fa517098b9bed8dc76c931c3dba31d5965e38a57
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CpizwD1C.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cq39gIfu2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cq39gIfu2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b01c12bf5acba66ec619ce2fd7a969d5352c44d6
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cq39gIfu2.js.br
@@ -0,0 +1,3 @@
+· ŒÔ^92ࠩmvJâH¦i&þ�Ù3l‹�Ás~ ƒᶟ*(ۂN‘zÑF²Þֹp6§Ê{Æ�V
+„?#üm? ^èp‡¥o7¼e>
+¨úð4E>H”µlà~âȶÖúóÂëVÊt”DÄ%I%|Âû8wùS�Š\kܶP1è~`2$¶'¢†#aDqµ¢Îc”%¼p�€†{á§ðo٨v–$´çøUé|š�Y‚"L
V¡¡_—«cæÙ9VX‘‚(hžëYÕ_¹üÇ€§à÷h�¼ìûëÉ]?R¤T]LjX-öÍ+!6ҳKî¿\‰ÀÂlçöýõä
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cqhdtml92.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cqhdtml92.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..639b03ec5d1a685ca629f84d2825ddcbede0f3c1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cqhdtml92.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cr6dnVKE.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cr6dnVKE.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..95b9852f1f2e6f00d5ae1093e7dd99b3acec7aec
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cr6dnVKE.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CrKlOL_N.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CrKlOL_N.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..80e154566b1e8b6674b2095a7941e419fa8a6abc
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CrKlOL_N.js.br
@@ -0,0 +1 @@
+‹€import{t as e}from"./BOQ3ApEd.js";export{e as WebGPURenderer};
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CrdLjxF_2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CrdLjxF_2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d33dd30e9a2ea5c61fd3da2c693b59b0f8d1e967
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CrdLjxF_2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Crrb2Aik.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Crrb2Aik.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8df1cc5cc5a9a0c31824901c0d0404525f85b133
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Crrb2Aik.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf679906601de97e08fd4d9f0c3565ed1e77951f6c458f4de7e84bbb3434e6e6
+size 114368
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cs1-1e_z2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cs1-1e_z2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2a94e453e1ec9a44ea21971d56716113cfd808b0
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cs1-1e_z2.js.br
@@ -0,0 +1,2 @@
+o@ŒÓ
õ«j¹õ¶ëT�¨«HëÖèEAùÄ*£S·õlД± çðW£˜EÁ$”ž‹&së{Bjƒî}!N¯8åÑ(
+ŒWá:¼É+€‘:¡zXK%ã$÷$7MˆԎ‹l,³¡ä£g¿½�°Ü=ý¾þˆKJaÙ¯ÿ^Ìæ‡c–
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsNi68i5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsNi68i5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0e354a4497c59a272816736b070f72adef8c1303
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsNi68i5.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsUyZpZg2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsUyZpZg2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cd75522d7d6d00cf8be16528f0c1fa58fd9497bb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsUyZpZg2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsdMQMuT2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsdMQMuT2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f3743e70308dc3dd618db1dbb5f5d6a7e85252e0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CsdMQMuT2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CtUMwXE6.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CtUMwXE6.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..08349de87b8788094fb72d9446de32f44e50fd49
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CtUMwXE6.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ctlub4nm2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ctlub4nm2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b06017af00fb54ce3e43eb07d10e7d6dc204163b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Ctlub4nm2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CtpOwO6k2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CtpOwO6k2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b2b560a0a4894031eae11d81a64ca9638257ec77
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CtpOwO6k2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuBYPcDK.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuBYPcDK.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d380a653bbc9b862b37c651810606499b5c0552d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuBYPcDK.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuD8Mcqv2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuD8Mcqv2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5c9cffc332c8810f00dd5c30fada83423e00453c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuD8Mcqv2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuYP2_N62.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuYP2_N62.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0f433f6ab2e64e5171d540949175dc7ffa04255f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuYP2_N62.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cu_sj2zM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cu_sj2zM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..210d4d7cb04abe04b3f98e6cdd574cd65abc64e0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cu_sj2zM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuoflU6j.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuoflU6j.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ffc8014fa466b655813c570c342957f316881d03
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CuoflU6j.js.br
@@ -0,0 +1 @@
+¾ !Iç2›í,ÿ~ÆY'3I*T쮩÷Ž!Õ~\ƒŠf‘”M)0ܛF«
xA0·†Dôò“¤ÓíœB0dIŒaÃS҉ ð¦ýúÉ̸Ѯl—�:[‹O_!È8'ê‰gñ:gS¬>m/˻d@ð’20Ö23«-'sàc}_ôµÂ9àN¢?ÆnòpáÒhzéfVQ:_!ž,ûä橔—Š«])ÎFÉ^ž9Œœ¹]'è#_°/&_êð`²;™ä“ÅöÒfk(ÈY·Ý.€䫙—¢ëøßèòR"^%*™æUÞ`£LBn»GÛ
ô‰Q·!Ԧdù Ä<&5+ÿܩ¾Qòhª�(ÖG4§IEHÜo3}捇ŠFV_y¡Ág¼Pա‚>ñX$݃㋁Ձóûd½£œ:Cÿ’]M…Müó(ô9_‰لÏ}o”Ú>¥p2mwÐgÁ=Ì{(@²@Æ`·�ÝbÖM°=JWp]7®â6#Uǧûʣ1¤hOhm«¯G‹z÷#¶'íY»Tá=öøNaÜøãVª–ïÉÁëõŸ•앐à�çÇ%¥.Êy÷oÜæ'‘·�U°†ÀÛ
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvBlH6aw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvBlH6aw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fccc195b75d854d4dc760eef0d1163d65d45e499
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvBlH6aw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvOYs0tX.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvOYs0tX.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..38efb7a1608a1ffca9a0a6622e826f9719b31f41
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvOYs0tX.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvawLPWH.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvawLPWH.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fd0c078bf3c3e0b1744c9753cdaaec554ea2e6f2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CvawLPWH.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cvc87MNO.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cvc87MNO.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..088a0c50fd524016a0fd5f8d252f6b903dfb8a32
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cvc87MNO.js.br
@@ -0,0 +1,2 @@
+@ÄrSe
+:ã ®ÂNÕ~ÂuŒñ¶�ã˜SuJIÄoÖX�À‚ÒÍa1$Ä9ÆÃã�ÂíÝÿè“{~Ôôih¼f劎Ø4núaìxÕøgsgqjùÞ]Äê¨ϳÕM=¹ô¤F<ÚȺ¸KN¹ùgf40ÎðÊgTä$¯Ä&»C@ʿÄf›œÌfHÖÿ+\<Ô_
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CwO-pV60.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CwO-pV60.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bcceb80e00be679d357d3afcabbd47114ac11879
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CwO-pV60.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CwnAcj5L2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CwnAcj5L2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3417e085aae175206636b3fb49f414965b709d89
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CwnAcj5L2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CxDnV2y12.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CxDnV2y12.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bbca137dfb9b9a403d5a402fc47784fb21810397
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CxDnV2y12.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CxHHtTd62.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CxHHtTd62.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9f079c9070d74fab7761f7014dbe2c9e8c6f834b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CxHHtTd62.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cxzc8Oe-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cxzc8Oe-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c1003f3cddee9bdebb7dbed009659c5f8f4c7e3c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cxzc8Oe-.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy1aNt-52.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy1aNt-52.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fcf695109a18508a8f2ada7529bd32f54364be32
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy1aNt-52.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy5tXUtV.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy5tXUtV.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e330c0c97d729d5aae33a79ddc032a0b49267bb7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy5tXUtV.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy7K0aSx.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy7K0aSx.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d699d43fe1d21ed33ca66d45fb9b4696dfddf28e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Cy7K0aSx.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyCl8rPi2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyCl8rPi2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2de16690a64e462bf3cd842add9924bd94ee4e53
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyCl8rPi2.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ae1ca739659ba0103aaf0b102690b0d4e5b1c0bc5d5722f873fd0ab067a172d
+size 115616
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyiP4af0.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyiP4af0.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5f3cab1b16dad5afef0d854c87dbd97481b28be7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyiP4af0.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyonmeoB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyonmeoB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..966a02fc9d470d61e98ccf97a6b3dc525ccdd90d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyonmeoB.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyzU45oA.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyzU45oA.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cb5c51fb28906fa1605db0af9596eefba85a4d0e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CyzU45oA.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CzSwdNvC2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CzSwdNvC2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2a75907057bf73f39acb4651ea46a776e8b12124
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CzSwdNvC2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CzwsczJZ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CzwsczJZ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4eadec0483fbfff37c9b9083e10a0871d5c6cf37
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/CzwsczJZ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-2zxlXI.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-2zxlXI.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..aabb94aab5b5adea391930485de4165fc477bfb8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-2zxlXI.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-AvJaj32.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-AvJaj32.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f7420ea923b4e0f13a9573e1b9f08e8eee825ad3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-AvJaj32.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-DaAXiW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-DaAXiW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8c94d1810962da7f8a1eb74b8d04fbf408c43b0f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-DaAXiW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-XQlhUT.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-XQlhUT.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4e928388759be4c04af5b82a798d9d2e24f3dfda
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-XQlhUT.js.br
@@ -0,0 +1 @@
+Ô@dp^ª�`ã™\9¥˖·�ûm§)R±îŠ�’¯ši”Û`¡ØþÇéà (ŠÍw¥ÂÞsÈwÀ¶\¶[M㪶q¹õ
û¶nŸ27Ïê½òôg?æ۸0,S&@�`áÞÔTM5�ÁIV?¬¤Áͺô^8^c/îŒßßfÒÓ7¦‡B’Á�¸æGø¼Æþ2í«
é‡
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-b4ZLtC.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-b4ZLtC.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5e129577f55d25c8421dbc07e9def0fabf3d828a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-b4ZLtC.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-r2AbCS2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-r2AbCS2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3451d645265d1256f0e1f9a0229906db4450c224
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D-r2AbCS2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D0BwqKL-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D0BwqKL-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d9b169dfcb2f4c6b79683d628d9e856ce56e613f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D0BwqKL-.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D0GQARQF2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D0GQARQF2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..582451dc22cc6b6b843d3f66b98bfa242a913672
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D0GQARQF2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D2Tbgc-g.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D2Tbgc-g.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..dbbc8439635e91257295a52d9fe70740646d1332
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D2Tbgc-g.js.br
@@ -0,0 +1,3 @@
+�•“2„ŽÄØ12&IF´oò—s6$:”³iRðTÀ•�.’ެ-ÐKNM¨·_'`þ÷ûµ¡‰xSoDÑHˆ”Ȟwÿ^Täí"®‘ÙH³DmäJŠØ^œÿÈTI‰”;º틢·U:^‘)èCßýµv}Ž·ÒB*auæt�û½øÍãôƒE‹MÐÔÄ(ȼ@KeΟ8˜áJ•E€_ï,|:Ԧ¤•]U¥Ÿ—qu†‚^+Q¸6fcXÄëÚVW @-Cዬ~éêoµi¯ãV¥Èàª}ÀäK¯¼5A I;†ÌótcuX�Áñ˜°:œÍ×JgÄ@jbtf r[,.%;FW�<Õ2'4‚5OòŸë—>´,õê~‡ÊË.~pŠƒ>=Ú.ã�ù�Æ`fðfA½>u…½Þ’¡ä®K‚3ÐA°½yjݑâêáý×ÔþV‘›€Í7ýG͈6›Áà:¾^-©§ñc¯Ùë�b7F֟)[#ŸƐW!«ÿ½ƒý]åÃ2"�êΦîG¸Tˆ²‡B�ð`
+͋)tu¿ô˜Ë$Wì³<¿O^LªÎËe9xȢ=ƒbVWPÅ&WY¼ýEù²#KT6'±Ù|Žpw‹�#ŽûH¿ˆ™rÂ*qY6Z¿ô·Žkͣ<2ܐ¾¾Hº. RŸU+ÝŽ
«úà�ROˆ ´õ]å9uQálz°˜)MÀîQT�ÉÐÓí6=po\×i^)L³©ñßÞæÌIʋeWMmgs #&Z9{¦6šچzÖY߮`f-ƒT@‡ºqfF
ɸþQÊ\ç“!!c¦Ì¨F ÒÇ‘m³Mƒ8\¥ÐYóTðŠéagdrpãݎäœ~°Êû![ð-˜þi{¥ Û»_øʣ·:"„Ք l+З¾Շ£-Â(ݹw¨۵'mG¿‰ª²S{{ξ¥äæU×&t„f½+—ÀДªÙõRi”«/Èø2˜
+e$å\bÓdc)
R_É"Q·4•Õôoˆ«ÓV$Ajr'ÅŽ=)ÂXŠë¡p5�™}±ºWÆ/aÚØÀ9#Ÿ¹°ærƒùÂ’yŜ3fýƒ•FØÊå1ó]2V¢Šk!f”î’H�…dµA.F *0(ù�Ub�²q–åT_¸¡ÚÁyܥ©=uܖÕj�RSS¶SMd'3Ö}å(@“\·¯/ORs£_î³_m˜Ý
'֋?
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D35G7w3N.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D35G7w3N.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f68f9f660d58def7c416366e9bf01e6d17f2820a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D35G7w3N.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D39aHyqg2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D39aHyqg2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..354e22458d964a86a4f1b5b38182d94e3c7320c9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D39aHyqg2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D3MY_ACW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D3MY_ACW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9fd186645175175a1702c9ca289049ed01b01c38
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D3MY_ACW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D4TXS6092.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D4TXS6092.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..28161f294a77637862c2e23e6d56f44147c7f086
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D4TXS6092.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D4WYijyW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D4WYijyW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..10fcee1dc7f86fb9cf3268cbe221a77d17ef962e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D4WYijyW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D57wYXK-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D57wYXK-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2e2914bcc04cbb62dfbdde009b86fb09a650cd58
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D57wYXK-.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D5KshDw02.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D5KshDw02.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6dde84c0b5933906feaed9ff8ee992297cc1c8bd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D5KshDw02.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6jkCcmd2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6jkCcmd2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..40037d047b8d5f05bf36adf177a3edea8f9d31f1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6jkCcmd2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6pUNUfp.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6pUNUfp.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f2d55bb60129d237954b0d45d3335f2bbb7b0cb7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6pUNUfp.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6zCJ74D2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6zCJ74D2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1c4c832854877ab6e6e682feb1bf516b337bdf9e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D6zCJ74D2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D7enPiMl.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D7enPiMl.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4d1b99eadd66ac6acaead8a6cd3985de089a650c
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D7enPiMl.js.br
@@ -0,0 +1 @@
+‹€var e={name:`obj`,extensions:`.obj`};export{e as t};
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8-D2OEB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8-D2OEB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..83513ed469c89deb2ab8eef1e40cd50d2d077aa0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8-D2OEB.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8VfAYaj.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8VfAYaj.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f7f4ed13a0c5a2d44b0adffcf974d59c9937dcc2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8VfAYaj.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8WNw1AB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8WNw1AB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a547315a2dca76edbe9989d40f615203e3992f4d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8WNw1AB.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8X9fQHf.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8X9fQHf.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4f11c0521ca74606b33e77d0aef89809c614c47e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D8X9fQHf.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D91xNPKF.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D91xNPKF.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7c543ec6bb4c20fa7b6d45d9cd8c65accbb79646
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D91xNPKF.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D965Scw3.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D965Scw3.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0f3adccac6155dbc2383cb60b66aca35ad42619c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D965Scw3.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DA-BoziM2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DA-BoziM2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3ac6e1bb39c5ba33833acfa2011336d70dd25e06
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DA-BoziM2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DA6pnXj72.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DA6pnXj72.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..949ec224fc3c75392c7e32990ea2e6b0858d7eb9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DA6pnXj72.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DADKenSm.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DADKenSm.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ee94705a6824aa34cb1c99d7cb453e3dc153abe4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DADKenSm.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DB3aSEZM2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DB3aSEZM2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..37c940e7990907d1ea43899399e09ef6045f2ad2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DB3aSEZM2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBTjyBEs.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBTjyBEs.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..041753844223247a08d5df6bea0bafba4901f819
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBTjyBEs.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBqUj4o42.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBqUj4o42.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ecabf1305af4bdbc08499eca85ad8931fe19302e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBqUj4o42.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBsCJiPp2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBsCJiPp2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ca43f72ef571b0d1ce6ca760e7983ca2ac8f0588
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DBsCJiPp2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCXdsrWy2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCXdsrWy2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cf0276338c3f258c3e06e28fb445543e150bc2fb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCXdsrWy2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCvJDi9m.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCvJDi9m.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5e8cc9cd35854b2bb3091a024c87947e6caf00dd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCvJDi9m.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCxhI9hK.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCxhI9hK.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..72f513ef55feaac135d086a818b0e481293cdba5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DCxhI9hK.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DDqBYTGx.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DDqBYTGx.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..eedddf8c45f520cbeaf01d824dea073ccef0b01e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DDqBYTGx.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DDq_6O5s.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DDq_6O5s.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c22bfe80626a6c42790804fa05dbbc1bda587deb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DDq_6O5s.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DE9SULIj.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DE9SULIj.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3aa13c00a9d7a60caeb995944683bc1a28764745
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DE9SULIj.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEHPIrcT.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEHPIrcT.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f6f3a44492242199cc3a8fbfa04e150974c29faf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEHPIrcT.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEPPkZdI.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEPPkZdI.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7c6ababe90e6539a4c79b5de996d313d2f3d1df8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEPPkZdI.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEt5a_Bl2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEt5a_Bl2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cfcc065edf4641a85ded662cdaae5d17633506be
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DEt5a_Bl2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DFaZXngJ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DFaZXngJ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ad8ae8a90bf9260d4b5403cc2c22d32727fca355
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DFaZXngJ2.js.br
@@ -0,0 +1,4 @@
+ç Ä÷Íééڱüö‹ Œ®LJ[e¶4y˸�|.?=ýŸvQ !8-zA²uµXœPõœ2†ŽÕnÁ·Ů+•áw0ÇKõ‹W®}| ¦~L•EBÑh£÷t»T~º«Ï/^—¥?»ÝWÀˆ8k¿+7Åá%dK+.öȰ7ÞLXIi®^aP®õbú|“U¨®òˆ,Äÿ]‚:¶ª½ǭJâ-Q~%ÒŸÆ|Îø
+Ÿ�O�õ€ÝQ܋ïÃU�3‡R*•dcôð„Ì$:uâçˆs
+°U1}G�ABÊÞ*å˜T!vª¡Óbu8üëV#Áv©S¬Pˆ{ö~5³4¥À·2•3�£‡½�ÌÆà—"¨Ùà-n
ÙÒ!¨û¤b�ƒ
+Â:Ƙ£M
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DFk8t3HG.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DFk8t3HG.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0f295d80193a63b1766e64dd98ed5e24bca13630
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DFk8t3HG.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGV_t-ST.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGV_t-ST.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e2ff2ef082c6507053c456e55511ac01d8b06a9b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGV_t-ST.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGhnzmvw2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGhnzmvw2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d64722a4e6665d9a3726244b155b8fdf43ba06f7
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGhnzmvw2.js.br
@@ -0,0 +1 @@
+‹%€import{i as e}from"./HHOUS3xJ.js";export{e as gaussianSplattingPixelShader};
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGj6Ubxc.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGj6Ubxc.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f2aa0d27dbf86e5396e53651a178262686ec42fe
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGj6Ubxc.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGommRkI2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGommRkI2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f864abea74c401dae4fdab21dc6cd557c9f54b2a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGommRkI2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGxstlFz2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGxstlFz2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..411f906522dd2a6c89191a1184ca8695e945efa5
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DGxstlFz2.js.br
@@ -0,0 +1,2 @@
+: ķúÍÓ|ƒ؉a'ˆžªŽ=ðüN~Z߁sêeLÓ
+ʶh‹úö¤HªJç6Y\ñ|ì[ 1�¤=üIb'îý™ªToñ®ñ{RÙÅ)A[Ì´yóv{ò¸ƒÜíq‰ãÃ͒ôTUžùLiÊ_J÷"u ?ÓzÎJ RêÒ/DctЦJ|°ёeLÔoŽ“§D9-Y 4#ĚC&Õi;Ž–Ùu2b´ëÁVŠušâax5-…·eT‰E†ü„,a¬žVְéó¯•ÄoWÎH;êH´{Àù4f=Iærå6òËi‡+ßְs–f2+)µ¶i½¦Ü §‡’³ƒ:ÓÊtüü*Rwõ%Ñ*!´]9e}ÂKӘÕb—°ZÃögìØ%@œ–þ]™èì}3yjÉ{ê4‡ôJJß)
éi°<
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DH7v1eJq.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DH7v1eJq.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2a2236890d769ce0a56add251f91569819e437ac
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DH7v1eJq.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHADOgf9.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHADOgf9.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2010b012efb69d7fc34fef02d2a04b9c5925ba77
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHADOgf9.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHCQDivm.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHCQDivm.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2cd0051e945dc56b8b6db7531a831bebb2082792
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHCQDivm.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHjZUXZK.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHjZUXZK.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c7d387d29a3fd8d7da10d8930e1b1459c27f1117
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHjZUXZK.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHtFjXSM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHtFjXSM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6dc508040e1c1efe89dd1f0b083511d6fe6ea052
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DHtFjXSM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DIZHu7ey.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DIZHu7ey.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..bd575b93836908c5595ab420ea88f09ccad5119d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DIZHu7ey.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DIqXO8t42.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DIqXO8t42.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..968c74c857ae9f97c6e986c1d392cbbf5de768b0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DIqXO8t42.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJRHSwsK2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJRHSwsK2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..be4311ec8fc72dfcb48b22263cb5e6b1d626166f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJRHSwsK2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJRVf1Gf.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJRVf1Gf.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ce2178ff214bc298ff6e2317c0936f2fc73b65da
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJRVf1Gf.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJm0szkC2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJm0szkC2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f57542856de97a244a3f150338080d8a3ab176e5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DJm0szkC2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKa3HXhE2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKa3HXhE2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2d55c9b446382392e3c070252f50ca80d0552431
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKa3HXhE2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKeGO1mj2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKeGO1mj2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a65ac3c605ddf265605d243b6d9a46076bb5c1b8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKeGO1mj2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKvqWxTe2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKvqWxTe2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..713b8d2fc8a52192d9d0522e19bc176d8f411acf
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DKvqWxTe2.js.br
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d52a06f3afd986a4e4b57dca9d88622cda5106e1f22ebb66764467d2821f0659
+size 127731
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DL9AXTgr.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DL9AXTgr.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..11bbd7b2376253e751ad53e8ee0bba3210288ff1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DL9AXTgr.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DLbtoVb52.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DLbtoVb52.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..df9174c8da72a766405b2c51e384370cf71fbedb
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DLbtoVb52.js.br
@@ -0,0 +1,3 @@
+ dÉÎim�{a*<~¡Í2Ûù`7�0–´ú([I�tžå:Mº n9È&"®04¾mš8bÂà®>)‡âBÿÌkJçcùÔé®>‚‹©Bs,:oIC¾[¿ƎW?õ:³gËN|ߎ¥Ðx&Æ…õ!“A?¢xà‚¼8$×aK
+'|EqH¾�KJ¤à4qž5Ór$ç
€”Ê߳ðò
+ï¹ÜY¸8øù: Xò'œäo¼V¦¨Ñ
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DLwhXWDi.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DLwhXWDi.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2c0cf096cdb3d6e8f12b00f7e56a2c13dc0ead39
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DLwhXWDi.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DMW9ha0y2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DMW9ha0y2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f29ee243570cb2ae2d7f6f6c07c6d693cf563f9a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DMW9ha0y2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DMbg2FJT.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DMbg2FJT.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0bb9d9747343b28ccad5e85e06be6a89dd62fe14
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DMbg2FJT.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DN-jigRS.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DN-jigRS.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..53356c11eafc5b124e8b4162dda32a4b2d40d26c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DN-jigRS.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DN1IzRZv.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DN1IzRZv.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a7fa82ed9b35349dae4597fbdbeb2c27b3a9d58b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DN1IzRZv.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DNMbqcH_2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DNMbqcH_2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a522cd88b877f0719329d43d7686883a1bd2437b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DNMbqcH_2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DNTCGzC62.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DNTCGzC62.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c64a5a882299fa1e125ce1fd44dcdca693bec299
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DNTCGzC62.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DP61Sd1U.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DP61Sd1U.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d2d5c30ffbaabba8465a71fa5b4a81a3d2c0286c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DP61Sd1U.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DP6ZOIqz2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DP6ZOIqz2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..856674f300ce59af4f8ffca822f0d6cf86f08f13
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DP6ZOIqz2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPFfRnXd2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPFfRnXd2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..07f507a4e510dee0ac1d3a9591e3e5df9472cd0c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPFfRnXd2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPIZVF1j.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPIZVF1j.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ce7e34a2b4b9f7ec727f5f792d4470ebb5d03fe1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPIZVF1j.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPN9buA72.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPN9buA72.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ca35600142797afe50a2414c9ba85534e857dbb8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPN9buA72.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPSMPiek.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPSMPiek.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..62205b661816987e5fb3fa4b2e4b9630d016d32f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPSMPiek.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPcdQL_J.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPcdQL_J.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b477ccd5fee27e870708baedb9e08d532dad21a3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPcdQL_J.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPjiibmx2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPjiibmx2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..abb79f88e355538ea1c10d6d2c6bc9fb91bd1883
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPjiibmx2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPzIVE0U.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPzIVE0U.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c03f8f5161732063b6608894f32128a2e33b73a1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DPzIVE0U.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DQKpcmom.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DQKpcmom.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6fab9b2126010399fdcceacf6f6f823d2e9dbf21
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DQKpcmom.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DQaykNc-.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DQaykNc-.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f38b5e29792bf175d44264c84a6289ae2c44b1bb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DQaykNc-.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DRKw74l32.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DRKw74l32.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f3ba6031130ee6f215a08c52667dc3b2cff00175
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DRKw74l32.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DShmh3Ld2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DShmh3Ld2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..48d3d4f62fc7c41c6d4813f8e22161d8b96322e6
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DShmh3Ld2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DSkcmCis.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DSkcmCis.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..18b4249432508f8bfc5d2745ffadcd4fae8a0ed0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DSkcmCis.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTKsW_bp2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTKsW_bp2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6b416858558fbeae0e213236d153d659d2e23bf7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTKsW_bp2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTLtdnPn2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTLtdnPn2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5d58a5212a25058268aa8baa02900c6c2f5390d1
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTLtdnPn2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTLx1fUo2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTLx1fUo2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..eb908cb7f50f6c595ec49dd614012652df5c1b1b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DTLx1fUo2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DUC58aDx.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DUC58aDx.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..38f7b19ae49ec673d57e5be08a5cd2b51a72ff7b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DUC58aDx.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DUUh4EcC.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DUUh4EcC.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4ef559f651779878f926baf4c81b39945845c54b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DUUh4EcC.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DV5d4x6f.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DV5d4x6f.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..415720c8a98cc6c62868f6d1385fe479b4b22ce5
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DV5d4x6f.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DVrJnlTD2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DVrJnlTD2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9853023e4e01b277d16df03a706dc368ab48a380
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DVrJnlTD2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DW8JvLhq.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DW8JvLhq.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..72feafcc43eadd08a2fad7519956139dd7758d1e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DW8JvLhq.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DWYgMBfC.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DWYgMBfC.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f7cb0817409d67142cb7a3236dc3f73a93b93fdb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DWYgMBfC.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DWyOej5f.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DWyOej5f.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..6be31a911eef7da1b000d3db553ca531d5bd4b01
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DWyOej5f.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXKSJFTM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXKSJFTM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b4f533918d452480f65c80b3e6db765bee1c700a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXKSJFTM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXXdt644.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXXdt644.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..fb8fa3d362abee0352776e812493eeca141bf57c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXXdt644.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXfYoh2q.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXfYoh2q.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..17200108038d1cc463c78062fdf4bec3e85aeb03
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXfYoh2q.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXrtKbiD.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXrtKbiD.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..eef2ad90be15a975b26dccc50c485c98a1c9f029
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DXrtKbiD.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DYNqSSuw.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DYNqSSuw.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f72b3637c2f45969eb55b006b1a737aca3b2f82b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DYNqSSuw.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DYQjHV7e.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DYQjHV7e.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..0df7b755029811b92c8b8fb1d559968d00426de7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DYQjHV7e.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DZPWSpzW2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DZPWSpzW2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ddb0a737c6bf93a5cb2a05e70b9cd0f280d26ece
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DZPWSpzW2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DZZO6V5g2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DZZO6V5g2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..30fb396ff5c69b4cf5c98a7c10da6bcb4facaf90
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DZZO6V5g2.js.br
@@ -0,0 +1 @@
+“@äÌ͝eú0ù•ÐÍL“"¾P¢ýéF0é›d³Nûµ¨Š´ÈÖ99Ãæã}±ÅºPd>z{S_�Pêìw yd5|ÿ‘_٪ßyõŽ�_þØi«¼øÿâ¬úˈґBñ܃?~Š¿šTÕÖ#&$«nɰ·TA„ÆţùFÇߕ4Ê$‚]�ÂTMn Þr!þŠ*%-ëA¤€8¡9�®œy;û^@ QöS½`vբ ^UZ¿{[ßþããp;»ú÷<§�X·® ÿëYdrÅç<³¦bU;[ýWüY‡ÛYQ
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D_-ytPN6.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D_-ytPN6.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e35a796c9137626900020ac44e433fbadea09528
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D_-ytPN6.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D_vdkwnX.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D_vdkwnX.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cccf36e3a0ccc6caf204e6cbdee9d2993c11cc2d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/D_vdkwnX.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DabUTXed.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DabUTXed.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..541ab9b76130319584ba808f98729853a6b06e32
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DabUTXed.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DavecDRq.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DavecDRq.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f64b2d743b5f96536cf75b79f72730416812406f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DavecDRq.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DbIGRni32.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DbIGRni32.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a75ca3478053b11b7b0349a475380c5711afd33b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DbIGRni32.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DbNhdfx_.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DbNhdfx_.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f630d020951fc27daaae9f0075f0d4f045cb9404
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/DbNhdfx_.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Dc9irvEQ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Dc9irvEQ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..99ac970cbf248907b3bef82b8ba24f3035f38015
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/Dc9irvEQ2.js.br
@@ -0,0 +1,3 @@
+0 …éVÌGÒ4§ìKY•[¯oàl¦ªQٜ¤x�Û&°1E4zÊåeèšú‘øw„ï•«ä
a@ÃãEÓ^——ÖíÅîBXýÑÖ±;ÖÌBS8ž8‡ÑĸF˜ãx¸…&nÛÏÐx…fŠ÷„ø|µ3ü«µ6¦ؤHFÈZ+HœƒÑËÕïÏ
ëæök[õ‹òÈ:Y 2:§þX¹U¶ñ¯HŽCOÏc¢kã)×ÊX2–Ç+¡Æá_Š¥
+çªÒh›fÏõÊz•6ä¦.éZUI4x¤%,B]Òãa8ZÉ'פ°æ�Kk”ê<
+Õ\{ŽJ 7dC¢…RÃc¦†Eà®2ú¥ ƒ1QBßÑ۞ØÃ1y<š’‰FÄB¿ˆ¾Ô+>;ZW�Nê
ƒlÕÑâá7{÷!H!æ΅\ü¯=QP>QØó–'6
ô߂LÈêã]J1ŸŸKy�̘‘B·Iԑpô&M†k¶"®–ÄDBƧ§¤ý�–ëQNº©S²T*EnÖÆÃ–n�c±§Œԅ>ï_®ZŠG˜-EþÛ'£È0fB“þ0ò–¾̿‘Qd’hTËëë¨;R8~B/�\|QIžø-®AŒ÷¹]–o
©È%\”;xè^Bÿ)8ý,4®=àw“ñÿJpQÝQ¡6ÐA
þBƒÉ_v,}!ÿ˜qºœµäuS‚Gøm6ÞUeÍ
+Y?àð�©ÍZ¹óººú,ô染âtú~{ÿE«z&X#�ȖvqÔI)úÉXÁÃuø~v¸ñE‡²Áé·mrÜÍfÒV-FCŽݢjš&!´ã'&ÿƈÛÌ7)ÏFLx`Cœ·(=½\q'¶l&²A„«)Êôðw¤ʷ_C¥{ÑW~•“셥z“HG¥ó–4CæöŒ;[÷B¸a iÏ#˜‡H¾µñÔAFûÒá;&iÒÃ_YZjýeWŸ³5‹×éݸßdòeX|Tq&J�ý{1›ýäº49ðÙåԂ¤lªUÆæP²é§ް¡Èb3›å˜5Ëña+ÍfŠã!¦Õ}V¼5½~¶Y¸ µ€æÖº»Å}3ltWpÅ4g>
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/b-e-H2GV2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/b-e-H2GV2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e6cc2a695ecf5fb305de983b549949f76b67e434
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/b-e-H2GV2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/bSxWi4v_2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/bSxWi4v_2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..832e8c9528b4a9b33ffcd803a0fb0da78c723726
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/bSxWi4v_2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/cBy3_kZP2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/cBy3_kZP2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ced5ef847992b8e5436586fec103f4dc39ee7eb8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/cBy3_kZP2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/cW6oSUGJ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/cW6oSUGJ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..29ca9458a6b7069e7fcc13e97b63953f0d82b5ba
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/cW6oSUGJ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/d5yo_MTB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/d5yo_MTB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..292996b98fc7a1c72b9aaa0bb18861eb59c53315
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/d5yo_MTB.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/dg_4Esv-2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/dg_4Esv-2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e99b199b994eaf1a637d567457028ec9287f69fd
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/dg_4Esv-2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/e-QctHjg.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/e-QctHjg.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3172684487475f567a40acb5d212d3647bb35ad4
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/e-QctHjg.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/eMPL7xiM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/eMPL7xiM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..e2a560c1507faec11a715af5740a91daa8792a99
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/eMPL7xiM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ecO3s6-H.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ecO3s6-H.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a85d30d262309e5807372a5d0b863d45b7763b3c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ecO3s6-H.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/edJyW1If2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/edJyW1If2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5749ceb9622a5087cc5ea50fcde427d6f8acae12
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/edJyW1If2.js.br
@@ -0,0 +1,3 @@
+¥@ŒÄ8&qbҒ�û-Ó••Ô0ÿÿoú·ÔßUjL,›ǢNf·•ƒÿnŠhX’×
w$ú-_Háä{£¦W
+þ[?ÃLè�ênÕl›+ãO‡}¡º¤.Ó忠¹äéx¢‚ì€ÔØá¥h19&ìzI0i¸ÙlƒVÂ^ž¬ÇØ
+dž ›-ê!l⚭m°‹€Ùè6ÌN·cºsҝ˜‹¹œ+�ƒv™ù¨Ìmèïáa±ÆfRc£�õdÔ+.Nlu«ü¨æ{\º»_`l[ÐnOý`(ÜêõÕt—«èíçít½п
?‰ƒÙ
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/fDaHc-ge.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/fDaHc-ge.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..a2cba2f5ef542f4c0e692ec793de0ac294ee1495
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/fDaHc-ge.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/fOhsSNAH2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/fOhsSNAH2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7675683e508bb34c84ef6d58abcc23f992f7c031
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/fOhsSNAH2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/gJU3GfUx2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/gJU3GfUx2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..161c3a5787731702b3056817d8e849cdf2b37b28
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/gJU3GfUx2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/gU_t5ZsX.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/gU_t5ZsX.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f7e569875db42174a850eefaf4f03a50f2426e3d
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/gU_t5ZsX.js.br
@@ -0,0 +1 @@
+€import{n as e}from"./BOQ3ApEd.js";export{e as WebGLRenderer};
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/glY4w0Tu.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/glY4w0Tu.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..38f42fca0a7c86f4b349f16429f295054ae4e6fc
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/glY4w0Tu.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/h2u2BZnc.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/h2u2BZnc.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9db65ebf5f5e96959c02a84624076bf57186e3b3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/h2u2BZnc.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/hHxdPUIw2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/hHxdPUIw2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..624c7eaa3386cc2b73d3836c08bf83cce5f36b67
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/hHxdPUIw2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/hjweLtav.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/hjweLtav.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..adbf4378066cc23f7482a807b0ff3eaa2220f831
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/hjweLtav.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/iIj3AmWu2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/iIj3AmWu2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b5bd67a78f98e95fe0829121210b285a2473890b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/iIj3AmWu2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/iY0bvglt2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/iY0bvglt2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..760cd6b9bc0b679efd37b4ad92edec64f6ef500e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/iY0bvglt2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ioeGp5dZ2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ioeGp5dZ2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4def4b9cfc45ccc4f31c1a003463c49059bf22fb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ioeGp5dZ2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/j4vcKnNL.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/j4vcKnNL.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..3b902a78bec314bfcf1f2ddb5d9f4cb84da2638c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/j4vcKnNL.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jJ2C_BSF.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jJ2C_BSF.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b30447299fb952bf5a68a8e5157892144d36f1de
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jJ2C_BSF.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jRDnEah7.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jRDnEah7.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b7516b0f956e3a92b01b5491ecaa0db9fdf78074
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jRDnEah7.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jTmidyIM2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jTmidyIM2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..501564ea3e39a3447c1b1bbdb0596f3ece560556
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jTmidyIM2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jWBW5YtW2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jWBW5YtW2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ad8d9dfbdff4ade07346a0713d08873291e3c935
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jWBW5YtW2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jYkeI6tb.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jYkeI6tb.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ae58c584860c1e736fecaf8edb5b631bd4fb36b8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/jYkeI6tb.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/k-jSGyTl2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/k-jSGyTl2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d57f633bd7b2845c519529efe7940295c5b45850
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/k-jSGyTl2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/kKq6PL-9.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/kKq6PL-9.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7d462ff75800c5e882c168c3d693163ca182f901
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/kKq6PL-9.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/kUk1DXMN2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/kUk1DXMN2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ba78d9235018a78a31fe6c4536b22a33a5f6709a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/kUk1DXMN2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/l4VGIKw42.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/l4VGIKw42.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..d0b7356eb7daed8e554af8f001a155d5306db6b9
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/l4VGIKw42.js.br
@@ -0,0 +1,5 @@
+A@¬
+xÓtv.U5F‘5ÏpöŒù=n›V´¡g£bŠþò"ÏCÛæç¡aP=|ÚÚÉáA֚Bø�Ö-9´À2Î
÷—“ŠÇ
+T®¸™+·ôã@šuõ@s)q®eµhž‰jÏOZ}=’‰ež;Øiñ{\‡’—Ç
|‡ËÉC6<æ„(¿�äkç¥j:-�Q¶SxkèwÙ}˜|gUõ7KÛnѭNqB ”GZñ©ï6Ț€òån@“߅…@=[ÌUã¯G
+LUŠ⫨¿\2Â<V|±‚º¤L²µ;êç.¸Šøpc®WZæmö¥låSv©mhG‹e‚’ÈS²Dœܢ`ú¾ïºò¤Õ*@òWž•?…QԷÍÌ2‹ó0zϋE¶ZVû#fÿü²p:Á�×L6
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/l_eDWd54.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/l_eDWd54.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2a2e72d902e7f74523fb1ce79cd37cdc0b2e9892
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/l_eDWd54.js.br
@@ -0,0 +1 @@
+™€Ĭœ¾¾)K3„séËtn,—Œ”ÉkºàF8—þ´jð({Ä~~Šþœ+NõÙÔ"Ü-ҁõnˌ[‚Ýd& Î{¸Ež“_¼`jâSŠ|øN¼Q¶ºÝé>Þö¿ÎÎ_ªÎ_¼½<•5âtÜþî]·Ϲ[g×JH¯*‚¬‘U—Qä’RóÒÖ ®IZ©ŠɁ¾jCcˆ~.V,µ&^n²m*"‹á2#è WI(`$²Ÿ>‰2j[yd¡gâ$ÒþFþïL#•Su…4¶ó÷‡T)
¾F0¦jfmZ¤ÄÆ/¹Þà•XoXʼ«ýÚ%9÷Keрß ˜5X¼‘"ÐQ1q6K
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/lcEYOqUS.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/lcEYOqUS.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..abfbab87ab06b4d1229152c03e0c0fd81dec823f
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/lcEYOqUS.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/m6_cuCmy2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/m6_cuCmy2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..525441b2a5a07be83848850ff2e68ed749476347
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/m6_cuCmy2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/mYB1N5De.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/mYB1N5De.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2a756129195ca816eb84581d3bfb0e81abf4b1c0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/mYB1N5De.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/mf0kjaBA2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/mf0kjaBA2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9297e232fce16ef0341114f9183c185baf457bc2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/mf0kjaBA2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/n5Ej6Pqv2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/n5Ej6Pqv2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8fd4ab3df27516b144d952311d926eae7507edf8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/n5Ej6Pqv2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ncd49j0F.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ncd49j0F.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..74be190a0454c994e19a372205b16bf9a8998aa8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ncd49j0F.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/oQgq7A3w.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/oQgq7A3w.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..b7638b7e9bf5e0dcbc01c4ac20a044b9059569d6
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/oQgq7A3w.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/osCPNaRY.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/osCPNaRY.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..23743c01a4f58c86f52fa6616d50ba5a2e5fef7b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/osCPNaRY.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/pxorAf8b2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/pxorAf8b2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..aaeeff27d916e48f51354552bfd34ac8006727cf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/pxorAf8b2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/pysXOyCI.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/pysXOyCI.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..5c357dd2935bc5bedb8b9effa4ad064392c05935
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/pysXOyCI.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/q1oRudXb.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/q1oRudXb.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ae6859f2de51af3c557ce73580d3aa575cd79477
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/q1oRudXb.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/qffK0jxB.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/qffK0jxB.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..cdd0215731514a804a04f34e45b4944dbbdb01e2
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/qffK0jxB.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/qwwHSABo.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/qwwHSABo.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c3727549fb0f54a9a7ddb865aac343fb9bcef657
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/qwwHSABo.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/r0H7Dip5.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/r0H7Dip5.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..1e274bc0c5460443cc577d21896b650e03651deb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/r0H7Dip5.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/r8U_VMZj.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/r8U_VMZj.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2ce0495222fa9fb2075829146645e05904d1857a
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/r8U_VMZj.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/rV-EppVp.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/rV-EppVp.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9c9b3f7196062404c5b8a5a9eb9d62384cf5c7cf
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/rV-EppVp.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/regJ6zwb2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/regJ6zwb2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7591c3623c9f0e7feca0c5016a724b5cabf22e9b
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/regJ6zwb2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/rrRnOh9x.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/rrRnOh9x.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..575016ea241a802073fcfec66bb5608015d65077
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/rrRnOh9x.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/s7-d_Yst2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/s7-d_Yst2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..f3a7f4249b31d0a9078af0f088895aed4b1e0fe3
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/s7-d_Yst2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/sDrdk2BW.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/sDrdk2BW.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..8a983bfa6f99f7a977f0b9c20cee47554abdd36c
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/sDrdk2BW.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/sMyRnkBw2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/sMyRnkBw2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..835ce51ffc5bd1079aa15b0f00e1cbad1056606e
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/sMyRnkBw2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/t22iQNzU2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/t22iQNzU2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..2944a07cce7d013e1e44fc950ab35dbbd26d36f0
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/t22iQNzU2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/t2Z6JMAk2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/t2Z6JMAk2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..dc75bff922ac513fc542afc3119c0cfc630af5f8
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/t2Z6JMAk2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tYRw-_yk.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tYRw-_yk.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..7a05c180d07d26009a78a827a1a6ffb42743548d
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tYRw-_yk.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ta8MItWJ.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ta8MItWJ.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..34be984dff5c2cd66875d1870b89297008d486c9
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/ta8MItWJ.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tqrkkWcM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tqrkkWcM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..366b9a850ebb2a5d38a12e2c7bba7e93f1a1b6ec
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tqrkkWcM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tyy7hRtk.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tyy7hRtk.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9c3c0f82af2578700c8e1c13d6513cd6fef913bc
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/tyy7hRtk.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/u5AeqQ0p2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/u5AeqQ0p2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..c192130dbf907c4e97218b7e3f43c38153db4400
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/u5AeqQ0p2.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/uAgVgt0n.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/uAgVgt0n.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..263956709730650c60df19906a704be0f5f48fce
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/uAgVgt0n.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/uIvGgAtc2.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/uIvGgAtc2.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..ebb3ec893b1f62faff143d824c0307d8f57469d1
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/uIvGgAtc2.js.br
@@ -0,0 +1 @@
+&€import{r as e}from"./HHOUS3xJ.js";export{e as gaussianSplattingVertexShader};
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vib75kEM.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vib75kEM.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..410b985efdc90e6a5d68b8dde2e8e5a69bb56ed7
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vib75kEM.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vkDpaLbE.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vkDpaLbE.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..9fcb69f5ed3ffef2d6040fd0456a004cac0ffbeb
Binary files /dev/null and b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/vkDpaLbE.js.br differ
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/wT0n6RKR.js.br b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/wT0n6RKR.js.br
new file mode 100644
index 0000000000000000000000000000000000000000..4615d53e5cc6d16379365284dc2089096982ad83
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/client/_app/immutable/chunks/wT0n6RKR.js.br
@@ -0,0 +1,2 @@
+Ü@äÐÎ=Ëô֤¾Ԟ¸¦ó—B5ÿ=F$U…g<¤Ñ§s+&³`pÔ"�9 [ß1½ðý”Òô„کîV͆¶¹RÞcz!nÁöí5ÙIž(R‰^ãàWY}]G÷Åø
ÏÂ%0w|l[!�ۄmíCd^q×Ê 1) {
+ let idx = raw.indexOf('?', 1);
+
+ if (idx !== -1) {
+ search = raw.substring(idx);
+ pathname = raw.substring(0, idx);
+ if (search.length > 1) {
+ query = qs.parse(search.substring(1));
+ }
+ }
+ }
+
+ return req._parsedUrl = { pathname, search, query, raw };
+}
+
+const mimes = {
+ "3g2": "video/3gpp2",
+ "3gp": "video/3gpp",
+ "3gpp": "video/3gpp",
+ "3mf": "model/3mf",
+ "aac": "audio/aac",
+ "ac": "application/pkix-attr-cert",
+ "adp": "audio/adpcm",
+ "adts": "audio/aac",
+ "ai": "application/postscript",
+ "aml": "application/automationml-aml+xml",
+ "amlx": "application/automationml-amlx+zip",
+ "amr": "audio/amr",
+ "apng": "image/apng",
+ "appcache": "text/cache-manifest",
+ "appinstaller": "application/appinstaller",
+ "appx": "application/appx",
+ "appxbundle": "application/appxbundle",
+ "asc": "application/pgp-keys",
+ "atom": "application/atom+xml",
+ "atomcat": "application/atomcat+xml",
+ "atomdeleted": "application/atomdeleted+xml",
+ "atomsvc": "application/atomsvc+xml",
+ "au": "audio/basic",
+ "avci": "image/avci",
+ "avcs": "image/avcs",
+ "avif": "image/avif",
+ "aw": "application/applixware",
+ "bdoc": "application/bdoc",
+ "bin": "application/octet-stream",
+ "bmp": "image/bmp",
+ "bpk": "application/octet-stream",
+ "btf": "image/prs.btif",
+ "btif": "image/prs.btif",
+ "buffer": "application/octet-stream",
+ "ccxml": "application/ccxml+xml",
+ "cdfx": "application/cdfx+xml",
+ "cdmia": "application/cdmi-capability",
+ "cdmic": "application/cdmi-container",
+ "cdmid": "application/cdmi-domain",
+ "cdmio": "application/cdmi-object",
+ "cdmiq": "application/cdmi-queue",
+ "cer": "application/pkix-cert",
+ "cgm": "image/cgm",
+ "cjs": "application/node",
+ "class": "application/java-vm",
+ "coffee": "text/coffeescript",
+ "conf": "text/plain",
+ "cpl": "application/cpl+xml",
+ "cpt": "application/mac-compactpro",
+ "crl": "application/pkix-crl",
+ "css": "text/css",
+ "csv": "text/csv",
+ "cu": "application/cu-seeme",
+ "cwl": "application/cwl",
+ "cww": "application/prs.cww",
+ "davmount": "application/davmount+xml",
+ "dbk": "application/docbook+xml",
+ "deb": "application/octet-stream",
+ "def": "text/plain",
+ "deploy": "application/octet-stream",
+ "dib": "image/bmp",
+ "disposition-notification": "message/disposition-notification",
+ "dist": "application/octet-stream",
+ "distz": "application/octet-stream",
+ "dll": "application/octet-stream",
+ "dmg": "application/octet-stream",
+ "dms": "application/octet-stream",
+ "doc": "application/msword",
+ "dot": "application/msword",
+ "dpx": "image/dpx",
+ "drle": "image/dicom-rle",
+ "dsc": "text/prs.lines.tag",
+ "dssc": "application/dssc+der",
+ "dtd": "application/xml-dtd",
+ "dump": "application/octet-stream",
+ "dwd": "application/atsc-dwd+xml",
+ "ear": "application/java-archive",
+ "ecma": "application/ecmascript",
+ "elc": "application/octet-stream",
+ "emf": "image/emf",
+ "eml": "message/rfc822",
+ "emma": "application/emma+xml",
+ "emotionml": "application/emotionml+xml",
+ "eps": "application/postscript",
+ "epub": "application/epub+zip",
+ "exe": "application/octet-stream",
+ "exi": "application/exi",
+ "exp": "application/express",
+ "exr": "image/aces",
+ "ez": "application/andrew-inset",
+ "fdf": "application/fdf",
+ "fdt": "application/fdt+xml",
+ "fits": "image/fits",
+ "g3": "image/g3fax",
+ "gbr": "application/rpki-ghostbusters",
+ "geojson": "application/geo+json",
+ "gif": "image/gif",
+ "glb": "model/gltf-binary",
+ "gltf": "model/gltf+json",
+ "gml": "application/gml+xml",
+ "gpx": "application/gpx+xml",
+ "gram": "application/srgs",
+ "grxml": "application/srgs+xml",
+ "gxf": "application/gxf",
+ "gz": "application/gzip",
+ "h261": "video/h261",
+ "h263": "video/h263",
+ "h264": "video/h264",
+ "heic": "image/heic",
+ "heics": "image/heic-sequence",
+ "heif": "image/heif",
+ "heifs": "image/heif-sequence",
+ "hej2": "image/hej2k",
+ "held": "application/atsc-held+xml",
+ "hjson": "application/hjson",
+ "hlp": "application/winhlp",
+ "hqx": "application/mac-binhex40",
+ "hsj2": "image/hsj2",
+ "htm": "text/html",
+ "html": "text/html",
+ "ics": "text/calendar",
+ "ief": "image/ief",
+ "ifb": "text/calendar",
+ "iges": "model/iges",
+ "igs": "model/iges",
+ "img": "application/octet-stream",
+ "in": "text/plain",
+ "ini": "text/plain",
+ "ink": "application/inkml+xml",
+ "inkml": "application/inkml+xml",
+ "ipfix": "application/ipfix",
+ "iso": "application/octet-stream",
+ "its": "application/its+xml",
+ "jade": "text/jade",
+ "jar": "application/java-archive",
+ "jhc": "image/jphc",
+ "jls": "image/jls",
+ "jp2": "image/jp2",
+ "jpe": "image/jpeg",
+ "jpeg": "image/jpeg",
+ "jpf": "image/jpx",
+ "jpg": "image/jpeg",
+ "jpg2": "image/jp2",
+ "jpgm": "image/jpm",
+ "jpgv": "video/jpeg",
+ "jph": "image/jph",
+ "jpm": "image/jpm",
+ "jpx": "image/jpx",
+ "js": "text/javascript",
+ "json": "application/json",
+ "json5": "application/json5",
+ "jsonld": "application/ld+json",
+ "jsonml": "application/jsonml+json",
+ "jsx": "text/jsx",
+ "jt": "model/jt",
+ "jxr": "image/jxr",
+ "jxra": "image/jxra",
+ "jxrs": "image/jxrs",
+ "jxs": "image/jxs",
+ "jxsc": "image/jxsc",
+ "jxsi": "image/jxsi",
+ "jxss": "image/jxss",
+ "kar": "audio/midi",
+ "ktx": "image/ktx",
+ "ktx2": "image/ktx2",
+ "less": "text/less",
+ "lgr": "application/lgr+xml",
+ "list": "text/plain",
+ "litcoffee": "text/coffeescript",
+ "log": "text/plain",
+ "lostxml": "application/lost+xml",
+ "lrf": "application/octet-stream",
+ "m1v": "video/mpeg",
+ "m21": "application/mp21",
+ "m2a": "audio/mpeg",
+ "m2v": "video/mpeg",
+ "m3a": "audio/mpeg",
+ "m4a": "audio/mp4",
+ "m4p": "application/mp4",
+ "m4s": "video/iso.segment",
+ "ma": "application/mathematica",
+ "mads": "application/mads+xml",
+ "maei": "application/mmt-aei+xml",
+ "man": "text/troff",
+ "manifest": "text/cache-manifest",
+ "map": "application/json",
+ "mar": "application/octet-stream",
+ "markdown": "text/markdown",
+ "mathml": "application/mathml+xml",
+ "mb": "application/mathematica",
+ "mbox": "application/mbox",
+ "md": "text/markdown",
+ "mdx": "text/mdx",
+ "me": "text/troff",
+ "mesh": "model/mesh",
+ "meta4": "application/metalink4+xml",
+ "metalink": "application/metalink+xml",
+ "mets": "application/mets+xml",
+ "mft": "application/rpki-manifest",
+ "mid": "audio/midi",
+ "midi": "audio/midi",
+ "mime": "message/rfc822",
+ "mj2": "video/mj2",
+ "mjp2": "video/mj2",
+ "mjs": "text/javascript",
+ "mml": "text/mathml",
+ "mods": "application/mods+xml",
+ "mov": "video/quicktime",
+ "mp2": "audio/mpeg",
+ "mp21": "application/mp21",
+ "mp2a": "audio/mpeg",
+ "mp3": "audio/mpeg",
+ "mp4": "video/mp4",
+ "mp4a": "audio/mp4",
+ "mp4s": "application/mp4",
+ "mp4v": "video/mp4",
+ "mpd": "application/dash+xml",
+ "mpe": "video/mpeg",
+ "mpeg": "video/mpeg",
+ "mpf": "application/media-policy-dataset+xml",
+ "mpg": "video/mpeg",
+ "mpg4": "video/mp4",
+ "mpga": "audio/mpeg",
+ "mpp": "application/dash-patch+xml",
+ "mrc": "application/marc",
+ "mrcx": "application/marcxml+xml",
+ "ms": "text/troff",
+ "mscml": "application/mediaservercontrol+xml",
+ "msh": "model/mesh",
+ "msi": "application/octet-stream",
+ "msix": "application/msix",
+ "msixbundle": "application/msixbundle",
+ "msm": "application/octet-stream",
+ "msp": "application/octet-stream",
+ "mtl": "model/mtl",
+ "musd": "application/mmt-usd+xml",
+ "mxf": "application/mxf",
+ "mxmf": "audio/mobile-xmf",
+ "mxml": "application/xv+xml",
+ "n3": "text/n3",
+ "nb": "application/mathematica",
+ "nq": "application/n-quads",
+ "nt": "application/n-triples",
+ "obj": "model/obj",
+ "oda": "application/oda",
+ "oga": "audio/ogg",
+ "ogg": "audio/ogg",
+ "ogv": "video/ogg",
+ "ogx": "application/ogg",
+ "omdoc": "application/omdoc+xml",
+ "onepkg": "application/onenote",
+ "onetmp": "application/onenote",
+ "onetoc": "application/onenote",
+ "onetoc2": "application/onenote",
+ "opf": "application/oebps-package+xml",
+ "opus": "audio/ogg",
+ "otf": "font/otf",
+ "owl": "application/rdf+xml",
+ "oxps": "application/oxps",
+ "p10": "application/pkcs10",
+ "p7c": "application/pkcs7-mime",
+ "p7m": "application/pkcs7-mime",
+ "p7s": "application/pkcs7-signature",
+ "p8": "application/pkcs8",
+ "pdf": "application/pdf",
+ "pfr": "application/font-tdpfr",
+ "pgp": "application/pgp-encrypted",
+ "pkg": "application/octet-stream",
+ "pki": "application/pkixcmp",
+ "pkipath": "application/pkix-pkipath",
+ "pls": "application/pls+xml",
+ "png": "image/png",
+ "prc": "model/prc",
+ "prf": "application/pics-rules",
+ "provx": "application/provenance+xml",
+ "ps": "application/postscript",
+ "pskcxml": "application/pskc+xml",
+ "pti": "image/prs.pti",
+ "qt": "video/quicktime",
+ "raml": "application/raml+yaml",
+ "rapd": "application/route-apd+xml",
+ "rdf": "application/rdf+xml",
+ "relo": "application/p2p-overlay+xml",
+ "rif": "application/reginfo+xml",
+ "rl": "application/resource-lists+xml",
+ "rld": "application/resource-lists-diff+xml",
+ "rmi": "audio/midi",
+ "rnc": "application/relax-ng-compact-syntax",
+ "rng": "application/xml",
+ "roa": "application/rpki-roa",
+ "roff": "text/troff",
+ "rq": "application/sparql-query",
+ "rs": "application/rls-services+xml",
+ "rsat": "application/atsc-rsat+xml",
+ "rsd": "application/rsd+xml",
+ "rsheet": "application/urc-ressheet+xml",
+ "rss": "application/rss+xml",
+ "rtf": "text/rtf",
+ "rtx": "text/richtext",
+ "rusd": "application/route-usd+xml",
+ "s3m": "audio/s3m",
+ "sbml": "application/sbml+xml",
+ "scq": "application/scvp-cv-request",
+ "scs": "application/scvp-cv-response",
+ "sdp": "application/sdp",
+ "senmlx": "application/senml+xml",
+ "sensmlx": "application/sensml+xml",
+ "ser": "application/java-serialized-object",
+ "setpay": "application/set-payment-initiation",
+ "setreg": "application/set-registration-initiation",
+ "sgi": "image/sgi",
+ "sgm": "text/sgml",
+ "sgml": "text/sgml",
+ "shex": "text/shex",
+ "shf": "application/shf+xml",
+ "shtml": "text/html",
+ "sieve": "application/sieve",
+ "sig": "application/pgp-signature",
+ "sil": "audio/silk",
+ "silo": "model/mesh",
+ "siv": "application/sieve",
+ "slim": "text/slim",
+ "slm": "text/slim",
+ "sls": "application/route-s-tsid+xml",
+ "smi": "application/smil+xml",
+ "smil": "application/smil+xml",
+ "snd": "audio/basic",
+ "so": "application/octet-stream",
+ "spdx": "text/spdx",
+ "spp": "application/scvp-vp-response",
+ "spq": "application/scvp-vp-request",
+ "spx": "audio/ogg",
+ "sql": "application/sql",
+ "sru": "application/sru+xml",
+ "srx": "application/sparql-results+xml",
+ "ssdl": "application/ssdl+xml",
+ "ssml": "application/ssml+xml",
+ "stk": "application/hyperstudio",
+ "stl": "model/stl",
+ "stpx": "model/step+xml",
+ "stpxz": "model/step-xml+zip",
+ "stpz": "model/step+zip",
+ "styl": "text/stylus",
+ "stylus": "text/stylus",
+ "svg": "image/svg+xml",
+ "svgz": "image/svg+xml",
+ "swidtag": "application/swid+xml",
+ "t": "text/troff",
+ "t38": "image/t38",
+ "td": "application/urc-targetdesc+xml",
+ "tei": "application/tei+xml",
+ "teicorpus": "application/tei+xml",
+ "text": "text/plain",
+ "tfi": "application/thraud+xml",
+ "tfx": "image/tiff-fx",
+ "tif": "image/tiff",
+ "tiff": "image/tiff",
+ "toml": "application/toml",
+ "tr": "text/troff",
+ "trig": "application/trig",
+ "ts": "video/mp2t",
+ "tsd": "application/timestamped-data",
+ "tsv": "text/tab-separated-values",
+ "ttc": "font/collection",
+ "ttf": "font/ttf",
+ "ttl": "text/turtle",
+ "ttml": "application/ttml+xml",
+ "txt": "text/plain",
+ "u3d": "model/u3d",
+ "u8dsn": "message/global-delivery-status",
+ "u8hdr": "message/global-headers",
+ "u8mdn": "message/global-disposition-notification",
+ "u8msg": "message/global",
+ "ubj": "application/ubjson",
+ "uri": "text/uri-list",
+ "uris": "text/uri-list",
+ "urls": "text/uri-list",
+ "vcard": "text/vcard",
+ "vrml": "model/vrml",
+ "vtt": "text/vtt",
+ "vxml": "application/voicexml+xml",
+ "war": "application/java-archive",
+ "wasm": "application/wasm",
+ "wav": "audio/wav",
+ "weba": "audio/webm",
+ "webm": "video/webm",
+ "webmanifest": "application/manifest+json",
+ "webp": "image/webp",
+ "wgsl": "text/wgsl",
+ "wgt": "application/widget",
+ "wif": "application/watcherinfo+xml",
+ "wmf": "image/wmf",
+ "woff": "font/woff",
+ "woff2": "font/woff2",
+ "wrl": "model/vrml",
+ "wsdl": "application/wsdl+xml",
+ "wspolicy": "application/wspolicy+xml",
+ "x3d": "model/x3d+xml",
+ "x3db": "model/x3d+fastinfoset",
+ "x3dbz": "model/x3d+binary",
+ "x3dv": "model/x3d-vrml",
+ "x3dvz": "model/x3d+vrml",
+ "x3dz": "model/x3d+xml",
+ "xaml": "application/xaml+xml",
+ "xav": "application/xcap-att+xml",
+ "xca": "application/xcap-caps+xml",
+ "xcs": "application/calendar+xml",
+ "xdf": "application/xcap-diff+xml",
+ "xdssc": "application/dssc+xml",
+ "xel": "application/xcap-el+xml",
+ "xenc": "application/xenc+xml",
+ "xer": "application/patch-ops-error+xml",
+ "xfdf": "application/xfdf",
+ "xht": "application/xhtml+xml",
+ "xhtml": "application/xhtml+xml",
+ "xhvml": "application/xv+xml",
+ "xlf": "application/xliff+xml",
+ "xm": "audio/xm",
+ "xml": "text/xml",
+ "xns": "application/xcap-ns+xml",
+ "xop": "application/xop+xml",
+ "xpl": "application/xproc+xml",
+ "xsd": "application/xml",
+ "xsf": "application/prs.xsf+xml",
+ "xsl": "application/xml",
+ "xslt": "application/xml",
+ "xspf": "application/xspf+xml",
+ "xvm": "application/xv+xml",
+ "xvml": "application/xv+xml",
+ "yaml": "text/yaml",
+ "yang": "application/yang",
+ "yin": "application/yin+xml",
+ "yml": "text/yaml",
+ "zip": "application/zip"
+};
+
+function lookup(extn) {
+ let tmp = ('' + extn).trim().toLowerCase();
+ let idx = tmp.lastIndexOf('.');
+ return mimes[!~idx ? tmp : tmp.substring(++idx)];
+}
+
+const noop = () => {};
+
+function isMatch(uri, arr) {
+ for (let i=0; i < arr.length; i++) {
+ if (arr[i].test(uri)) return true;
+ }
+}
+
+function toAssume(uri, extns) {
+ let i=0, x, len=uri.length - 1;
+ if (uri.charCodeAt(len) === 47) {
+ uri = uri.substring(0, len);
+ }
+
+ let arr=[], tmp=`${uri}/index`;
+ for (; i < extns.length; i++) {
+ x = extns[i] ? `.${extns[i]}` : '';
+ if (uri) arr.push(uri + x);
+ arr.push(tmp + x);
+ }
+
+ return arr;
+}
+
+function viaCache(cache, uri, extns) {
+ let i=0, data, arr=toAssume(uri, extns);
+ for (; i < arr.length; i++) {
+ if (data = cache[arr[i]]) return data;
+ }
+}
+
+function viaLocal(dir, isEtag, uri, extns) {
+ let i=0, arr=toAssume(uri, extns);
+ let abs, stats, name, headers;
+ for (; i < arr.length; i++) {
+ abs = normalize(
+ join(dir, name=arr[i])
+ );
+
+ if (abs.startsWith(dir) && fs.existsSync(abs)) {
+ stats = fs.statSync(abs);
+ if (stats.isDirectory()) continue;
+ headers = toHeaders(name, stats, isEtag);
+ headers['Cache-Control'] = isEtag ? 'no-cache' : 'no-store';
+ return { abs, stats, headers };
+ }
+ }
+}
+
+function is404(req, res) {
+ return (res.statusCode=404,res.end());
+}
+
+function send(req, res, file, stats, headers) {
+ let code=200, tmp, opts={};
+ headers = { ...headers };
+
+ for (let key in headers) {
+ tmp = res.getHeader(key);
+ if (tmp) headers[key] = tmp;
+ }
+
+ if (tmp = res.getHeader('content-type')) {
+ headers['Content-Type'] = tmp;
+ }
+
+ if (req.headers.range) {
+ code = 206;
+ let [x, y] = req.headers.range.replace('bytes=', '').split('-');
+ let end = opts.end = parseInt(y, 10) || stats.size - 1;
+ let start = opts.start = parseInt(x, 10) || 0;
+
+ if (end >= stats.size) {
+ end = stats.size - 1;
+ }
+
+ if (start >= stats.size) {
+ res.setHeader('Content-Range', `bytes */${stats.size}`);
+ res.statusCode = 416;
+ return res.end();
+ }
+
+ headers['Content-Range'] = `bytes ${start}-${end}/${stats.size}`;
+ headers['Content-Length'] = (end - start + 1);
+ headers['Accept-Ranges'] = 'bytes';
+ }
+
+ res.writeHead(code, headers);
+ fs.createReadStream(file, opts).pipe(res);
+}
+
+const ENCODING = {
+ '.br': 'br',
+ '.gz': 'gzip',
+};
+
+function toHeaders(name, stats, isEtag) {
+ let enc = ENCODING[name.slice(-3)];
+
+ let ctype = lookup(name.slice(0, enc && -3)) || '';
+ if (ctype === 'text/html') ctype += ';charset=utf-8';
+
+ let headers = {
+ 'Content-Length': stats.size,
+ 'Content-Type': ctype,
+ 'Last-Modified': stats.mtime.toUTCString(),
+ };
+
+ if (enc) headers['Content-Encoding'] = enc;
+ if (isEtag) headers['ETag'] = `W/"${stats.size}-${stats.mtime.getTime()}"`;
+
+ return headers;
+}
+
+function sirv (dir, opts={}) {
+ dir = resolve(dir || '.');
+
+ let isNotFound = opts.onNoMatch || is404;
+ let setHeaders = opts.setHeaders || noop;
+
+ let extensions = opts.extensions || ['html', 'htm'];
+ let gzips = opts.gzip && extensions.map(x => `${x}.gz`).concat('gz');
+ let brots = opts.brotli && extensions.map(x => `${x}.br`).concat('br');
+
+ const FILES = {};
+
+ let fallback = '/';
+ let isEtag = !!opts.etag;
+ let isSPA = !!opts.single;
+ if (typeof opts.single === 'string') {
+ let idx = opts.single.lastIndexOf('.');
+ fallback += !!~idx ? opts.single.substring(0, idx) : opts.single;
+ }
+
+ let ignores = [];
+ if (opts.ignores !== false) {
+ ignores.push(/[/]([A-Za-z\s\d~$._-]+\.\w+){1,}$/); // any extn
+ if (opts.dotfiles) ignores.push(/\/\.\w/);
+ else ignores.push(/\/\.well-known/);
+ [].concat(opts.ignores || []).forEach(x => {
+ ignores.push(new RegExp(x, 'i'));
+ });
+ }
+
+ let cc = opts.maxAge != null && `public,max-age=${opts.maxAge}`;
+ if (cc && opts.immutable) cc += ',immutable';
+ else if (cc && opts.maxAge === 0) cc += ',must-revalidate';
+
+ if (!opts.dev) {
+ totalist(dir, (name, abs, stats) => {
+ if (/\.well-known[\\+\/]/.test(name)) ; // keep
+ else if (!opts.dotfiles && /(^\.|[\\+|\/+]\.)/.test(name)) return;
+
+ let headers = toHeaders(name, stats, isEtag);
+ if (cc) headers['Cache-Control'] = cc;
+
+ FILES['/' + name.normalize().replace(/\\+/g, '/')] = { abs, stats, headers };
+ });
+ }
+
+ let lookup = opts.dev ? viaLocal.bind(0, dir + sep, isEtag) : viaCache.bind(0, FILES);
+
+ return function (req, res, next) {
+ let extns = [''];
+ let pathname = parse(req).pathname;
+ let val = req.headers['accept-encoding'] || '';
+ if (gzips && val.includes('gzip')) extns.unshift(...gzips);
+ if (brots && /(br|brotli)/i.test(val)) extns.unshift(...brots);
+ extns.push(...extensions); // [...br, ...gz, orig, ...exts]
+
+ if (pathname.indexOf('%') !== -1) {
+ try { pathname = decodeURI(pathname); }
+ catch (err) { /* malform uri */ }
+ }
+
+ let data = lookup(pathname, extns) || isSPA && !isMatch(pathname, ignores) && lookup(fallback, extns);
+ if (!data) return next ? next() : isNotFound(req, res);
+
+ if (isEtag && req.headers['if-none-match'] === data.headers['ETag']) {
+ res.writeHead(304);
+ return res.end();
+ }
+
+ if (gzips || brots) {
+ res.setHeader('Vary', 'Accept-Encoding');
+ }
+
+ setHeaders(res, pathname, data.stats);
+ send(req, res, data.abs, data.stats, data.headers);
+ };
+}
+
+var defaultParseOptions = {
+ decodeValues: true,
+ map: false,
+ silent: false,
+ split: "auto", // auto = split strings but not arrays
+};
+
+function isForbiddenKey(key) {
+ return typeof key !== "string" || key in {};
+}
+
+function createNullObj() {
+ return Object.create(null);
+}
+
+function isNonEmptyString(str) {
+ return typeof str === "string" && !!str.trim();
+}
+
+function parseString(setCookieValue, options) {
+ var parts = setCookieValue.split(";").filter(isNonEmptyString);
+
+ var nameValuePairStr = parts.shift();
+ var parsed = parseNameValuePair(nameValuePairStr);
+ var name = parsed.name;
+ var value = parsed.value;
+
+ options = options
+ ? Object.assign({}, defaultParseOptions, options)
+ : defaultParseOptions;
+
+ if (isForbiddenKey(name)) {
+ return null;
+ }
+
+ try {
+ value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value
+ } catch (e) {
+ console.error(
+ "set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.",
+ e
+ );
+ }
+
+ var cookie = createNullObj();
+ cookie.name = name;
+ cookie.value = value;
+
+ parts.forEach(function (part) {
+ var sides = part.split("=");
+ var key = sides.shift().trimLeft().toLowerCase();
+ if (isForbiddenKey(key)) {
+ return;
+ }
+ var value = sides.join("=");
+ if (key === "expires") {
+ cookie.expires = new Date(value);
+ } else if (key === "max-age") {
+ var n = parseInt(value, 10);
+ if (!Number.isNaN(n)) cookie.maxAge = n;
+ } else if (key === "secure") {
+ cookie.secure = true;
+ } else if (key === "httponly") {
+ cookie.httpOnly = true;
+ } else if (key === "samesite") {
+ cookie.sameSite = value;
+ } else if (key === "partitioned") {
+ cookie.partitioned = true;
+ } else if (key) {
+ cookie[key] = value;
+ }
+ });
+
+ return cookie;
+}
+
+function parseNameValuePair(nameValuePairStr) {
+ // Parses name-value-pair according to rfc6265bis draft
+
+ var name = "";
+ var value = "";
+ var nameValueArr = nameValuePairStr.split("=");
+ if (nameValueArr.length > 1) {
+ name = nameValueArr.shift();
+ value = nameValueArr.join("="); // everything after the first =, joined by a "=" if there was more than one part
+ } else {
+ value = nameValuePairStr;
+ }
+
+ return { name: name, value: value };
+}
+
+function parseSetCookie(input, options) {
+ options = options
+ ? Object.assign({}, defaultParseOptions, options)
+ : defaultParseOptions;
+
+ if (!input) {
+ if (!options.map) {
+ return [];
+ } else {
+ return createNullObj();
+ }
+ }
+
+ if (input.headers) {
+ if (typeof input.headers.getSetCookie === "function") {
+ // for fetch responses - they combine headers of the same type in the headers array,
+ // but getSetCookie returns an uncombined array
+ input = input.headers.getSetCookie();
+ } else if (input.headers["set-cookie"]) {
+ // fast-path for node.js (which automatically normalizes header names to lower-case)
+ input = input.headers["set-cookie"];
+ } else {
+ // slow-path for other environments - see #25
+ var sch =
+ input.headers[
+ Object.keys(input.headers).find(function (key) {
+ return key.toLowerCase() === "set-cookie";
+ })
+ ];
+ // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36
+ if (!sch && input.headers.cookie && !options.silent) {
+ console.warn(
+ "Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."
+ );
+ }
+ input = sch;
+ }
+ }
+
+ var split = options.split;
+ var isArray = Array.isArray(input);
+
+ if (split === "auto") {
+ split = !isArray;
+ }
+
+ if (!isArray) {
+ input = [input];
+ }
+
+ input = input.filter(isNonEmptyString);
+
+ if (split) {
+ input = input.map(splitCookiesString).flat();
+ }
+
+ if (!options.map) {
+ return input
+ .map(function (str) {
+ return parseString(str, options);
+ })
+ .filter(Boolean);
+ } else {
+ var cookies = createNullObj();
+ return input.reduce(function (cookies, str) {
+ var cookie = parseString(str, options);
+ if (cookie && !isForbiddenKey(cookie.name)) {
+ cookies[cookie.name] = cookie;
+ }
+ return cookies;
+ }, cookies);
+ }
+}
+
+/*
+ Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas
+ that are within a single set-cookie field-value, such as in the Expires portion.
+
+ This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2
+ Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128
+ React Native's fetch does this for *every* header, including set-cookie.
+
+ Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25
+ Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation
+*/
+function splitCookiesString(cookiesString) {
+ if (Array.isArray(cookiesString)) {
+ return cookiesString;
+ }
+ if (typeof cookiesString !== "string") {
+ return [];
+ }
+
+ var cookiesStrings = [];
+ var pos = 0;
+ var start;
+ var ch;
+ var lastComma;
+ var nextStart;
+ var cookiesSeparatorFound;
+
+ function skipWhitespace() {
+ while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))) {
+ pos += 1;
+ }
+ return pos < cookiesString.length;
+ }
+
+ function notSpecialChar() {
+ ch = cookiesString.charAt(pos);
+
+ return ch !== "=" && ch !== ";" && ch !== ",";
+ }
+
+ while (pos < cookiesString.length) {
+ start = pos;
+ cookiesSeparatorFound = false;
+
+ while (skipWhitespace()) {
+ ch = cookiesString.charAt(pos);
+ if (ch === ",") {
+ // ',' is a cookie separator if we have later first '=', not ';' or ','
+ lastComma = pos;
+ pos += 1;
+
+ skipWhitespace();
+ nextStart = pos;
+
+ while (pos < cookiesString.length && notSpecialChar()) {
+ pos += 1;
+ }
+
+ // currently special character
+ if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") {
+ // we found cookies separator
+ cookiesSeparatorFound = true;
+ // pos is inside the next cookie, so back up and return it.
+ pos = nextStart;
+ cookiesStrings.push(cookiesString.substring(start, lastComma));
+ start = pos;
+ } else {
+ // in param ',' or param separator ';',
+ // we continue from that comma
+ pos = lastComma + 1;
+ }
+ } else {
+ pos += 1;
+ }
+ }
+
+ if (!cookiesSeparatorFound || pos >= cookiesString.length) {
+ cookiesStrings.push(cookiesString.substring(start, cookiesString.length));
+ }
+ }
+
+ return cookiesStrings;
+}
+
+// named export for CJS
+parseSetCookie.parseSetCookie = parseSetCookie;
+// for backwards compatibility
+parseSetCookie.parse = parseSetCookie;
+parseSetCookie.parseString = parseString;
+parseSetCookie.splitCookiesString = splitCookiesString;
+
+/** @import { StandardSchemaV1 } from '@standard-schema/spec' */
+
+
+/**
+ * An error that was thrown from within the SvelteKit runtime that is not fatal and doesn't result in a 500, such as a 404.
+ * `SvelteKitError` goes through `handleError`.
+ * @extends Error
+ */
+class SvelteKitError extends Error {
+ /**
+ * @param {number} status
+ * @param {string} text
+ * @param {string} message
+ */
+ constructor(status, text, message) {
+ super(message);
+ this.status = status;
+ this.text = text;
+ }
+}
+
+/**
+ * @param {import('http').IncomingMessage} req
+ * @param {number} [body_size_limit]
+ */
+function get_raw_body(req, body_size_limit) {
+ const h = req.headers;
+
+ if (!h['content-type']) {
+ return null;
+ }
+
+ const content_length = Number(h['content-length']);
+
+ // check if no request body
+ if (
+ (req.httpVersionMajor === 1 && isNaN(content_length) && h['transfer-encoding'] == null) ||
+ content_length === 0
+ ) {
+ return null;
+ }
+
+ if (req.destroyed) {
+ const readable = new ReadableStream();
+ void readable.cancel();
+ return readable;
+ }
+
+ let size = 0;
+ let cancelled = false;
+
+ return new ReadableStream({
+ start(controller) {
+ if (body_size_limit !== undefined && content_length > body_size_limit) {
+ let message = `Content-length of ${content_length} exceeds limit of ${body_size_limit} bytes.`;
+
+ if (body_size_limit === 0) {
+ // https://github.com/sveltejs/kit/pull/11589
+ // TODO this exists to aid migration — remove in a future version
+ message += ' To disable body size limits, specify Infinity rather than 0.';
+ }
+
+ const error = new SvelteKitError(413, 'Payload Too Large', message);
+
+ controller.error(error);
+ return;
+ }
+
+ req.on('error', (error) => {
+ cancelled = true;
+ controller.error(error);
+ });
+
+ req.on('end', () => {
+ if (cancelled) return;
+ controller.close();
+ });
+
+ req.on('data', (chunk) => {
+ if (cancelled) return;
+
+ size += chunk.length;
+ if (size > content_length) {
+ cancelled = true;
+
+ const constraint = content_length ? 'content-length' : 'BODY_SIZE_LIMIT';
+ const message = `request body size exceeded ${constraint} of ${content_length}`;
+
+ const error = new SvelteKitError(413, 'Payload Too Large', message);
+ controller.error(error);
+
+ return;
+ }
+
+ controller.enqueue(chunk);
+
+ if (controller.desiredSize === null || controller.desiredSize <= 0) {
+ req.pause();
+ }
+ });
+ },
+
+ pull() {
+ req.resume();
+ },
+
+ cancel(reason) {
+ cancelled = true;
+ req.destroy(reason);
+ }
+ });
+}
+
+/**
+ * @param {{
+ * request: import('http').IncomingMessage;
+ * base: string;
+ * bodySizeLimit?: number;
+ * }} options
+ * @returns {Promise}
+ */
+// TODO 3.0 make the signature synchronous?
+// eslint-disable-next-line @typescript-eslint/require-await
+async function getRequest({ request, base, bodySizeLimit }) {
+ let headers = /** @type {Record} */ (request.headers);
+ if (request.httpVersionMajor >= 2) {
+ // the Request constructor rejects headers with ':' in the name
+ headers = Object.assign({}, headers);
+ // https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.3.5
+ if (headers[':authority']) {
+ headers.host = headers[':authority'];
+ }
+ delete headers[':authority'];
+ delete headers[':method'];
+ delete headers[':path'];
+ delete headers[':scheme'];
+ }
+
+ // TODO: Whenever Node >=22 is minimum supported version, we can use `request.readableAborted`
+ // @see https://github.com/nodejs/node/blob/5cf3c3e24c7257a0c6192ed8ef71efec8ddac22b/lib/internal/streams/readable.js#L1443-L1453
+ const controller = new AbortController();
+ let errored = false;
+ let end_emitted = false;
+ request.once('error', () => (errored = true));
+ request.once('end', () => (end_emitted = true));
+ request.once('close', () => {
+ if ((errored || request.destroyed) && !end_emitted) {
+ controller.abort();
+ }
+ });
+
+ return new Request(base + request.url, {
+ // @ts-expect-error
+ duplex: 'half',
+ method: request.method,
+ headers: Object.entries(headers),
+ signal: controller.signal,
+ body:
+ request.method === 'GET' || request.method === 'HEAD'
+ ? undefined
+ : get_raw_body(request, bodySizeLimit)
+ });
+}
+
+/**
+ * @param {import('http').ServerResponse} res
+ * @param {Response} response
+ * @returns {Promise}
+ */
+// TODO 3.0 make the signature synchronous?
+// eslint-disable-next-line @typescript-eslint/require-await
+async function setResponse(res, response) {
+ for (const [key, value] of response.headers) {
+ try {
+ res.setHeader(
+ key,
+ key === 'set-cookie'
+ ? splitCookiesString(
+ // This is absurd but necessary, TODO: investigate why
+ /** @type {string}*/ (response.headers.get(key))
+ )
+ : value
+ );
+ } catch (error) {
+ res.getHeaderNames().forEach((name) => res.removeHeader(name));
+ res.writeHead(500).end(String(error));
+ return;
+ }
+ }
+
+ res.writeHead(response.status);
+
+ if (!response.body) {
+ res.end();
+ return;
+ }
+
+ if (response.body.locked) {
+ res.end(
+ 'Fatal error: Response body is locked. ' +
+ "This can happen when the response was already read (for example through 'response.json()' or 'response.text()')."
+ );
+ return;
+ }
+
+ const reader = response.body.getReader();
+
+ if (res.destroyed) {
+ void reader.cancel();
+ return;
+ }
+
+ const cancel = (/** @type {Error|undefined} */ error) => {
+ res.off('close', cancel);
+ res.off('error', cancel);
+
+ // If the reader has already been interrupted with an error earlier,
+ // then it will appear here, it is useless, but it needs to be catch.
+ reader.cancel(error).catch(() => {});
+ if (error) res.destroy(error);
+ };
+
+ res.on('close', cancel);
+ res.on('error', cancel);
+
+ void next();
+ async function next() {
+ try {
+ for (;;) {
+ const { done, value } = await reader.read();
+
+ if (done) break;
+
+ if (!res.write(value)) {
+ res.once('drain', next);
+ return;
+ }
+ }
+ res.end();
+ } catch (error) {
+ cancel(error instanceof Error ? error : new Error(String(error)));
+ }
+ }
+}
+
+/**
+ * Converts a file on disk to a readable stream
+ * @param {string} file
+ * @returns {ReadableStream}
+ * @since 2.4.0
+ */
+function createReadableStream(file) {
+ return /** @type {ReadableStream} */ (Readable.toWeb(createReadStream(file)));
+}
+
+/**
+ * Parses the given value into number of bytes.
+ *
+ * @param {string} value - Size in bytes. Can also be specified with a unit suffix kilobytes (K), megabytes (M), or gigabytes (G).
+ * @returns {number}
+ */
+function parse_as_bytes(value) {
+ const multiplier =
+ {
+ K: 1024,
+ M: 1024 * 1024,
+ G: 1024 * 1024 * 1024
+ }[value[value.length - 1]?.toUpperCase()] ?? 1;
+ return Number(multiplier != 1 ? value.substring(0, value.length - 1) : value) * multiplier;
+}
+
+/**
+ * Parses and validates an origin URL.
+ *
+ * @param {string | undefined} value - Origin URL with http:// or https:// protocol
+ * @returns {string | undefined} The validated origin, or undefined if value is undefined
+ * @throws {Error} If value is provided but invalid
+ */
+function parse_origin(value) {
+ if (value === undefined) {
+ return undefined;
+ }
+
+ const trimmed = value.trim();
+
+ let url;
+ try {
+ url = new URL(trimmed);
+ } catch (error) {
+ throw new Error(
+ `Invalid ORIGIN: '${trimmed}'. ` +
+ `ORIGIN must be a valid URL with http:// or https:// protocol. ` +
+ `For example: 'http://localhost:3000' or 'https://my.site'`,
+ { cause: error }
+ );
+ }
+
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') {
+ throw new Error(
+ `Invalid ORIGIN: '${trimmed}'. ` +
+ `Only http:// and https:// protocols are supported. ` +
+ `Received protocol: ${url.protocol}`
+ );
+ }
+
+ return url.origin;
+}
+
+/* global "" */
+/* global true */
+
+const server = new Server(manifest);
+
+// parse_origin validates ORIGIN and throws descriptive errors for invalid values
+const origin = parse_origin(env('ORIGIN', undefined));
+
+const xff_depth = parseInt(env('XFF_DEPTH', '1'));
+const address_header = env('ADDRESS_HEADER', '').toLowerCase();
+const protocol_header = env('PROTOCOL_HEADER', '').toLowerCase();
+const host_header = env('HOST_HEADER', '').toLowerCase();
+const port_header = env('PORT_HEADER', '').toLowerCase();
+
+const body_size_limit = parse_as_bytes(env('BODY_SIZE_LIMIT', '512K'));
+
+if (isNaN(body_size_limit)) {
+ throw new Error(
+ `Invalid BODY_SIZE_LIMIT: '${env('BODY_SIZE_LIMIT')}'. Please provide a numeric value.`
+ );
+}
+
+const dir = path.dirname(fileURLToPath(import.meta.url));
+
+const asset_dir = `${dir}/client${base}`;
+
+await server.init({
+ env: /** @type {Record} */ (process.env),
+ read: (file) => createReadableStream(`${asset_dir}/${file}`)
+});
+
+/**
+ * @param {string} path
+ * @param {boolean} client
+ */
+function serve(path, client = false) {
+ return fs__default.existsSync(path)
+ ? sirv(path, {
+ etag: true,
+ gzip: true,
+ brotli: true,
+ setHeaders: client
+ ? (res, pathname) => {
+ // only apply to build directory, not e.g. version.json
+ if (
+ pathname.startsWith(`/${manifest.appPath}/immutable/`) &&
+ res.statusCode === 200
+ ) {
+ res.setHeader('cache-control', 'public,max-age=31536000,immutable');
+ }
+ }
+ : undefined
+ })
+ : undefined;
+}
+
+// required because the static file server ignores trailing slashes
+/** @returns {import('polka').Middleware} */
+function serve_prerendered() {
+ const handler = serve(path.join(dir, 'prerendered'));
+
+ return (req, res, next) => {
+ let { pathname, search, query } = parse(req);
+
+ try {
+ pathname = decodeURIComponent(pathname);
+ } catch {
+ // ignore invalid URI
+ }
+
+ if (prerendered.has(pathname)) {
+ return handler?.(req, res, next);
+ }
+
+ // remove or add trailing slash as appropriate
+ let location = pathname.at(-1) === '/' ? pathname.slice(0, -1) : pathname + '/';
+ if (prerendered.has(location)) {
+ if (query) location += search;
+ res.writeHead(308, { location }).end();
+ } else {
+ void next();
+ }
+ };
+}
+
+/** @type {import('polka').Middleware} */
+const ssr = async (req, res) => {
+ /** @type {Request} */
+ let request;
+
+ try {
+ request = await getRequest({
+ base: origin || get_origin(req.headers),
+ request: req,
+ bodySizeLimit: body_size_limit
+ });
+ } catch {
+ res.statusCode = 400;
+ res.end('Bad Request');
+ return;
+ }
+
+ await setResponse(
+ res,
+ await server.respond(request, {
+ platform: { req },
+ getClientAddress: () => {
+ if (address_header) {
+ if (!(address_header in req.headers)) {
+ throw new Error(
+ `Address header was specified with ${
+ "" + 'ADDRESS_HEADER'
+ }=${address_header} but is absent from request`
+ );
+ }
+
+ const value = /** @type {string} */ (req.headers[address_header]) || '';
+
+ if (address_header === 'x-forwarded-for') {
+ const addresses = value.split(',');
+
+ if (xff_depth < 1) {
+ throw new Error(`${"" + 'XFF_DEPTH'} must be a positive integer`);
+ }
+
+ if (xff_depth > addresses.length) {
+ throw new Error(
+ `${"" + 'XFF_DEPTH'} is ${xff_depth}, but only found ${
+ addresses.length
+ } addresses`
+ );
+ }
+ return addresses[addresses.length - xff_depth].trim();
+ }
+
+ return value;
+ }
+
+ return (
+ req.connection?.remoteAddress ||
+ // @ts-expect-error
+ req.connection?.socket?.remoteAddress ||
+ req.socket?.remoteAddress ||
+ // @ts-expect-error
+ req.info?.remoteAddress
+ );
+ }
+ })
+ );
+};
+
+/** @param {import('polka').Middleware[]} handlers */
+function sequence(handlers) {
+ /** @type {import('polka').Middleware} */
+ return (req, res, next) => {
+ /**
+ * @param {number} i
+ * @returns {ReturnType}
+ */
+ function handle(i) {
+ if (i < handlers.length) {
+ return handlers[i](req, res, () => handle(i + 1));
+ } else {
+ return next();
+ }
+ }
+
+ return handle(0);
+ };
+}
+
+/**
+ * @param {string} name
+ * @param {string | string[] | undefined} value
+ * @returns {string | undefined}
+ */
+function normalise_header(name, value) {
+ if (!name) return undefined;
+ if (Array.isArray(value)) {
+ if (value.length === 0) return undefined;
+ if (value.length === 1) return value[0];
+ throw new Error(
+ `Multiple values provided for ${name} header where only one expected: ${value}`
+ );
+ }
+ return value;
+}
+
+/**
+ * @param {import('http').IncomingHttpHeaders} headers
+ * @returns {string}
+ */
+function get_origin(headers) {
+ const protocol = decodeURIComponent(
+ normalise_header(protocol_header, headers[protocol_header]) || 'https'
+ );
+
+ // this helps us avoid host injections through the protocol header
+ if (protocol.includes(':')) {
+ throw new Error(
+ `The ${protocol_header} header specified ${protocol} which is an invalid because it includes \`:\`. It should only contain the protocol scheme (e.g. \`https\`)`
+ );
+ }
+
+ const host =
+ normalise_header(host_header, headers[host_header]) ||
+ normalise_header('host', headers['host']);
+ if (!host) {
+ const header_names = host_header ? `${host_header} or host headers` : 'host header';
+ throw new Error(
+ `Could not determine host. The request must have a value provided by the ${header_names}`
+ );
+ }
+
+ const port = normalise_header(port_header, headers[port_header]);
+ if (port && isNaN(+port)) {
+ throw new Error(
+ `The ${port_header} header specified ${port} which is an invalid port because it is not a number. The value should only contain the port number (e.g. 443)`
+ );
+ }
+
+ return port ? `${protocol}://${host}:${port}` : `${protocol}://${host}`;
+}
+
+const handler = sequence(
+ /** @type {(import('sirv').RequestHandler | import('polka').Middleware)[]} */
+ ([serve(path.join(dir, 'client'), true), serve_prerendered(), ssr].filter(Boolean))
+);
+
+export { handler };
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/index.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..c6925675b5fcaab61e700f018c1e2f24bbc8e198
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/index.js
@@ -0,0 +1,128 @@
+import http from "node:http";
+import process from "node:process";
+import httpProxy from "http-proxy";
+import { handler } from "./handler.js";
+import { classifyRoute } from "./proxy_routes.js";
+
+const host = process.env.HOST || "0.0.0.0";
+const port = parseInt(process.env.PORT || "7860", 10);
+
+const pythonHost = process.env.GRADIO_PYTHON_HOST || "127.0.0.1";
+const pythonPort = parseInt(process.env.GRADIO_PYTHON_PORT || "7861", 10);
+const serverModeEnabled = process.env.GRADIO_SERVER_MODE_ENABLED;
+
+const staticWorkerPorts = process.env.GRADIO_STATIC_WORKER_PORTS
+ ? process.env.GRADIO_STATIC_WORKER_PORTS.split(",")
+ .map((p) => parseInt(p.trim(), 10))
+ .filter((p) => !isNaN(p))
+ : [];
+
+let workerIndex = 0;
+
+const pythonTarget = `http://${pythonHost}:${pythonPort}`;
+
+const proxy = httpProxy.createProxyServer({
+ // Don't modify the path
+ ignorePath: false,
+ // Forward the original host header
+ changeOrigin: false
+});
+
+proxy.on("error", (err, req, res) => {
+ // Suppress ECONNRESET from client-initiated disconnects
+ if (err.code === "ECONNRESET") return;
+ console.error(`[gradio-proxy] Proxy error for ${req.url}:`, err.message);
+ if (res.writeHead && !res.headersSent) {
+ res.writeHead(502, { "Content-Type": "text/plain" });
+ res.end("Bad Gateway");
+ }
+});
+
+// When the browser closes an SSE/streaming connection, propagate the
+// disconnect to Python so that `request.is_disconnected()` returns True.
+// http-proxy only listens for the deprecated `aborted` event, which
+// doesn't fire reliably in newer Node versions. We listen on `res`
+// (the outgoing response to the client) because for GET/SSE requests
+// `req` closes immediately after the empty body is consumed — before
+// the proxy response even arrives.
+proxy.on("proxyRes", (proxyRes, req, res) => {
+ res.on("close", () => {
+ if (!res.writableEnded) {
+ proxyRes.destroy();
+ }
+ });
+});
+
+const server = http.createServer((req, res) => {
+ const url = req.url || "/";
+ const qmark = url.indexOf("?");
+ const path = qmark === -1 ? url : url.substring(0, qmark);
+ const queryString = qmark === -1 ? "" : url.substring(qmark + 1);
+ const { route, workerIndex: affinityIndex } = classifyRoute(path, {
+ hasWorkers: staticWorkerPorts.length > 0,
+ serverModeEnabled: !!serverModeEnabled,
+ numWorkers: staticWorkerPorts.length,
+ queryString
+ });
+
+ if (route === "worker") {
+ let targetPort;
+ if (affinityIndex !== undefined) {
+ // Affinity routing: upload_id hashed to a specific worker
+ targetPort = staticWorkerPorts[affinityIndex];
+ } else {
+ // Round-robin for non-affinity static routes
+ targetPort = staticWorkerPorts[workerIndex % staticWorkerPorts.length];
+ workerIndex = (workerIndex + 1) % staticWorkerPorts.length;
+ }
+ proxy.web(req, res, {
+ target: `http://${pythonHost}:${targetPort}`
+ });
+ return;
+ }
+
+ if (route === "python") {
+ proxy.web(req, res, { target: pythonTarget });
+ return;
+ }
+
+ // SvelteKit handler (SSR + immutable assets)
+ // Inject headers that SvelteKit's page.server.ts expects to find the Python backend.
+ // x-gradio-server is for internal Node->Python fetches (always http).
+ // x-gradio-original-url is the public-facing URL the browser uses,
+ // so it must respect x-forwarded-proto (e.g. https on HF Spaces).
+ const publicScheme = (req.headers["x-forwarded-proto"] || "http")
+ .split(",")[0]
+ .trim();
+ const publicHost =
+ req.headers["x-forwarded-host"] || req.headers.host || `${host}:${port}`;
+ req.headers["x-gradio-server"] = pythonTarget;
+ req.headers["x-gradio-port"] = String(pythonPort);
+ req.headers["x-gradio-mounted-path"] = "/";
+ req.headers["x-gradio-original-url"] = `${publicScheme}://${publicHost}`;
+ handler(req, res);
+});
+
+server.listen({ host, port }, () => {
+ console.log(`[gradio-proxy] Listening on http://${host}:${port}`);
+ console.log(`[gradio-proxy] Python backend: ${pythonTarget}`);
+ if (staticWorkerPorts.length > 0) {
+ console.log(
+ `[gradio-proxy] Static workers: ${staticWorkerPorts.join(", ")}`
+ );
+ }
+});
+
+function graceful_shutdown() {
+ server.closeIdleConnections();
+ server.close(() => {
+ proxy.close();
+ process.exit(0);
+ });
+ setTimeout(() => server.closeAllConnections(), 30000);
+}
+
+process.on("SIGTERM", graceful_shutdown);
+process.on("SIGINT", graceful_shutdown);
+
+export { host, port, server };
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/.package-lock.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/.package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..5d8f2e4e75f2b7cc3ff2e7d6af0dbd0f2d48637b
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/.package-lock.json
@@ -0,0 +1,53 @@
+{
+ "name": "gradio-server-app",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "license": "MIT"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ }
+ }
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/LICENSE b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..abcbd54e5eefdac272de763e774ca75825ca55ce
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Arnout Kazemier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/README.md b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..aba7e18076692805c856c17f2158b497ab70dbd9
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/README.md
@@ -0,0 +1,94 @@
+# EventEmitter3
+
+[](https://www.npmjs.com/package/eventemitter3)[](https://travis-ci.org/primus/eventemitter3)[](https://david-dm.org/primus/eventemitter3)[](https://coveralls.io/r/primus/eventemitter3?branch=master)[](https://webchat.freenode.net/?channels=primus)
+
+[](https://saucelabs.com/u/eventemitter3)
+
+EventEmitter3 is a high performance EventEmitter. It has been micro-optimized
+for various of code paths making this, one of, if not the fastest EventEmitter
+available for Node.js and browsers. The module is API compatible with the
+EventEmitter that ships by default with Node.js but there are some slight
+differences:
+
+- Domain support has been removed.
+- We do not `throw` an error when you emit an `error` event and nobody is
+ listening.
+- The `newListener` and `removeListener` events have been removed as they
+ are useful only in some uncommon use-cases.
+- The `setMaxListeners`, `getMaxListeners`, `prependListener` and
+ `prependOnceListener` methods are not available.
+- Support for custom context for events so there is no need to use `fn.bind`.
+- The `removeListener` method removes all matching listeners, not only the
+ first.
+
+It's a drop in replacement for existing EventEmitters, but just faster. Free
+performance, who wouldn't want that? The EventEmitter is written in EcmaScript 3
+so it will work in the oldest browsers and node versions that you need to
+support.
+
+## Installation
+
+```bash
+$ npm install --save eventemitter3
+```
+
+## CDN
+
+Recommended CDN:
+
+```text
+https://unpkg.com/eventemitter3@latest/umd/eventemitter3.min.js
+```
+
+## Usage
+
+After installation the only thing you need to do is require the module:
+
+```js
+var EventEmitter = require('eventemitter3');
+```
+
+And you're ready to create your own EventEmitter instances. For the API
+documentation, please follow the official Node.js documentation:
+
+http://nodejs.org/api/events.html
+
+### Contextual emits
+
+We've upgraded the API of the `EventEmitter.on`, `EventEmitter.once` and
+`EventEmitter.removeListener` to accept an extra argument which is the `context`
+or `this` value that should be set for the emitted events. This means you no
+longer have the overhead of an event that required `fn.bind` in order to get a
+custom `this` value.
+
+```js
+var EE = new EventEmitter()
+ , context = { foo: 'bar' };
+
+function emitted() {
+ console.log(this === context); // true
+}
+
+EE.once('event-name', emitted, context);
+EE.on('another-event', emitted, context);
+EE.removeListener('another-event', emitted, context);
+```
+
+### Tests and benchmarks
+
+This module is well tested. You can run:
+
+- `npm test` to run the tests under Node.js.
+- `npm run test-browser` to run the tests in real browsers via Sauce Labs.
+
+We also have a set of benchmarks to compare EventEmitter3 with some available
+alternatives. To run the benchmarks run `npm run benchmark`.
+
+Tests and benchmarks are not included in the npm package. If you want to play
+with them you have to clone the GitHub repository.
+Note that you will have to run an additional `npm i` in the benchmarks folder
+before `npm run benchmark`.
+
+## License
+
+[MIT](LICENSE)
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/index.d.ts b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/index.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..118f68bb9f6ca09eb72ec8907611c0e1e77c5f0a
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/index.d.ts
@@ -0,0 +1,134 @@
+/**
+ * Minimal `EventEmitter` interface that is molded against the Node.js
+ * `EventEmitter` interface.
+ */
+declare class EventEmitter<
+ EventTypes extends EventEmitter.ValidEventTypes = string | symbol,
+ Context extends any = any
+> {
+ static prefixed: string | boolean;
+
+ /**
+ * Return an array listing the events for which the emitter has registered
+ * listeners.
+ */
+ eventNames(): Array>;
+
+ /**
+ * Return the listeners registered for a given event.
+ */
+ listeners>(
+ event: T
+ ): Array>;
+
+ /**
+ * Return the number of listeners listening to a given event.
+ */
+ listenerCount(event: EventEmitter.EventNames): number;
+
+ /**
+ * Calls each of the listeners registered for a given event.
+ */
+ emit>(
+ event: T,
+ ...args: EventEmitter.EventArgs
+ ): boolean;
+
+ /**
+ * Add a listener for a given event.
+ */
+ on>(
+ event: T,
+ fn: EventEmitter.EventListener,
+ context?: Context
+ ): this;
+ addListener>(
+ event: T,
+ fn: EventEmitter.EventListener,
+ context?: Context
+ ): this;
+
+ /**
+ * Add a one-time listener for a given event.
+ */
+ once>(
+ event: T,
+ fn: EventEmitter.EventListener,
+ context?: Context
+ ): this;
+
+ /**
+ * Remove the listeners of a given event.
+ */
+ removeListener>(
+ event: T,
+ fn?: EventEmitter.EventListener,
+ context?: Context,
+ once?: boolean
+ ): this;
+ off>(
+ event: T,
+ fn?: EventEmitter.EventListener,
+ context?: Context,
+ once?: boolean
+ ): this;
+
+ /**
+ * Remove all listeners, or those of the specified event.
+ */
+ removeAllListeners(event?: EventEmitter.EventNames): this;
+}
+
+declare namespace EventEmitter {
+ export interface ListenerFn {
+ (...args: Args): void;
+ }
+
+ export interface EventEmitterStatic {
+ new <
+ EventTypes extends ValidEventTypes = string | symbol,
+ Context = any
+ >(): EventEmitter;
+ }
+
+ /**
+ * `object` should be in either of the following forms:
+ * ```
+ * interface EventTypes {
+ * 'event-with-parameters': any[]
+ * 'event-with-example-handler': (...args: any[]) => void
+ * }
+ * ```
+ */
+ export type ValidEventTypes = string | symbol | object;
+
+ export type EventNames = T extends string | symbol
+ ? T
+ : keyof T;
+
+ export type ArgumentMap = {
+ [K in keyof T]: T[K] extends (...args: any[]) => void
+ ? Parameters
+ : T[K] extends any[]
+ ? T[K]
+ : any[];
+ };
+
+ export type EventListener<
+ T extends ValidEventTypes,
+ K extends EventNames
+ > = T extends string | symbol
+ ? (...args: any[]) => void
+ : (
+ ...args: ArgumentMap>[Extract]
+ ) => void;
+
+ export type EventArgs<
+ T extends ValidEventTypes,
+ K extends EventNames
+ > = Parameters>;
+
+ export const EventEmitter: EventEmitterStatic;
+}
+
+export = EventEmitter;
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/index.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ea485c40a694deb72801fcd0048a3c44de95403
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/index.js
@@ -0,0 +1,336 @@
+'use strict';
+
+var has = Object.prototype.hasOwnProperty
+ , prefix = '~';
+
+/**
+ * Constructor to create a storage for our `EE` objects.
+ * An `Events` instance is a plain object whose properties are event names.
+ *
+ * @constructor
+ * @private
+ */
+function Events() {}
+
+//
+// We try to not inherit from `Object.prototype`. In some engines creating an
+// instance in this way is faster than calling `Object.create(null)` directly.
+// If `Object.create(null)` is not supported we prefix the event names with a
+// character to make sure that the built-in object properties are not
+// overridden or used as an attack vector.
+//
+if (Object.create) {
+ Events.prototype = Object.create(null);
+
+ //
+ // This hack is needed because the `__proto__` property is still inherited in
+ // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
+ //
+ if (!new Events().__proto__) prefix = false;
+}
+
+/**
+ * Representation of a single event listener.
+ *
+ * @param {Function} fn The listener function.
+ * @param {*} context The context to invoke the listener with.
+ * @param {Boolean} [once=false] Specify if the listener is a one-time listener.
+ * @constructor
+ * @private
+ */
+function EE(fn, context, once) {
+ this.fn = fn;
+ this.context = context;
+ this.once = once || false;
+}
+
+/**
+ * Add a listener for a given event.
+ *
+ * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
+ * @param {(String|Symbol)} event The event name.
+ * @param {Function} fn The listener function.
+ * @param {*} context The context to invoke the listener with.
+ * @param {Boolean} once Specify if the listener is a one-time listener.
+ * @returns {EventEmitter}
+ * @private
+ */
+function addListener(emitter, event, fn, context, once) {
+ if (typeof fn !== 'function') {
+ throw new TypeError('The listener must be a function');
+ }
+
+ var listener = new EE(fn, context || emitter, once)
+ , evt = prefix ? prefix + event : event;
+
+ if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
+ else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
+ else emitter._events[evt] = [emitter._events[evt], listener];
+
+ return emitter;
+}
+
+/**
+ * Clear event by name.
+ *
+ * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.
+ * @param {(String|Symbol)} evt The Event name.
+ * @private
+ */
+function clearEvent(emitter, evt) {
+ if (--emitter._eventsCount === 0) emitter._events = new Events();
+ else delete emitter._events[evt];
+}
+
+/**
+ * Minimal `EventEmitter` interface that is molded against the Node.js
+ * `EventEmitter` interface.
+ *
+ * @constructor
+ * @public
+ */
+function EventEmitter() {
+ this._events = new Events();
+ this._eventsCount = 0;
+}
+
+/**
+ * Return an array listing the events for which the emitter has registered
+ * listeners.
+ *
+ * @returns {Array}
+ * @public
+ */
+EventEmitter.prototype.eventNames = function eventNames() {
+ var names = []
+ , events
+ , name;
+
+ if (this._eventsCount === 0) return names;
+
+ for (name in (events = this._events)) {
+ if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
+ }
+
+ if (Object.getOwnPropertySymbols) {
+ return names.concat(Object.getOwnPropertySymbols(events));
+ }
+
+ return names;
+};
+
+/**
+ * Return the listeners registered for a given event.
+ *
+ * @param {(String|Symbol)} event The event name.
+ * @returns {Array} The registered listeners.
+ * @public
+ */
+EventEmitter.prototype.listeners = function listeners(event) {
+ var evt = prefix ? prefix + event : event
+ , handlers = this._events[evt];
+
+ if (!handlers) return [];
+ if (handlers.fn) return [handlers.fn];
+
+ for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
+ ee[i] = handlers[i].fn;
+ }
+
+ return ee;
+};
+
+/**
+ * Return the number of listeners listening to a given event.
+ *
+ * @param {(String|Symbol)} event The event name.
+ * @returns {Number} The number of listeners.
+ * @public
+ */
+EventEmitter.prototype.listenerCount = function listenerCount(event) {
+ var evt = prefix ? prefix + event : event
+ , listeners = this._events[evt];
+
+ if (!listeners) return 0;
+ if (listeners.fn) return 1;
+ return listeners.length;
+};
+
+/**
+ * Calls each of the listeners registered for a given event.
+ *
+ * @param {(String|Symbol)} event The event name.
+ * @returns {Boolean} `true` if the event had listeners, else `false`.
+ * @public
+ */
+EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
+ var evt = prefix ? prefix + event : event;
+
+ if (!this._events[evt]) return false;
+
+ var listeners = this._events[evt]
+ , len = arguments.length
+ , args
+ , i;
+
+ if (listeners.fn) {
+ if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
+
+ switch (len) {
+ case 1: return listeners.fn.call(listeners.context), true;
+ case 2: return listeners.fn.call(listeners.context, a1), true;
+ case 3: return listeners.fn.call(listeners.context, a1, a2), true;
+ case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
+ case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
+ case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
+ }
+
+ for (i = 1, args = new Array(len -1); i < len; i++) {
+ args[i - 1] = arguments[i];
+ }
+
+ listeners.fn.apply(listeners.context, args);
+ } else {
+ var length = listeners.length
+ , j;
+
+ for (i = 0; i < length; i++) {
+ if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
+
+ switch (len) {
+ case 1: listeners[i].fn.call(listeners[i].context); break;
+ case 2: listeners[i].fn.call(listeners[i].context, a1); break;
+ case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
+ case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
+ default:
+ if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
+ args[j - 1] = arguments[j];
+ }
+
+ listeners[i].fn.apply(listeners[i].context, args);
+ }
+ }
+ }
+
+ return true;
+};
+
+/**
+ * Add a listener for a given event.
+ *
+ * @param {(String|Symbol)} event The event name.
+ * @param {Function} fn The listener function.
+ * @param {*} [context=this] The context to invoke the listener with.
+ * @returns {EventEmitter} `this`.
+ * @public
+ */
+EventEmitter.prototype.on = function on(event, fn, context) {
+ return addListener(this, event, fn, context, false);
+};
+
+/**
+ * Add a one-time listener for a given event.
+ *
+ * @param {(String|Symbol)} event The event name.
+ * @param {Function} fn The listener function.
+ * @param {*} [context=this] The context to invoke the listener with.
+ * @returns {EventEmitter} `this`.
+ * @public
+ */
+EventEmitter.prototype.once = function once(event, fn, context) {
+ return addListener(this, event, fn, context, true);
+};
+
+/**
+ * Remove the listeners of a given event.
+ *
+ * @param {(String|Symbol)} event The event name.
+ * @param {Function} fn Only remove the listeners that match this function.
+ * @param {*} context Only remove the listeners that have this context.
+ * @param {Boolean} once Only remove one-time listeners.
+ * @returns {EventEmitter} `this`.
+ * @public
+ */
+EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
+ var evt = prefix ? prefix + event : event;
+
+ if (!this._events[evt]) return this;
+ if (!fn) {
+ clearEvent(this, evt);
+ return this;
+ }
+
+ var listeners = this._events[evt];
+
+ if (listeners.fn) {
+ if (
+ listeners.fn === fn &&
+ (!once || listeners.once) &&
+ (!context || listeners.context === context)
+ ) {
+ clearEvent(this, evt);
+ }
+ } else {
+ for (var i = 0, events = [], length = listeners.length; i < length; i++) {
+ if (
+ listeners[i].fn !== fn ||
+ (once && !listeners[i].once) ||
+ (context && listeners[i].context !== context)
+ ) {
+ events.push(listeners[i]);
+ }
+ }
+
+ //
+ // Reset the array, or remove it completely if we have no more listeners.
+ //
+ if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
+ else clearEvent(this, evt);
+ }
+
+ return this;
+};
+
+/**
+ * Remove all listeners, or those of the specified event.
+ *
+ * @param {(String|Symbol)} [event] The event name.
+ * @returns {EventEmitter} `this`.
+ * @public
+ */
+EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
+ var evt;
+
+ if (event) {
+ evt = prefix ? prefix + event : event;
+ if (this._events[evt]) clearEvent(this, evt);
+ } else {
+ this._events = new Events();
+ this._eventsCount = 0;
+ }
+
+ return this;
+};
+
+//
+// Alias methods names because people roll like that.
+//
+EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
+EventEmitter.prototype.addListener = EventEmitter.prototype.on;
+
+//
+// Expose the prefix.
+//
+EventEmitter.prefixed = prefix;
+
+//
+// Allow `EventEmitter` to be imported as module namespace.
+//
+EventEmitter.EventEmitter = EventEmitter;
+
+//
+// Expose the module.
+//
+if ('undefined' !== typeof module) {
+ module.exports = EventEmitter;
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/package.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..3c575b4670d648977d46a92f8d88b99cde1c581d
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "eventemitter3",
+ "version": "4.0.7",
+ "description": "EventEmitter3 focuses on performance while maintaining a Node.js AND browser compatible interface.",
+ "main": "index.js",
+ "typings": "index.d.ts",
+ "scripts": {
+ "browserify": "rm -rf umd && mkdir umd && browserify index.js -s EventEmitter3 -o umd/eventemitter3.js",
+ "minify": "uglifyjs umd/eventemitter3.js --source-map -cm -o umd/eventemitter3.min.js",
+ "benchmark": "find benchmarks/run -name '*.js' -exec benchmarks/start.sh {} \\;",
+ "test": "nyc --reporter=html --reporter=text mocha test/test.js",
+ "prepublishOnly": "npm run browserify && npm run minify",
+ "test-browser": "node test/browser.js"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts",
+ "umd"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/primus/eventemitter3.git"
+ },
+ "keywords": [
+ "EventEmitter",
+ "EventEmitter2",
+ "EventEmitter3",
+ "Events",
+ "addEventListener",
+ "addListener",
+ "emit",
+ "emits",
+ "emitter",
+ "event",
+ "once",
+ "pub/sub",
+ "publish",
+ "reactor",
+ "subscribe"
+ ],
+ "author": "Arnout Kazemier",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/primus/eventemitter3/issues"
+ },
+ "devDependencies": {
+ "assume": "^2.2.0",
+ "browserify": "^16.5.0",
+ "mocha": "^8.0.1",
+ "nyc": "^15.1.0",
+ "pre-commit": "^1.2.0",
+ "sauce-browsers": "^2.0.0",
+ "sauce-test": "^1.3.3",
+ "uglify-js": "^3.9.0"
+ }
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/umd/eventemitter3.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/umd/eventemitter3.js
new file mode 100644
index 0000000000000000000000000000000000000000..888fcb8f5d487910bc5ae0d19d3a4145a943750a
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/eventemitter3/umd/eventemitter3.js
@@ -0,0 +1,340 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.EventEmitter3 = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i, James Talmage , Ruben Verborgh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/README.md b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..fd35b9e16295f386ab3c8a84713fc79eea6d15a1
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/README.md
@@ -0,0 +1,157 @@
+## Follow Redirects
+
+Drop-in replacement for Node's `http` and `https` modules that automatically follows redirects.
+
+[](https://www.npmjs.com/package/follow-redirects)
+[](https://github.com/follow-redirects/follow-redirects/actions)
+[](https://coveralls.io/r/follow-redirects/follow-redirects?branch=master)
+[](https://www.npmjs.com/package/follow-redirects)
+[](https://github.com/sponsors/RubenVerborgh)
+
+`follow-redirects` provides [request](https://nodejs.org/api/http.html#http_http_request_options_callback) and [get](https://nodejs.org/api/http.html#http_http_get_options_callback)
+ methods that behave identically to those found on the native [http](https://nodejs.org/api/http.html#http_http_request_options_callback) and [https](https://nodejs.org/api/https.html#https_https_request_options_callback)
+ modules, with the exception that they will seamlessly follow redirects.
+
+```javascript
+const { http, https } = require('follow-redirects');
+
+http.get('http://en.wikipedia.org/', response => {
+ response.on('data', chunk => {
+ console.log(chunk);
+ });
+}).on('error', err => {
+ console.error(err);
+});
+```
+
+You can inspect the final redirected URL through the `responseUrl` property on the `response`.
+If no redirection happened, `responseUrl` is the original request URL.
+
+```javascript
+const request = https.request({
+ host: 'en.wikipedia.org',
+ path: '/',
+}, response => {
+ console.log(response.responseUrl);
+ // 'http://duckduckgo.com/robots.txt'
+});
+request.end();
+```
+
+## Options
+### Global options
+Global options are set directly on the `follow-redirects` module:
+
+```javascript
+const followRedirects = require('follow-redirects');
+followRedirects.maxRedirects = 10;
+followRedirects.maxBodyLength = 20 * 1024 * 1024; // 20 MB
+```
+
+The following global options are supported:
+
+- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted.
+
+- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted.
+
+### Per-request options
+Per-request options are set by passing an `options` object:
+
+```javascript
+const url = require('url');
+const { http, https } = require('follow-redirects');
+
+const options = url.parse('http://en.wikipedia.org/');
+options.maxRedirects = 10;
+options.beforeRedirect = (options, response, request) => {
+ // Use this to adjust the request options upon redirecting,
+ // to inspect the latest response headers,
+ // or to cancel the request by throwing an error
+
+ // response.headers = the redirect response headers
+ // response.statusCode = the redirect response code (eg. 301, 307, etc.)
+
+ // request.url = the requested URL that resulted in a redirect
+ // request.headers = the headers in the request that resulted in a redirect
+ // request.method = the method of the request that resulted in a redirect
+ if (options.hostname === "example.org") {
+ options.auth = "user:password";
+ }
+};
+http.request(options);
+```
+
+In addition to the [standard HTTP](https://nodejs.org/api/http.html#http_http_request_options_callback) and [HTTPS options](https://nodejs.org/api/https.html#https_https_request_options_callback),
+the following per-request options are supported:
+- `followRedirects` (default: `true`) – whether redirects should be followed.
+
+- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted.
+
+- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted.
+
+- `beforeRedirect` (default: `undefined`) – optionally change the request `options` on redirects, or abort the request by throwing an error.
+
+- `agents` (default: `undefined`) – sets the `agent` option per protocol, since HTTP and HTTPS use different agents. Example value: `{ http: new http.Agent(), https: new https.Agent() }`
+
+- `trackRedirects` (default: `false`) – whether to store the redirected response details into the `redirects` array on the response object.
+
+- `sensitiveHeaders` (default: `[]`) – names of headers to omit when making redirected requests (such as `X-API-Key`, `X-Auth-Token`…)
+
+
+### Advanced usage
+By default, `follow-redirects` will use the Node.js default implementations
+of [`http`](https://nodejs.org/api/http.html)
+and [`https`](https://nodejs.org/api/https.html).
+To enable features such as caching and/or intermediate request tracking,
+you might instead want to wrap `follow-redirects` around custom protocol implementations:
+
+```javascript
+const { http, https } = require('follow-redirects').wrap({
+ http: require('your-custom-http'),
+ https: require('your-custom-https'),
+});
+```
+
+Such custom protocols only need an implementation of the `request` method.
+
+## Browser Usage
+
+Due to the way the browser works,
+the `http` and `https` browser equivalents perform redirects by default.
+
+By requiring `follow-redirects` this way:
+```javascript
+const http = require('follow-redirects/http');
+const https = require('follow-redirects/https');
+```
+you can easily tell webpack and friends to replace
+`follow-redirect` by the built-in versions:
+
+```json
+{
+ "follow-redirects/http" : "http",
+ "follow-redirects/https" : "https"
+}
+```
+
+## Contributing
+
+Pull Requests are always welcome. Please [file an issue](https://github.com/follow-redirects/follow-redirects/issues)
+ detailing your proposal before you invest your valuable time. Additional features and bug fixes should be accompanied
+ by tests. You can run the test suite locally with a simple `npm test` command.
+
+## Debug Logging
+
+`follow-redirects` uses the excellent [debug](https://www.npmjs.com/package/debug) for logging. To turn on logging
+ set the environment variable `DEBUG=follow-redirects` for debug output from just this module. When running the test
+ suite it is sometimes advantageous to set `DEBUG=*` to see output from the express server as well.
+
+## Authors
+
+- [Ruben Verborgh](https://ruben.verborgh.org/)
+- [Olivier Lalonde](mailto:olalonde@gmail.com)
+- [James Talmage](mailto:james@talmage.io)
+
+## License
+
+[MIT License](https://github.com/follow-redirects/follow-redirects/blob/master/LICENSE)
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/debug.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/debug.js
new file mode 100644
index 0000000000000000000000000000000000000000..decb77dedde56627ef2d50280daa14326a6091e1
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/debug.js
@@ -0,0 +1,15 @@
+var debug;
+
+module.exports = function () {
+ if (!debug) {
+ try {
+ /* eslint global-require: off */
+ debug = require("debug")("follow-redirects");
+ }
+ catch (error) { /* */ }
+ if (typeof debug !== "function") {
+ debug = function () { /* */ };
+ }
+ }
+ debug.apply(null, arguments);
+};
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/http.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/http.js
new file mode 100644
index 0000000000000000000000000000000000000000..695e356174a86759d476ae3c4098206580076fbd
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/http.js
@@ -0,0 +1 @@
+module.exports = require("./").http;
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/https.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/https.js
new file mode 100644
index 0000000000000000000000000000000000000000..d21c921d99a7371e8cdeaeee43579f6bc3da77f6
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/https.js
@@ -0,0 +1 @@
+module.exports = require("./").https;
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/index.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d32523ec32f38db18e05a67551f1948af67c144
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/index.js
@@ -0,0 +1,709 @@
+var url = require("url");
+var URL = url.URL;
+var http = require("http");
+var https = require("https");
+var Writable = require("stream").Writable;
+var assert = require("assert");
+var debug = require("./debug");
+
+// Preventive platform detection
+// istanbul ignore next
+(function detectUnsupportedEnvironment() {
+ var looksLikeNode = typeof process !== "undefined";
+ var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined";
+ var looksLikeV8 = isFunction(Error.captureStackTrace);
+ if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) {
+ console.warn("The follow-redirects package should be excluded from browser builds.");
+ }
+}());
+
+// Whether to use the native URL object or the legacy url module
+var useNativeURL = false;
+try {
+ assert(new URL(""));
+}
+catch (error) {
+ useNativeURL = error.code === "ERR_INVALID_URL";
+}
+
+// HTTP headers to drop across HTTP/HTTPS and domain boundaries
+var sensitiveHeaders = [
+ "Authorization",
+ "Proxy-Authorization",
+ "Cookie",
+];
+
+// URL fields to preserve in copy operations
+var preservedUrlFields = [
+ "auth",
+ "host",
+ "hostname",
+ "href",
+ "path",
+ "pathname",
+ "port",
+ "protocol",
+ "query",
+ "search",
+ "hash",
+];
+
+// Create handlers that pass events from native requests
+var events = ["abort", "aborted", "connect", "error", "socket", "timeout"];
+var eventHandlers = Object.create(null);
+events.forEach(function (event) {
+ eventHandlers[event] = function (arg1, arg2, arg3) {
+ this._redirectable.emit(event, arg1, arg2, arg3);
+ };
+});
+
+// Error types with codes
+var InvalidUrlError = createErrorType(
+ "ERR_INVALID_URL",
+ "Invalid URL",
+ TypeError
+);
+var RedirectionError = createErrorType(
+ "ERR_FR_REDIRECTION_FAILURE",
+ "Redirected request failed"
+);
+var TooManyRedirectsError = createErrorType(
+ "ERR_FR_TOO_MANY_REDIRECTS",
+ "Maximum number of redirects exceeded",
+ RedirectionError
+);
+var MaxBodyLengthExceededError = createErrorType(
+ "ERR_FR_MAX_BODY_LENGTH_EXCEEDED",
+ "Request body larger than maxBodyLength limit"
+);
+var WriteAfterEndError = createErrorType(
+ "ERR_STREAM_WRITE_AFTER_END",
+ "write after end"
+);
+
+// istanbul ignore next
+var destroy = Writable.prototype.destroy || noop;
+
+// An HTTP(S) request that can be redirected
+function RedirectableRequest(options, responseCallback) {
+ // Initialize the request
+ Writable.call(this);
+ this._sanitizeOptions(options);
+ this._options = options;
+ this._ended = false;
+ this._ending = false;
+ this._redirectCount = 0;
+ this._redirects = [];
+ this._requestBodyLength = 0;
+ this._requestBodyBuffers = [];
+
+ // Attach a callback if passed
+ if (responseCallback) {
+ this.on("response", responseCallback);
+ }
+
+ // React to responses of native requests
+ var self = this;
+ this._onNativeResponse = function (response) {
+ try {
+ self._processResponse(response);
+ }
+ catch (cause) {
+ self.emit("error", cause instanceof RedirectionError ?
+ cause : new RedirectionError({ cause: cause }));
+ }
+ };
+
+ // Create filter for sensitive HTTP headers
+ this._headerFilter = new RegExp("^(?:" +
+ sensitiveHeaders.concat(options.sensitiveHeaders).map(escapeRegex).join("|") +
+ ")$", "i");
+
+ // Perform the first request
+ this._performRequest();
+}
+RedirectableRequest.prototype = Object.create(Writable.prototype);
+
+RedirectableRequest.prototype.abort = function () {
+ destroyRequest(this._currentRequest);
+ this._currentRequest.abort();
+ this.emit("abort");
+};
+
+RedirectableRequest.prototype.destroy = function (error) {
+ destroyRequest(this._currentRequest, error);
+ destroy.call(this, error);
+ return this;
+};
+
+// Writes buffered data to the current native request
+RedirectableRequest.prototype.write = function (data, encoding, callback) {
+ // Writing is not allowed if end has been called
+ if (this._ending) {
+ throw new WriteAfterEndError();
+ }
+
+ // Validate input and shift parameters if necessary
+ if (!isString(data) && !isBuffer(data)) {
+ throw new TypeError("data should be a string, Buffer or Uint8Array");
+ }
+ if (isFunction(encoding)) {
+ callback = encoding;
+ encoding = null;
+ }
+
+ // Ignore empty buffers, since writing them doesn't invoke the callback
+ // https://github.com/nodejs/node/issues/22066
+ if (data.length === 0) {
+ if (callback) {
+ callback();
+ }
+ return;
+ }
+ // Only write when we don't exceed the maximum body length
+ if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {
+ this._requestBodyLength += data.length;
+ this._requestBodyBuffers.push({ data: data, encoding: encoding });
+ this._currentRequest.write(data, encoding, callback);
+ }
+ // Error when we exceed the maximum body length
+ else {
+ this.emit("error", new MaxBodyLengthExceededError());
+ this.abort();
+ }
+};
+
+// Ends the current native request
+RedirectableRequest.prototype.end = function (data, encoding, callback) {
+ // Shift parameters if necessary
+ if (isFunction(data)) {
+ callback = data;
+ data = encoding = null;
+ }
+ else if (isFunction(encoding)) {
+ callback = encoding;
+ encoding = null;
+ }
+
+ // Write data if needed and end
+ if (!data) {
+ this._ended = this._ending = true;
+ this._currentRequest.end(null, null, callback);
+ }
+ else {
+ var self = this;
+ var currentRequest = this._currentRequest;
+ this.write(data, encoding, function () {
+ self._ended = true;
+ currentRequest.end(null, null, callback);
+ });
+ this._ending = true;
+ }
+};
+
+// Sets a header value on the current native request
+RedirectableRequest.prototype.setHeader = function (name, value) {
+ this._options.headers[name] = value;
+ this._currentRequest.setHeader(name, value);
+};
+
+// Clears a header value on the current native request
+RedirectableRequest.prototype.removeHeader = function (name) {
+ delete this._options.headers[name];
+ this._currentRequest.removeHeader(name);
+};
+
+// Global timeout for all underlying requests
+RedirectableRequest.prototype.setTimeout = function (msecs, callback) {
+ var self = this;
+
+ // Destroys the socket on timeout
+ function destroyOnTimeout(socket) {
+ socket.setTimeout(msecs);
+ socket.removeListener("timeout", socket.destroy);
+ socket.addListener("timeout", socket.destroy);
+ }
+
+ // Sets up a timer to trigger a timeout event
+ function startTimer(socket) {
+ if (self._timeout) {
+ clearTimeout(self._timeout);
+ }
+ self._timeout = setTimeout(function () {
+ self.emit("timeout");
+ clearTimer();
+ }, msecs);
+ destroyOnTimeout(socket);
+ }
+
+ // Stops a timeout from triggering
+ function clearTimer() {
+ // Clear the timeout
+ if (self._timeout) {
+ clearTimeout(self._timeout);
+ self._timeout = null;
+ }
+
+ // Clean up all attached listeners
+ self.removeListener("abort", clearTimer);
+ self.removeListener("error", clearTimer);
+ self.removeListener("response", clearTimer);
+ self.removeListener("close", clearTimer);
+ if (callback) {
+ self.removeListener("timeout", callback);
+ }
+ if (!self.socket) {
+ self._currentRequest.removeListener("socket", startTimer);
+ }
+ }
+
+ // Attach callback if passed
+ if (callback) {
+ this.on("timeout", callback);
+ }
+
+ // Start the timer if or when the socket is opened
+ if (this.socket) {
+ startTimer(this.socket);
+ }
+ else {
+ this._currentRequest.once("socket", startTimer);
+ }
+
+ // Clean up on events
+ this.on("socket", destroyOnTimeout);
+ this.on("abort", clearTimer);
+ this.on("error", clearTimer);
+ this.on("response", clearTimer);
+ this.on("close", clearTimer);
+
+ return this;
+};
+
+// Proxy all other public ClientRequest methods
+[
+ "flushHeaders", "getHeader",
+ "setNoDelay", "setSocketKeepAlive",
+].forEach(function (method) {
+ RedirectableRequest.prototype[method] = function (a, b) {
+ return this._currentRequest[method](a, b);
+ };
+});
+
+// Proxy all public ClientRequest properties
+["aborted", "connection", "socket"].forEach(function (property) {
+ Object.defineProperty(RedirectableRequest.prototype, property, {
+ get: function () { return this._currentRequest[property]; },
+ });
+});
+
+RedirectableRequest.prototype._sanitizeOptions = function (options) {
+ // Ensure headers are always present
+ if (!options.headers) {
+ options.headers = {};
+ }
+ if (!isArray(options.sensitiveHeaders)) {
+ options.sensitiveHeaders = [];
+ }
+
+ // Since http.request treats host as an alias of hostname,
+ // but the url module interprets host as hostname plus port,
+ // eliminate the host property to avoid confusion.
+ if (options.host) {
+ // Use hostname if set, because it has precedence
+ if (!options.hostname) {
+ options.hostname = options.host;
+ }
+ delete options.host;
+ }
+
+ // Complete the URL object when necessary
+ if (!options.pathname && options.path) {
+ var searchPos = options.path.indexOf("?");
+ if (searchPos < 0) {
+ options.pathname = options.path;
+ }
+ else {
+ options.pathname = options.path.substring(0, searchPos);
+ options.search = options.path.substring(searchPos);
+ }
+ }
+};
+
+
+// Executes the next native request (initial or redirect)
+RedirectableRequest.prototype._performRequest = function () {
+ // Load the native protocol
+ var protocol = this._options.protocol;
+ var nativeProtocol = this._options.nativeProtocols[protocol];
+ if (!nativeProtocol) {
+ throw new TypeError("Unsupported protocol " + protocol);
+ }
+
+ // If specified, use the agent corresponding to the protocol
+ // (HTTP and HTTPS use different types of agents)
+ if (this._options.agents) {
+ var scheme = protocol.slice(0, -1);
+ this._options.agent = this._options.agents[scheme];
+ }
+
+ // Create the native request and set up its event handlers
+ var request = this._currentRequest =
+ nativeProtocol.request(this._options, this._onNativeResponse);
+ request._redirectable = this;
+ for (var event of events) {
+ request.on(event, eventHandlers[event]);
+ }
+
+ // RFC7230§5.3.1: When making a request directly to an origin server, […]
+ // a client MUST send only the absolute path […] as the request-target.
+ this._currentUrl = /^\//.test(this._options.path) ?
+ url.format(this._options) :
+ // When making a request to a proxy, […]
+ // a client MUST send the target URI in absolute-form […].
+ this._options.path;
+
+ // End a redirected request
+ // (The first request must be ended explicitly with RedirectableRequest#end)
+ if (this._isRedirect) {
+ // Write the request entity and end
+ var i = 0;
+ var self = this;
+ var buffers = this._requestBodyBuffers;
+ (function writeNext(error) {
+ // Only write if this request has not been redirected yet
+ // istanbul ignore else
+ if (request === self._currentRequest) {
+ // Report any write errors
+ // istanbul ignore if
+ if (error) {
+ self.emit("error", error);
+ }
+ // Write the next buffer if there are still left
+ else if (i < buffers.length) {
+ var buffer = buffers[i++];
+ // istanbul ignore else
+ if (!request.finished) {
+ request.write(buffer.data, buffer.encoding, writeNext);
+ }
+ }
+ // End the request if `end` has been called on us
+ else if (self._ended) {
+ request.end();
+ }
+ }
+ }());
+ }
+};
+
+// Processes a response from the current native request
+RedirectableRequest.prototype._processResponse = function (response) {
+ // Store the redirected response
+ var statusCode = response.statusCode;
+ if (this._options.trackRedirects) {
+ this._redirects.push({
+ url: this._currentUrl,
+ headers: response.headers,
+ statusCode: statusCode,
+ });
+ }
+
+ // RFC7231§6.4: The 3xx (Redirection) class of status code indicates
+ // that further action needs to be taken by the user agent in order to
+ // fulfill the request. If a Location header field is provided,
+ // the user agent MAY automatically redirect its request to the URI
+ // referenced by the Location field value,
+ // even if the specific status code is not understood.
+
+ // If the response is not a redirect; return it as-is
+ var location = response.headers.location;
+ if (!location || this._options.followRedirects === false ||
+ statusCode < 300 || statusCode >= 400) {
+ response.responseUrl = this._currentUrl;
+ response.redirects = this._redirects;
+ this.emit("response", response);
+
+ // Clean up
+ this._requestBodyBuffers = [];
+ return;
+ }
+
+ // The response is a redirect, so abort the current request
+ destroyRequest(this._currentRequest);
+ // Discard the remainder of the response to avoid waiting for data
+ response.destroy();
+
+ // RFC7231§6.4: A client SHOULD detect and intervene
+ // in cyclical redirections (i.e., "infinite" redirection loops).
+ if (++this._redirectCount > this._options.maxRedirects) {
+ throw new TooManyRedirectsError();
+ }
+
+ // Store the request headers if applicable
+ var requestHeaders;
+ var beforeRedirect = this._options.beforeRedirect;
+ if (beforeRedirect) {
+ requestHeaders = Object.assign({
+ // The Host header was set by nativeProtocol.request
+ Host: response.req.getHeader("host"),
+ }, this._options.headers);
+ }
+
+ // RFC7231§6.4: Automatic redirection needs to done with
+ // care for methods not known to be safe, […]
+ // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
+ // the request method from POST to GET for the subsequent request.
+ var method = this._options.method;
+ if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" ||
+ // RFC7231§6.4.4: The 303 (See Other) status code indicates that
+ // the server is redirecting the user agent to a different resource […]
+ // A user agent can perform a retrieval request targeting that URI
+ // (a GET or HEAD request if using HTTP) […]
+ (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {
+ this._options.method = "GET";
+ // Drop a possible entity and headers related to it
+ this._requestBodyBuffers = [];
+ removeMatchingHeaders(/^content-/i, this._options.headers);
+ }
+
+ // Drop the Host header, as the redirect might lead to a different host
+ var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
+
+ // If the redirect is relative, carry over the host of the last request
+ var currentUrlParts = parseUrl(this._currentUrl);
+ var currentHost = currentHostHeader || currentUrlParts.host;
+ var currentUrl = /^\w+:/.test(location) ? this._currentUrl :
+ url.format(Object.assign(currentUrlParts, { host: currentHost }));
+
+ // Create the redirected request
+ var redirectUrl = resolveUrl(location, currentUrl);
+ debug("redirecting to", redirectUrl.href);
+ this._isRedirect = true;
+ spreadUrlObject(redirectUrl, this._options);
+
+ // Drop confidential headers when redirecting to a less secure protocol
+ // or to a different domain that is not a superdomain
+ if (redirectUrl.protocol !== currentUrlParts.protocol &&
+ redirectUrl.protocol !== "https:" ||
+ redirectUrl.host !== currentHost &&
+ !isSubdomain(redirectUrl.host, currentHost)) {
+ removeMatchingHeaders(this._headerFilter, this._options.headers);
+ }
+
+ // Evaluate the beforeRedirect callback
+ if (isFunction(beforeRedirect)) {
+ var responseDetails = {
+ headers: response.headers,
+ statusCode: statusCode,
+ };
+ var requestDetails = {
+ url: currentUrl,
+ method: method,
+ headers: requestHeaders,
+ };
+ beforeRedirect(this._options, responseDetails, requestDetails);
+ this._sanitizeOptions(this._options);
+ }
+
+ // Perform the redirected request
+ this._performRequest();
+};
+
+// Wraps the key/value object of protocols with redirect functionality
+function wrap(protocols) {
+ // Default settings
+ var exports = {
+ maxRedirects: 21,
+ maxBodyLength: 10 * 1024 * 1024,
+ };
+
+ // Wrap each protocol
+ var nativeProtocols = {};
+ Object.keys(protocols).forEach(function (scheme) {
+ var protocol = scheme + ":";
+ var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];
+ var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);
+
+ // Executes a request, following redirects
+ function request(input, options, callback) {
+ // Parse parameters, ensuring that input is an object
+ if (isURL(input)) {
+ input = spreadUrlObject(input);
+ }
+ else if (isString(input)) {
+ input = spreadUrlObject(parseUrl(input));
+ }
+ else {
+ callback = options;
+ options = validateUrl(input);
+ input = { protocol: protocol };
+ }
+ if (isFunction(options)) {
+ callback = options;
+ options = null;
+ }
+
+ // Set defaults
+ options = Object.assign({
+ maxRedirects: exports.maxRedirects,
+ maxBodyLength: exports.maxBodyLength,
+ }, input, options);
+ options.nativeProtocols = nativeProtocols;
+ if (!isString(options.host) && !isString(options.hostname)) {
+ options.hostname = "::1";
+ }
+
+ assert.equal(options.protocol, protocol, "protocol mismatch");
+ debug("options", options);
+ return new RedirectableRequest(options, callback);
+ }
+
+ // Executes a GET request, following redirects
+ function get(input, options, callback) {
+ var wrappedRequest = wrappedProtocol.request(input, options, callback);
+ wrappedRequest.end();
+ return wrappedRequest;
+ }
+
+ // Expose the properties on the wrapped protocol
+ Object.defineProperties(wrappedProtocol, {
+ request: { value: request, configurable: true, enumerable: true, writable: true },
+ get: { value: get, configurable: true, enumerable: true, writable: true },
+ });
+ });
+ return exports;
+}
+
+function noop() { /* empty */ }
+
+function parseUrl(input) {
+ var parsed;
+ // istanbul ignore else
+ if (useNativeURL) {
+ parsed = new URL(input);
+ }
+ else {
+ // Ensure the URL is valid and absolute
+ parsed = validateUrl(url.parse(input));
+ if (!isString(parsed.protocol)) {
+ throw new InvalidUrlError({ input });
+ }
+ }
+ return parsed;
+}
+
+function resolveUrl(relative, base) {
+ // istanbul ignore next
+ return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));
+}
+
+function validateUrl(input) {
+ if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) {
+ throw new InvalidUrlError({ input: input.href || input });
+ }
+ if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) {
+ throw new InvalidUrlError({ input: input.href || input });
+ }
+ return input;
+}
+
+function spreadUrlObject(urlObject, target) {
+ var spread = target || {};
+ for (var key of preservedUrlFields) {
+ spread[key] = urlObject[key];
+ }
+
+ // Fix IPv6 hostname
+ if (spread.hostname.startsWith("[")) {
+ spread.hostname = spread.hostname.slice(1, -1);
+ }
+ // Ensure port is a number
+ if (spread.port !== "") {
+ spread.port = Number(spread.port);
+ }
+ // Concatenate path
+ spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;
+
+ return spread;
+}
+
+function removeMatchingHeaders(regex, headers) {
+ var lastValue;
+ for (var header in headers) {
+ if (regex.test(header)) {
+ lastValue = headers[header];
+ delete headers[header];
+ }
+ }
+ return (lastValue === null || typeof lastValue === "undefined") ?
+ undefined : String(lastValue).trim();
+}
+
+function createErrorType(code, message, baseClass) {
+ // Create constructor
+ function CustomError(properties) {
+ // istanbul ignore else
+ if (isFunction(Error.captureStackTrace)) {
+ Error.captureStackTrace(this, this.constructor);
+ }
+ Object.assign(this, properties || {});
+ this.code = code;
+ this.message = this.cause ? message + ": " + this.cause.message : message;
+ }
+
+ // Attach constructor and set default properties
+ CustomError.prototype = new (baseClass || Error)();
+ Object.defineProperties(CustomError.prototype, {
+ constructor: {
+ value: CustomError,
+ enumerable: false,
+ },
+ name: {
+ value: "Error [" + code + "]",
+ enumerable: false,
+ },
+ });
+ return CustomError;
+}
+
+function destroyRequest(request, error) {
+ for (var event of events) {
+ request.removeListener(event, eventHandlers[event]);
+ }
+ request.on("error", noop);
+ request.destroy(error);
+}
+
+function isSubdomain(subdomain, domain) {
+ assert(isString(subdomain) && isString(domain));
+ var dot = subdomain.length - domain.length - 1;
+ return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
+}
+
+function isArray(value) {
+ return value instanceof Array;
+}
+
+function isString(value) {
+ return typeof value === "string" || value instanceof String;
+}
+
+function isFunction(value) {
+ return typeof value === "function";
+}
+
+function isBuffer(value) {
+ return typeof value === "object" && ("length" in value);
+}
+
+function isURL(value) {
+ return URL && value instanceof URL;
+}
+
+function escapeRegex(regex) {
+ return regex.replace(/[\]\\/()*+?.$]/g, "\\$&");
+}
+
+// Exports
+module.exports = wrap({ http: http, https: https });
+module.exports.wrap = wrap;
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/package.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..1027c77095c649a0ab54f77fd61b5662e71195a5
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/follow-redirects/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "follow-redirects",
+ "version": "1.16.0",
+ "description": "HTTP and HTTPS modules that follow redirects.",
+ "license": "MIT",
+ "main": "index.js",
+ "files": [
+ "*.js"
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "scripts": {
+ "lint": "eslint *.js test",
+ "test": "nyc mocha"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/follow-redirects/follow-redirects.git"
+ },
+ "homepage": "https://github.com/follow-redirects/follow-redirects",
+ "bugs": {
+ "url": "https://github.com/follow-redirects/follow-redirects/issues"
+ },
+ "keywords": [
+ "http",
+ "https",
+ "url",
+ "redirect",
+ "client",
+ "location",
+ "utility"
+ ],
+ "author": "Ruben Verborgh (https://ruben.verborgh.org/)",
+ "contributors": [
+ "Olivier Lalonde (http://www.syskall.com)",
+ "James Talmage "
+ ],
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ },
+ "devDependencies": {
+ "concat-stream": "^2.0.0",
+ "eslint": "^5.16.0",
+ "express": "^4.16.4",
+ "lolex": "^3.1.0",
+ "mocha": "^6.0.2",
+ "nyc": "^14.1.1"
+ }
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/.auto-changelog b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/.auto-changelog
new file mode 100644
index 0000000000000000000000000000000000000000..38e245582906bb205b30ea751fffe3f999ed4679
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/.auto-changelog
@@ -0,0 +1,6 @@
+{
+ "output": "CHANGELOG.md",
+ "template": "keepachangelog",
+ "unreleased": true,
+ "commitLimit": false
+}
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/.gitattributes b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..1a6bd458748bdf50ff241ec18cc99027030fe02c
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/.gitattributes
@@ -0,0 +1 @@
+package-lock.json binary
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/CHANGELOG.md b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..6c80d84c4060ccffc24f9f16476689f8c7dfa8e2
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/CHANGELOG.md
@@ -0,0 +1,1872 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
+
+## [v1.18.1](https://github.com/http-party/node-http-proxy/compare/1.18.0...v1.18.1) - 2020-05-17
+
+### Merged
+
+- Skip sending the proxyReq event when the expect header is present [`#1447`](https://github.com/http-party/node-http-proxy/pull/1447)
+- Remove node6 support, add node12 to build [`#1397`](https://github.com/http-party/node-http-proxy/pull/1397)
+
+## [1.18.0](https://github.com/http-party/node-http-proxy/compare/1.17.0...1.18.0) - 2019-09-18
+
+### Merged
+
+- Added in auto-changelog module set to keepachangelog format [`#1373`](https://github.com/http-party/node-http-proxy/pull/1373)
+- fix 'Modify Response' readme section to avoid unnecessary array copying [`#1300`](https://github.com/http-party/node-http-proxy/pull/1300)
+- Fix incorrect target name for reverse proxy example [`#1135`](https://github.com/http-party/node-http-proxy/pull/1135)
+- Fix modify response middleware example [`#1139`](https://github.com/http-party/node-http-proxy/pull/1139)
+- [dist] Update dependency async to v3 [`#1359`](https://github.com/http-party/node-http-proxy/pull/1359)
+- Fix path to local http-proxy in examples. [`#1072`](https://github.com/http-party/node-http-proxy/pull/1072)
+- fix reverse-proxy example require path [`#1067`](https://github.com/http-party/node-http-proxy/pull/1067)
+- Update README.md [`#970`](https://github.com/http-party/node-http-proxy/pull/970)
+- [dist] Update dependency request to ~2.88.0 [SECURITY] [`#1357`](https://github.com/http-party/node-http-proxy/pull/1357)
+- [dist] Update dependency eventemitter3 to v4 [`#1365`](https://github.com/http-party/node-http-proxy/pull/1365)
+- [dist] Update dependency colors to v1 [`#1360`](https://github.com/http-party/node-http-proxy/pull/1360)
+- [dist] Update all non-major dependencies [`#1356`](https://github.com/http-party/node-http-proxy/pull/1356)
+- [dist] Update dependency agentkeepalive to v4 [`#1358`](https://github.com/http-party/node-http-proxy/pull/1358)
+- [dist] Update dependency nyc to v14 [`#1367`](https://github.com/http-party/node-http-proxy/pull/1367)
+- [dist] Update dependency concat-stream to v2 [`#1363`](https://github.com/http-party/node-http-proxy/pull/1363)
+- x-forwarded-host overwrite for mutli level proxies [`#1267`](https://github.com/http-party/node-http-proxy/pull/1267)
+- [refactor doc] Complete rename to http-party org. [`#1362`](https://github.com/http-party/node-http-proxy/pull/1362)
+- Highlight correct lines for createProxyServer [`#1117`](https://github.com/http-party/node-http-proxy/pull/1117)
+- Fix docs for rewrite options - 201 also handled [`#1147`](https://github.com/http-party/node-http-proxy/pull/1147)
+- Update .nyc_output [`#1339`](https://github.com/http-party/node-http-proxy/pull/1339)
+- Configure Renovate [`#1355`](https://github.com/http-party/node-http-proxy/pull/1355)
+- [examples] Restream body before proxying, support for Content-Type of application/x-www-form-urlencoded [`#1264`](https://github.com/http-party/node-http-proxy/pull/1264)
+
+### Commits
+
+- [dist] New test fixtures. [`7e4a0e5`](https://github.com/http-party/node-http-proxy/commit/7e4a0e511bc30c059216860153301de2cdd1e97f)
+- [dist] End of an era. [`a9b09cc`](https://github.com/http-party/node-http-proxy/commit/a9b09cce43f072db99fb5170030a05536177ccb7)
+- [dist] Version bump. 1.18.0 [`9bbe486`](https://github.com/http-party/node-http-proxy/commit/9bbe486c5efcc356fb4d189ef38eee275bbde345)
+- [fix] Latest versions. [`59c4403`](https://github.com/http-party/node-http-proxy/commit/59c4403e9dc15ab9b19ee2a3f4aecbfc6c3d94c4)
+- [fix test] Update tests. [`dd1d08b`](https://github.com/http-party/node-http-proxy/commit/dd1d08b6319d1def729554446a5b0176978a8dad)
+- [dist] Update dependency ws to v3 [SECURITY] [`b00911c`](https://github.com/http-party/node-http-proxy/commit/b00911c93740a00c5cfbacbb91565cb6912ed255)
+- [dist] .gitattributes all the things. [`fc93520`](https://github.com/http-party/node-http-proxy/commit/fc93520d741ec80be8ae31ca005f3e9c199e330e)
+- [dist] Regenerate package-lock.json. [`16d4f8a`](https://github.com/http-party/node-http-proxy/commit/16d4f8a95162b2e2e4ee6657c500f1208c044b2d)
+
+## [1.17.0](https://github.com/http-party/node-http-proxy/compare/1.16.2...1.17.0) - 2018-04-20
+
+### Merged
+
+- Fix overwriting of global options [`#1074`](https://github.com/http-party/node-http-proxy/pull/1074)
+- Update README.md [`#1131`](https://github.com/http-party/node-http-proxy/pull/1131)
+- Update README.md with CoC link [`#1120`](https://github.com/http-party/node-http-proxy/pull/1120)
+- Add Code Of Conduct [`#1119`](https://github.com/http-party/node-http-proxy/pull/1119)
+- [deps] Update eventemitter3 to version 2.0.x [`#1109`](https://github.com/http-party/node-http-proxy/pull/1109)
+
+### Fixed
+
+- Fix "Can't set headers after they are sent" errors [`#930`](https://github.com/http-party/node-http-proxy/issues/930)
+- Include websocket non-upgrade response [`#890`](https://github.com/http-party/node-http-proxy/issues/890)
+
+### Commits
+
+- Add followRedirects option [`c9a556c`](https://github.com/http-party/node-http-proxy/commit/c9a556cfa57c7ce0b877e16f2c2e1448d8cc278d)
+- [test] add test for selfHandleRequest and remove modifyResponse as selfHandleRequest is the only way that functionality works [`4a37175`](https://github.com/http-party/node-http-proxy/commit/4a37175a5296d2ea2da0fc15a3f8fe08599bb592)
+- Adding ability to set cookie path [`2c98416`](https://github.com/http-party/node-http-proxy/commit/2c98416ac2bf17bb5f515b9e10ee4485f5913846)
+- Updating docs and adding more tests. [`f5c2381`](https://github.com/http-party/node-http-proxy/commit/f5c2381395e01bf8d6655cc70e14032c8f0aaa67)
+- [dist] make tests work reliably, add package-lock.json [`09dcb98`](https://github.com/http-party/node-http-proxy/commit/09dcb984565dabb159a01a75a188b974f8c176ad)
+- add support for modify response [`e5c02b8`](https://github.com/http-party/node-http-proxy/commit/e5c02b8a8a902e204eee886acafbbfe46c4a3aef)
+- [wip] proper tests and reporting [`f4ff100`](https://github.com/http-party/node-http-proxy/commit/f4ff1006b9e71eb4185a3edf03333dbe514a84c9)
+- Add detail about "buffer" option [`6f88caf`](https://github.com/http-party/node-http-proxy/commit/6f88caf6e46d84a809910c591e138250b333b39f)
+- Add use case for proxy to HTTPS using a PKCS12 client certificate [`d2f9db8`](https://github.com/http-party/node-http-proxy/commit/d2f9db824136358a06dc3dd566644f3a016f24e2)
+- [test] for override method feature [`81d58c5`](https://github.com/http-party/node-http-proxy/commit/81d58c531be3f61efb56d2489a66c73a7b2325fe)
+- [dist] doc updates [`e94d529`](https://github.com/http-party/node-http-proxy/commit/e94d52973a26cf817a9de12d97e5ae603093f70d)
+- feat: 添加response自处理参数 [`89f9ef8`](https://github.com/http-party/node-http-proxy/commit/89f9ef87e0532d54d086719c5ace1a968a42e51b)
+- [dist][test] codecov config [`a4bccc3`](https://github.com/http-party/node-http-proxy/commit/a4bccc332d36d7db93db984674cd7e51b43a1b99)
+- Removing unnecessary check since this is a private API [`bc6a237`](https://github.com/http-party/node-http-proxy/commit/bc6a23709c37c65b5b16cc802d05cb57f099b0ce)
+- issue #953: stop using writeHead [`2c44039`](https://github.com/http-party/node-http-proxy/commit/2c44039a7c30b190043da654ee7e5aed0304e979)
+- [fix] move badges [`543636d`](https://github.com/http-party/node-http-proxy/commit/543636d0f662308ec8c9afdbf641f4036f002bfd)
+- fix small typos in README [`8231984`](https://github.com/http-party/node-http-proxy/commit/8231984fb02dca331b4ef77e089db50855eea4f5)
+- Added timeout option to docs [`107c187`](https://github.com/http-party/node-http-proxy/commit/107c18720c3906f9049cc14d075b31910c0ccf55)
+- [dist] document the feature [`d533a1b`](https://github.com/http-party/node-http-proxy/commit/d533a1be437b37fed5bd25f5e58298eea819f974)
+- [fix] slightly more tolerant [`de1b808`](https://github.com/http-party/node-http-proxy/commit/de1b80851ab1b1251b5eaeaf0beab164024f09b6)
+- Forgot 'i' flag when changing from regex shorthand to string. [`50f58b4`](https://github.com/http-party/node-http-proxy/commit/50f58b4cd9b4422a11512a6a065432159b5bc806)
+- Update common.js [`c5d8466`](https://github.com/http-party/node-http-proxy/commit/c5d846648304f2e36a172b25d9fb8300d8131f8c)
+- [fix] rm newline [`e6f24ba`](https://github.com/http-party/node-http-proxy/commit/e6f24ba6173c4fdd26089b3c729de5dbdd71ad74)
+- [dist] update package-lock.json [`abf882e`](https://github.com/http-party/node-http-proxy/commit/abf882e03c92cf1665d5b7d4dbdaf87feb50a677)
+
+## [1.16.2](https://github.com/http-party/node-http-proxy/compare/1.16.1...1.16.2) - 2016-12-06
+
+### Merged
+
+- [WIP] Revert default behavior of writeHeaders method [`#1104`](https://github.com/http-party/node-http-proxy/pull/1104)
+
+## [1.16.1](https://github.com/http-party/node-http-proxy/compare/1.16.0...1.16.1) - 2016-12-04
+
+### Commits
+
+- Enable proxy response to have multiple Set-Cookie raw headers #1101 [`8cb451f`](https://github.com/http-party/node-http-proxy/commit/8cb451f20cff0a19fc9576fc2558307fb17a5710)
+- [dist] Version bump. 1.16.1 [`ac1a01b`](https://github.com/http-party/node-http-proxy/commit/ac1a01b1f3caa3a2a9433341bf5e7a95072d6612)
+
+## [1.16.0](https://github.com/http-party/node-http-proxy/compare/1.15.2...1.16.0) - 2016-12-02
+
+### Merged
+
+- Fix newly introduced error in error handler for ECONNREFUSED in forward proxy [`#1100`](https://github.com/http-party/node-http-proxy/pull/1100)
+- Keep original letter case of response header keys [`#1098`](https://github.com/http-party/node-http-proxy/pull/1098)
+- Handle errors for forward request, add test case [`#1099`](https://github.com/http-party/node-http-proxy/pull/1099)
+
+### Commits
+
+- add node 6 to travis [`2f7f037`](https://github.com/http-party/node-http-proxy/commit/2f7f03778cfb94396acf0d778061ea197212fbb5)
+
+## [1.15.2](https://github.com/http-party/node-http-proxy/compare/1.15.1...1.15.2) - 2016-10-22
+
+### Merged
+
+- Add proxy-timeout option to documentation [`#1075`](https://github.com/http-party/node-http-proxy/pull/1075)
+
+### Commits
+
+- Do not rely on func.name (no scope) [`61c2889`](https://github.com/http-party/node-http-proxy/commit/61c28891093b256bbc0dae78e45e2c5f0acf2101)
+- Do not rely on func.name (no scope) [`d48f67e`](https://github.com/http-party/node-http-proxy/commit/d48f67eb90d8af66211093e91efdd6638859e0bf)
+- Expose full callback names [`220f5fb`](https://github.com/http-party/node-http-proxy/commit/220f5fb795d2977c5a68ae59d7db65089efed50c)
+- test case added [`f5217d6`](https://github.com/http-party/node-http-proxy/commit/f5217d6c20c164ed412a3b20f660786b6f88b35b)
+- [fix] style nits [`d0f1dfe`](https://github.com/http-party/node-http-proxy/commit/d0f1dfeb8277d46a057017cd888b50e85f6725d6)
+- With a comment [`fbc2668`](https://github.com/http-party/node-http-proxy/commit/fbc266809c289fbdb59d7944345816a858303c96)
+- Fix browserification [`8eddf45`](https://github.com/http-party/node-http-proxy/commit/8eddf45f2a043e4e1b3f6e33c304e68fe7e1c406)
+- not setting connection header in case of http2 as it is deprecated [`2d01edc`](https://github.com/http-party/node-http-proxy/commit/2d01edc5a5ace591784022b85860a3bbc48c5e12)
+
+## [1.15.1](https://github.com/http-party/node-http-proxy/compare/1.15.0...1.15.1) - 2016-09-14
+
+### Merged
+
+- Properly write response header optionally including statusMessage [`#1061`](https://github.com/http-party/node-http-proxy/pull/1061)
+
+### Commits
+
+- [dist] Version bump. 1.15.1 [`912cd3a`](https://github.com/http-party/node-http-proxy/commit/912cd3acaef484f7ea08affc9339250082e04058)
+
+## [1.15.0](https://github.com/http-party/node-http-proxy/compare/1.14.0...1.15.0) - 2016-09-14
+
+### Merged
+
+- Made it not to crash with omited Host http header [`#1050`](https://github.com/http-party/node-http-proxy/pull/1050)
+- README.md: fix typo: 'ingoing' should be 'incoming' [`#1060`](https://github.com/http-party/node-http-proxy/pull/1060)
+- Fix for Reason-Phrase being overwritten on proxy response. [`#1051`](https://github.com/http-party/node-http-proxy/pull/1051)
+- cookieDomainRewrite option [`#1009`](https://github.com/http-party/node-http-proxy/pull/1009)
+- Update ntlm-authentication.js [`#1025`](https://github.com/http-party/node-http-proxy/pull/1025)
+- Restream body before proxying [`#1027`](https://github.com/http-party/node-http-proxy/pull/1027)
+- Location rewriting for responses with status 201 [`#1024`](https://github.com/http-party/node-http-proxy/pull/1024)
+- #866 Copy CA from options into outbound proxy [`#1042`](https://github.com/http-party/node-http-proxy/pull/1042)
+
+### Fixed
+
+- Restream body before proxying (#1027) [`#955`](https://github.com/http-party/node-http-proxy/issues/955)
+
+### Commits
+
+- [dist] Version bump. 1.15.0 [`b98c75b`](https://github.com/http-party/node-http-proxy/commit/b98c75b1ff3ebdf7f78224eb0d9aa857af2db1d9)
+
+## [1.14.0](https://github.com/http-party/node-http-proxy/compare/1.13.3...1.14.0) - 2016-06-15
+
+### Merged
+
+- Emit disconnected event instead of error when ECONNRESET [`#966`](https://github.com/http-party/node-http-proxy/pull/966)
+- fix test for node 0.10 + socket.io-client@1.4.6 (engine.io-client@1.6.9) [`#1010`](https://github.com/http-party/node-http-proxy/pull/1010)
+
+### Commits
+
+- [dist] Version bump. 1.14.0 [`fcfb0b3`](https://github.com/http-party/node-http-proxy/commit/fcfb0b37f6ac61369565507446377f91d955cf29)
+
+## [1.13.3](https://github.com/http-party/node-http-proxy/compare/1.13.2...1.13.3) - 2016-05-16
+
+### Merged
+
+- fix browserify compatibility [`#975`](https://github.com/http-party/node-http-proxy/pull/975)
+- alter message error [`#998`](https://github.com/http-party/node-http-proxy/pull/998)
+- Sanitize header keys before setting them [`#997`](https://github.com/http-party/node-http-proxy/pull/997)
+- Update ntlm-authentication.js [`#989`](https://github.com/http-party/node-http-proxy/pull/989)
+- Add expected datatype to readme [`#983`](https://github.com/http-party/node-http-proxy/pull/983)
+- Update README [`#982`](https://github.com/http-party/node-http-proxy/pull/982)
+- Fix formatting of the `headers` option [`#974`](https://github.com/http-party/node-http-proxy/pull/974)
+- Set the x-forwarded-host flag when xfwd is enabled [`#967`](https://github.com/http-party/node-http-proxy/pull/967)
+
+### Fixed
+
+- Sanitize header keys before setting them (#997) [`#996`](https://github.com/http-party/node-http-proxy/issues/996)
+
+### Commits
+
+- [dist] Update LICENSE to reflect 2015 changes. [`f345a1a`](https://github.com/http-party/node-http-proxy/commit/f345a1ac2dde1884e72b952a685a0a1796059f14)
+- [dist] Version bump. 1.13.3 [`5082acc`](https://github.com/http-party/node-http-proxy/commit/5082acc067bbf287f503bbd5b776f798ab169db1)
+
+## [1.13.2](https://github.com/http-party/node-http-proxy/compare/1.13.1...1.13.2) - 2016-02-17
+
+### Merged
+
+- Fixed missing documentation: #options.headers [`#806`](https://github.com/http-party/node-http-proxy/pull/806)
+- #949 Proxy example using req instead res on README [`#950`](https://github.com/http-party/node-http-proxy/pull/950)
+- mocha: Use default reporter [`#962`](https://github.com/http-party/node-http-proxy/pull/962)
+- Remove "transfer-encoding" header if "content-length" is set to zero [`#961`](https://github.com/http-party/node-http-proxy/pull/961)
+
+### Commits
+
+- [dist] Version bump. 1.13.2 [`e1b2f4c`](https://github.com/http-party/node-http-proxy/commit/e1b2f4c31b34464431db251b3b6169689dadf518)
+
+## [1.13.1](https://github.com/http-party/node-http-proxy/compare/1.13.0...1.13.1) - 2016-02-02
+
+### Merged
+
+- README.md: summary to specify reverse proxy [`#932`](https://github.com/http-party/node-http-proxy/pull/932)
+- fix(common) urlJoin replace: ":/" -> "http?s:/" [`#947`](https://github.com/http-party/node-http-proxy/pull/947)
+- Update README.md [`#948`](https://github.com/http-party/node-http-proxy/pull/948)
+
+### Commits
+
+- [dist] Version bump. 1.13.1 [`9d9fa94`](https://github.com/http-party/node-http-proxy/commit/9d9fa940cff3aa6134c60732c23aea8171fc7296)
+
+## [1.13.0](https://github.com/http-party/node-http-proxy/compare/1.12.1...1.13.0) - 2016-01-26
+
+### Merged
+
+- Fix for #839 (Ignore path and the trailing slash) [`#934`](https://github.com/http-party/node-http-proxy/pull/934)
+- Update license year range to 2016 [`#943`](https://github.com/http-party/node-http-proxy/pull/943)
+
+### Commits
+
+- [dist] Version bump. 1.13.0 [`268994e`](https://github.com/http-party/node-http-proxy/commit/268994ea45d9f8737343001ab9542e03023a5c96)
+
+## [1.12.1](https://github.com/http-party/node-http-proxy/compare/1.12.0...1.12.1) - 2016-01-24
+
+### Merged
+
+- Bump version for npm publish [`#942`](https://github.com/http-party/node-http-proxy/pull/942)
+- Added check to passes/web-outgoing.js to make sure the header being s… [`#940`](https://github.com/http-party/node-http-proxy/pull/940)
+- Created reverse-proxy.js example. [`#825`](https://github.com/http-party/node-http-proxy/pull/825)
+- SSE example and test [`#922`](https://github.com/http-party/node-http-proxy/pull/922)
+- More structured readme [`#912`](https://github.com/http-party/node-http-proxy/pull/912)
+- Updated markdown docs to mention proxy rules module [`#910`](https://github.com/http-party/node-http-proxy/pull/910)
+- Add tests for forwarding of continuation frames [`#901`](https://github.com/http-party/node-http-proxy/pull/901)
+- Bump requires-port, server and ws [`#904`](https://github.com/http-party/node-http-proxy/pull/904)
+- [example] add an example for NTLM authentication [`#903`](https://github.com/http-party/node-http-proxy/pull/903)
+
+### Commits
+
+- Organized README more [`cd1d777`](https://github.com/http-party/node-http-proxy/commit/cd1d7776e8fb5d67e2c52b9ef27d8c932e7b72e2)
+- Add tests for testing forwarding of continuation frames [`64fa520`](https://github.com/http-party/node-http-proxy/commit/64fa52078913c6d4fe95673f182aac4924961e8b)
+- Added back to top helpers [`6106d4c`](https://github.com/http-party/node-http-proxy/commit/6106d4c32f7c7960f0391591661e6f0d229db52d)
+- [ci] use node 4.2 to test and do not allow failures [`f82ce18`](https://github.com/http-party/node-http-proxy/commit/f82ce18d2f187b085c2c4f49d857755d21c582b1)
+- [fix] bump requires-port, server and ws [`9ea1e89`](https://github.com/http-party/node-http-proxy/commit/9ea1e89a2fd9c392cd40265bdb13494a3614e290)
+- Updated markdown docs to mention proxy rules [`eea79ca`](https://github.com/http-party/node-http-proxy/commit/eea79cab53f27371cad387a524ee3aaefa742c48)
+- Fixed tests depending on ignorePath [`f9540de`](https://github.com/http-party/node-http-proxy/commit/f9540de7b13f41091be2dcb68d8f23be65ad3885)
+- Added check to passes/web-outgoing.js to make sure the header being set is not undefined, which should be the only falsey value that could accidently show up and break that call. This fixes windows NTLM auth issues behind http-proxy. [`3b39d2c`](https://github.com/http-party/node-http-proxy/commit/3b39d2c3dcb1785cc06043fcb226c652f554941e)
+- No longer appends / to path if ignorePath is set [`f2093b5`](https://github.com/http-party/node-http-proxy/commit/f2093b5313c855cd6309cc0ddebb31f369e525ed)
+- README.md: introduction to specify reverse proxy [`41414a5`](https://github.com/http-party/node-http-proxy/commit/41414a56a11ddfac3a337711ac4c64124eb62377)
+- Added note for appending trailing / when using ignorePath [`0cb1d3c`](https://github.com/http-party/node-http-proxy/commit/0cb1d3c68e793fed9aa4a7624c32a018e796aa95)
+
+## [1.12.0](https://github.com/http-party/node-http-proxy/compare/1.11.3...1.12.0) - 2015-10-22
+
+### Merged
+
+- Issue #896: provide a "proxyReq" event also for websocket connections. [`#897`](https://github.com/http-party/node-http-proxy/pull/897)
+
+### Commits
+
+- Provide a "proxyReq" event also for websocket connections. [`a05fc2d`](https://github.com/http-party/node-http-proxy/commit/a05fc2d1692d038f1eaad6d9b26c174039bc1949)
+- fixes after PR review [`9752652`](https://github.com/http-party/node-http-proxy/commit/9752652e76da3bcfb6a635620e4162518ca43203)
+- [dist] Version bump. 1.12.0 [`b5a6d0e`](https://github.com/http-party/node-http-proxy/commit/b5a6d0e58396363f4c457f6d1654614bdfcfcb73)
+
+## [1.11.3](https://github.com/http-party/node-http-proxy/compare/1.11.2...1.11.3) - 2015-10-19
+
+### Merged
+
+- Removed unspecified trailing slash in proxy url [`#893`](https://github.com/http-party/node-http-proxy/pull/893)
+- Updating the upgrading doc [`#892`](https://github.com/http-party/node-http-proxy/pull/892)
+
+### Commits
+
+- [dist] Update .travis.yml to be more modern. [`302d981`](https://github.com/http-party/node-http-proxy/commit/302d981dd2cf06dbf751b1f64e3dfea08d0f9476)
+- [dist] Version bump. 1.11.3 [`60baca5`](https://github.com/http-party/node-http-proxy/commit/60baca5aed4f45ef1d7b3f7edd909375853d344b)
+- docs: options.headers [`c86ae51`](https://github.com/http-party/node-http-proxy/commit/c86ae51bb9658309a9628f4f5182d4c45c803b84)
+
+## [1.11.2](https://github.com/http-party/node-http-proxy/compare/v1.11.1...1.11.2) - 2015-08-30
+
+### Merged
+
+- Update gzip-middleware.js [`#870`](https://github.com/http-party/node-http-proxy/pull/870)
+- Fix broken option list indentation [`#863`](https://github.com/http-party/node-http-proxy/pull/863)
+- Added missing configuration options [`#852`](https://github.com/http-party/node-http-proxy/pull/852)
+- Added installation instructions [`#823`](https://github.com/http-party/node-http-proxy/pull/823)
+- fixes comment [`#817`](https://github.com/http-party/node-http-proxy/pull/817)
+
+### Commits
+
+- Created reverse-proxy.js example. [`38864d0`](https://github.com/http-party/node-http-proxy/commit/38864d016794b9ff3d8d1d1cb81a730b40a1bf9c)
+- Added websocket set-cookie headers test [`855cebd`](https://github.com/http-party/node-http-proxy/commit/855cebdac4d33ef5f2fab4c4c78fdc07cdb61402)
+- [fix] make more functional [`cea0e86`](https://github.com/http-party/node-http-proxy/commit/cea0e8676b3e609828320bb03051eaf78cc43b54)
+- Modify the set-cookie header fix to work with node 0.10.x. [`da674ec`](https://github.com/http-party/node-http-proxy/commit/da674ec4df2b371f09e912f3b376c48581090a0f)
+- Use raw headers instead parsed. [`8bfd90c`](https://github.com/http-party/node-http-proxy/commit/8bfd90c4d9331fd129f17a788ef9fc733654b7e0)
+- Replaced Object.keys().map with for in loop. [`3d2350c`](https://github.com/http-party/node-http-proxy/commit/3d2350c54ff0fb9271f5fcfea1d23f22ad97c47c)
+- [dist] Version bump. 1.11.2 [`30e3b37`](https://github.com/http-party/node-http-proxy/commit/30e3b371de0116e40e15156394f31c7e0b0aa9f1)
+- Websocket key was unnecessary long. [`ca73208`](https://github.com/http-party/node-http-proxy/commit/ca732087498582df01ab78fb7da77912dab8f138)
+
+## [v1.11.1](https://github.com/http-party/node-http-proxy/compare/v1.11.0...v1.11.1) - 2015-04-22
+
+### Commits
+
+- [dist] Version bump. 1.11.1 [`7e6c66a`](https://github.com/http-party/node-http-proxy/commit/7e6c66a7e485a6c0ec3a1c567bbe800fdc56c9fd)
+- [fix] dont use bind in the one case we do [`d26ef56`](https://github.com/http-party/node-http-proxy/commit/d26ef56e1bc2a1232b06c01b4740e3bf35d63eda)
+- [dist] update to new version of EE3 [`607f96c`](https://github.com/http-party/node-http-proxy/commit/607f96c00cbda2a6b881b8ff1db05437dbf4ce77)
+- [fix] use the main export for EE3 [`18c77ca`](https://github.com/http-party/node-http-proxy/commit/18c77cafc7d5479502cf5c4d2b663d8f85cfd6d4)
+
+## [v1.11.0](https://github.com/http-party/node-http-proxy/compare/v1.10.1...v1.11.0) - 2015-04-20
+
+### Merged
+
+- [api] add an ignorePath option if you want to disregard the path of the ... [`#759`](https://github.com/http-party/node-http-proxy/pull/759)
+
+### Commits
+
+- [dist] Version bump. 1.11.0 [`934e6c4`](https://github.com/http-party/node-http-proxy/commit/934e6c4d54292a1b961452074e02fb5d45da729a)
+
+## [v1.10.1](https://github.com/http-party/node-http-proxy/compare/v1.10.0...v1.10.1) - 2015-04-02
+
+### Merged
+
+- Fix default port detection with node 0.12.x [`#799`](https://github.com/http-party/node-http-proxy/pull/799)
+
+### Commits
+
+- [dist] add semver and normalize package.json with --save-dev [`1b89bc9`](https://github.com/http-party/node-http-proxy/commit/1b89bc9a76c229070ff2572f7a0e1b969c4b4701)
+- fix protocol and default port detection on node 0.12.x, compatible with 0.10.x [`5f14bca`](https://github.com/http-party/node-http-proxy/commit/5f14bcaa704fe8a5e6f59d3a89722f22958cade9)
+- fix expected error message when node 0.12.x [`0ee314c`](https://github.com/http-party/node-http-proxy/commit/0ee314c436226391318b9a1b623cb3f7e8bf4df7)
+- force cipher AES128-GCM-SHA256 in https tests [`c33d161`](https://github.com/http-party/node-http-proxy/commit/c33d1616cdbd60587ca2eb326c48b8a87ac56092)
+- [fix] properly support iojs with test checking for HTTPS [`c6dfb04`](https://github.com/http-party/node-http-proxy/commit/c6dfb04a67f3b5ac9a402b7b08c1b8baf29f89e6)
+- [dist] Version bump. 1.10.1 [`0bd446c`](https://github.com/http-party/node-http-proxy/commit/0bd446c680e9991accfaa3a6a70e411fdac79164)
+- [ci] add 0.12 and iojs to travis [`a6ae6c4`](https://github.com/http-party/node-http-proxy/commit/a6ae6c499743ddade9db12b9f7404d980c79f683)
+
+## [v1.10.0](https://github.com/http-party/node-http-proxy/compare/v1.9.1...v1.10.0) - 2015-04-01
+
+### Merged
+
+- Fixes / additions to URL rewriting [`#787`](https://github.com/http-party/node-http-proxy/pull/787)
+
+### Commits
+
+- [dist] Version bump. 1.10.0 [`1dabda2`](https://github.com/http-party/node-http-proxy/commit/1dabda241f3b93eb9195134042e7a3b84fd0ef57)
+
+## [v1.9.1](https://github.com/http-party/node-http-proxy/compare/v1.9.0...v1.9.1) - 2015-04-01
+
+### Merged
+
+- Fix #747 [`#798`](https://github.com/http-party/node-http-proxy/pull/798)
+
+### Fixed
+
+- Merge pull request #798 from damonmcminn/master [`#747`](https://github.com/http-party/node-http-proxy/issues/747)
+- Fix https://github.com/nodejitsu/node-http-proxy/issues/747 [`#747`](https://github.com/nodejitsu/node-http-proxy/issues/747)
+
+### Commits
+
+- Add test for https://github.com/nodejitsu/node-http-proxy/issues/747 [`d145152`](https://github.com/http-party/node-http-proxy/commit/d145152655a69479348b0ebc726d4dc19720a12b)
+- [dist] Version bump. 1.9.1 [`21b30b7`](https://github.com/http-party/node-http-proxy/commit/21b30b754db4f6410c3d2052bc123b3fdae57c46)
+
+## [v1.9.0](https://github.com/http-party/node-http-proxy/compare/v1.8.1...v1.9.0) - 2015-03-12
+
+### Merged
+
+- Adding the nodejs0.12 auth option [`#792`](https://github.com/http-party/node-http-proxy/pull/792)
+- fix "x-forwarded-proto" in node 0.12 and iojs [`#789`](https://github.com/http-party/node-http-proxy/pull/789)
+- Add support for auto host rewriting and protocol rewriting [`#1`](https://github.com/http-party/node-http-proxy/pull/1)
+- changed highlighted part - very minor [`#756`](https://github.com/http-party/node-http-proxy/pull/756)
+- Update README.md for benchmarks [`#625`](https://github.com/http-party/node-http-proxy/pull/625)
+
+### Fixed
+
+- fix "x-forwarded-proto" in node 0.12 and iojs [`#772`](https://github.com/http-party/node-http-proxy/issues/772)
+- [api] add an ignorePath option if you want to disregard the path of the incoming request when proxying to the target server fixes #758 [`#758`](https://github.com/http-party/node-http-proxy/issues/758)
+
+### Commits
+
+- added auth header test [`df158bf`](https://github.com/http-party/node-http-proxy/commit/df158bfc53e35e62609d8169f3883f6dcf12b73c)
+- added auth header test [`ff1626f`](https://github.com/http-party/node-http-proxy/commit/ff1626f0719652c92895cf80f9aacc22ededadad)
+- refactor some tests for greater readability [`14415a5`](https://github.com/http-party/node-http-proxy/commit/14415a50741d1f258da884686455d87d68eb8121)
+- only rewrite redirect urls when it matches target [`26029ba`](https://github.com/http-party/node-http-proxy/commit/26029ba7ac948b5dc0befb2091cc9a5862d0641c)
+- auth header added [`ab5c3e5`](https://github.com/http-party/node-http-proxy/commit/ab5c3e5c819ca993e0616d178bc1d282af539508)
+- [dist] Version bump. 1.9.0 [`87a92a7`](https://github.com/http-party/node-http-proxy/commit/87a92a72802a27f817fcba87382d55831fd04ddb)
+- end of file line space [`e907d7b`](https://github.com/http-party/node-http-proxy/commit/e907d7bb2aa2825b43d9355cb1ee25bec47b15ad)
+- space instead of tabs [`7298510`](https://github.com/http-party/node-http-proxy/commit/7298510e9170d74ff057487085bc1e898f044177)
+- space instead of tabs [`63c9262`](https://github.com/http-party/node-http-proxy/commit/63c9262df5bd04d83432db44fce2a4d5b19a59ea)
+- auth header added tests [`f55ffa3`](https://github.com/http-party/node-http-proxy/commit/f55ffa356a259c09685c6b768a404e4b73f674ce)
+
+## [v1.8.1](https://github.com/http-party/node-http-proxy/compare/v1.8.0...v1.8.1) - 2014-12-17
+
+### Commits
+
+- Pass HTTPS client parameters. [`402ab05`](https://github.com/http-party/node-http-proxy/commit/402ab057340a29db7a521ff239c5e21ac0c12be8)
+- [dist] Version bump. 1.8.1 [`3311106`](https://github.com/http-party/node-http-proxy/commit/3311106c2c2346f3ac1ffe402b80bca3c7c59275)
+
+## [v1.8.0](https://github.com/http-party/node-http-proxy/compare/v1.7.3...v1.8.0) - 2014-12-17
+
+### Merged
+
+- Fix variables scope in test [`#752`](https://github.com/http-party/node-http-proxy/pull/752)
+- Fix typo [`#751`](https://github.com/http-party/node-http-proxy/pull/751)
+
+### Commits
+
+- Added websocket close event test [`8bff3dd`](https://github.com/http-party/node-http-proxy/commit/8bff3ddc1276e3ba18fd68c34d8982148cd21455)
+- Deprecated proxySocket event in favor to open event. [`c62610e`](https://github.com/http-party/node-http-proxy/commit/c62610e8e4d59e8ba4642370ff3fb933c6ddb4eb)
+- Update README.md [`05d18a4`](https://github.com/http-party/node-http-proxy/commit/05d18a4e1ba6c2de41b0b803cd1793357979384d)
+- [fix] style spacing wtf [`ea0a4de`](https://github.com/http-party/node-http-proxy/commit/ea0a4ded803b30144e442344ad5a38a0d34bb3ba)
+- [api] add close event in ws-incoming.js [`2653786`](https://github.com/http-party/node-http-proxy/commit/26537866b3ca522927aa4604a958f90774c0c0c0)
+- [minor] grammar [`f304861`](https://github.com/http-party/node-http-proxy/commit/f30486195cfa6cfcf6400ac445975d5adada72e4)
+- Changed proxyServer and destiny to local variables. [`8a8a894`](https://github.com/http-party/node-http-proxy/commit/8a8a894092ddbec8f0365ced0e94a75b1307ecf1)
+- [dist] Version bump. 1.8.0 [`f0db5b3`](https://github.com/http-party/node-http-proxy/commit/f0db5b3f708b0858f617d472dfdd0ba211b774ef)
+
+## [v1.7.3](https://github.com/http-party/node-http-proxy/compare/v1.7.2...v1.7.3) - 2014-12-09
+
+### Fixed
+
+- [fix] use simple regex instead of indexOf to check the protocol to support without the colon fixes #711 [`#711`](https://github.com/http-party/node-http-proxy/issues/711)
+
+### Commits
+
+- [test] show that we support protocol without the colon [`89f9ca1`](https://github.com/http-party/node-http-proxy/commit/89f9ca1e89d679b2b85a8f85b65e8b0878694207)
+- [dist] Version bump. 1.7.3 [`6a330ff`](https://github.com/http-party/node-http-proxy/commit/6a330ff904d02a41f9a1cac338a98da1849c54ca)
+
+## [v1.7.2](https://github.com/http-party/node-http-proxy/compare/v1.7.1...v1.7.2) - 2014-12-08
+
+### Merged
+
+- Fix grammar in README.md [`#749`](https://github.com/http-party/node-http-proxy/pull/749)
+
+### Fixed
+
+- [fix] properly include port in host header with changeOrigin in all cases fixes #750 [`#750`](https://github.com/http-party/node-http-proxy/issues/750)
+
+### Commits
+
+- [test] add tests for the changeOrigin cases in properly setting the host header [`71a06aa`](https://github.com/http-party/node-http-proxy/commit/71a06aab0249487ff650c8a47906cc8281561664)
+- [dist] pin down deps and add requires-port [`81874f7`](https://github.com/http-party/node-http-proxy/commit/81874f795b7df7929e03d9d4cb98a947b1ef114b)
+- [dist] Version bump. 1.7.2 [`2086e49`](https://github.com/http-party/node-http-proxy/commit/2086e4917c97f347f84c54b166799bc8db9f4162)
+
+## [v1.7.1](https://github.com/http-party/node-http-proxy/compare/v1.7.0...v1.7.1) - 2014-12-02
+
+### Merged
+
+- Adding harmon to the README [`#716`](https://github.com/http-party/node-http-proxy/pull/716)
+
+### Fixed
+
+- [fix] fix #738 [`#738`](https://github.com/http-party/node-http-proxy/issues/738)
+- [fix] simple fixes #748 #744 #746 [`#748`](https://github.com/http-party/node-http-proxy/issues/748)
+
+### Commits
+
+- [test] add proper failing test case for #738 [`410a8ce`](https://github.com/http-party/node-http-proxy/commit/410a8ce94ccea566a8e50daf3b78e633b82875cb)
+- [Bugfix] Allow for multiple ? in outgoing urls. [`70ed1c4`](https://github.com/http-party/node-http-proxy/commit/70ed1c4273bc64500e8bae9b60d7fd6a19135246)
+- [dist] Version bump. 1.7.1 [`56a7b77`](https://github.com/http-party/node-http-proxy/commit/56a7b77645b13d337c1a2f879460193d310454c8)
+
+## [v1.7.0](https://github.com/http-party/node-http-proxy/compare/v1.6.2...v1.7.0) - 2014-11-25
+
+### Merged
+
+- Allow optional redirect host rewriting. [`#741`](https://github.com/http-party/node-http-proxy/pull/741)
+- Set `Content-Length` header for OPTIONS requests [`#742`](https://github.com/http-party/node-http-proxy/pull/742)
+- copy headers instead of referencing them so they don't unexpectedly get overwritten [`#736`](https://github.com/http-party/node-http-proxy/pull/736)
+- Updated to support error callback on proxy.web and start/proxyReq/end co... [`#735`](https://github.com/http-party/node-http-proxy/pull/735)
+
+### Commits
+
+- :pencil: Add host rewrite docs and specs. [`add8133`](https://github.com/http-party/node-http-proxy/commit/add81338a90dae132f9e74fd5a5905fbcef030b7)
+- [minor] style consistency [`48ae5d8`](https://github.com/http-party/node-http-proxy/commit/48ae5d828c23d6f19c9e2dd8c922d88a09f5ed0f)
+- Updated to support error callback on proxy.web and start/proxyReq/end continue working. [`9ba8311`](https://github.com/http-party/node-http-proxy/commit/9ba8311343fd01b32505b8607ecf4294200f9dde)
+- style changes [`84036e9`](https://github.com/http-party/node-http-proxy/commit/84036e9ddd1d4d925006c5438b3bcc0f17ba7a48)
+- [fix] be defensive and ensure location is in headers before running url.parse() [`8d68ac0`](https://github.com/http-party/node-http-proxy/commit/8d68ac0e0fa3080b31580aa08e92a46cc1f27696)
+- [dist] Version bump. 1.7.0 [`276f65a`](https://github.com/http-party/node-http-proxy/commit/276f65a3b810ded01757ec4bfd4fe2b00a1e66a8)
+
+## [v1.6.2](https://github.com/http-party/node-http-proxy/compare/v1.6.1...v1.6.2) - 2014-11-11
+
+### Merged
+
+- do not modify the query string [`#733`](https://github.com/http-party/node-http-proxy/pull/733)
+
+### Commits
+
+- [fix] style changes [`7c5e40a`](https://github.com/http-party/node-http-proxy/commit/7c5e40a429fbc0c538f38d29d74acb633cb9b8d4)
+- [minor] this shouldnt be in var block [`3f19e6e`](https://github.com/http-party/node-http-proxy/commit/3f19e6e178e168a16beee74186691f3e0e54d517)
+- [dist] Version bump. 1.6.2 [`709b3e9`](https://github.com/http-party/node-http-proxy/commit/709b3e96560d619fab2617f9ddb902b4982b4103)
+
+## [v1.6.1](https://github.com/http-party/node-http-proxy/compare/v1.6.0...v1.6.1) - 2014-11-04
+
+### Merged
+
+- websocket needs to respect `options.secure` too [`#729`](https://github.com/http-party/node-http-proxy/pull/729)
+- changeOrigin option docs fix [`#724`](https://github.com/http-party/node-http-proxy/pull/724)
+
+### Commits
+
+- [dist] Version bump. 1.6.1 [`fa797fc`](https://github.com/http-party/node-http-proxy/commit/fa797fca900c10ebc848a2b445204b47da799483)
+
+## [v1.6.0](https://github.com/http-party/node-http-proxy/compare/v1.5.3...v1.6.0) - 2014-10-29
+
+### Merged
+
+- Added changeOrigin option with test and docs [`#723`](https://github.com/http-party/node-http-proxy/pull/723)
+- I presume you mean couchdb here [`#717`](https://github.com/http-party/node-http-proxy/pull/717)
+- update modify request body eg [`#712`](https://github.com/http-party/node-http-proxy/pull/712)
+
+### Commits
+
+- harmon notes [`9f684d0`](https://github.com/http-party/node-http-proxy/commit/9f684d0439174d889d7b9a4ef6e2353e09481b2d)
+- [dist] Version bump. 1.6.0 [`43641b0`](https://github.com/http-party/node-http-proxy/commit/43641b00b34ccc05bdf09f904695061d7c857aeb)
+
+## [v1.5.3](https://github.com/http-party/node-http-proxy/compare/v1.5.2...v1.5.3) - 2014-10-01
+
+### Merged
+
+- close socket if upstream request fails [`#709`](https://github.com/http-party/node-http-proxy/pull/709)
+
+### Commits
+
+- [dist] Version bump. 1.5.3 [`9577a0f`](https://github.com/http-party/node-http-proxy/commit/9577a0faf2b78af606168673407ac47a851c084c)
+
+## [v1.5.2](https://github.com/http-party/node-http-proxy/compare/v1.5.1...v1.5.2) - 2014-10-01
+
+### Merged
+
+- close websocket if proxyReq is closed before upgrade [`#708`](https://github.com/http-party/node-http-proxy/pull/708)
+
+### Commits
+
+- test closing upstream socket prior to upgrade [`7730548`](https://github.com/http-party/node-http-proxy/commit/77305489d9b88d283802477e155340e5dacfcc2c)
+- [dist] Version bump. 1.5.2 [`43c6f0c`](https://github.com/http-party/node-http-proxy/commit/43c6f0c7c06d25a670c410500a8623531df458b1)
+
+## [v1.5.1](https://github.com/http-party/node-http-proxy/compare/v1.5.0...v1.5.1) - 2014-09-30
+
+### Commits
+
+- [fix] do a check to make sure the server exists before we try and emit [`10a294a`](https://github.com/http-party/node-http-proxy/commit/10a294af4d4baac30b98ea9bec683a974443b83d)
+- [dist] Version bump. 1.5.1 [`f0bf741`](https://github.com/http-party/node-http-proxy/commit/f0bf7418156db2cb87a616b0a34bb1f028db9142)
+
+## [v1.5.0](https://github.com/http-party/node-http-proxy/compare/v1.4.3...v1.5.0) - 2014-09-30
+
+### Merged
+
+- exposing proxySocket on socket to support sniffing messages coming from proxy target [`#706`](https://github.com/http-party/node-http-proxy/pull/706)
+- Fixed misleading documentation [`#705`](https://github.com/http-party/node-http-proxy/pull/705)
+- Fix typo in README.md [`#702`](https://github.com/http-party/node-http-proxy/pull/702)
+- handle 'upgrade' in comma-separated connection header [`#691`](https://github.com/http-party/node-http-proxy/pull/691)
+
+### Commits
+
+- test new detection of connection: upgrade [`ec683b9`](https://github.com/http-party/node-http-proxy/commit/ec683b924b1ef8cbdd2cd2bfb7e141b502773163)
+- emitting proxySocket on proxyServer [`000eb53`](https://github.com/http-party/node-http-proxy/commit/000eb533de144cad01cfd97edf9ab6c350593d3c)
+- [fix] perf optimization so we have a precompiled regexp [`c0a796b`](https://github.com/http-party/node-http-proxy/commit/c0a796b3e31de4f22eef00d93164e7238d9aa3ba)
+- use regex to check for upgrade header [`65a21bc`](https://github.com/http-party/node-http-proxy/commit/65a21bce6dbbc6142a851dc959e237c0ef2b1091)
+- [dist] Version bump. 1.5.0 [`232258b`](https://github.com/http-party/node-http-proxy/commit/232258b6ec2229497fe557454a121d917968f5e8)
+- [minor] extra space [`e7d50b1`](https://github.com/http-party/node-http-proxy/commit/e7d50b1a376035a50c82db38605e99feb30afd36)
+
+## [v1.4.3](https://github.com/http-party/node-http-proxy/compare/v1.4.2...v1.4.3) - 2014-09-12
+
+### Merged
+
+- Urgent: Fix breaking bug on url joining resulting in paths like `///path`. [`#699`](https://github.com/http-party/node-http-proxy/pull/699)
+
+### Commits
+
+- [minor] Added missing JSDoc comments [`73e8a4c`](https://github.com/http-party/node-http-proxy/commit/73e8a4cdd576868bf61d0848cc51f083a75454f9)
+- Fix breaking bug on url joining resulting in paths like `///path`. [`73d865b`](https://github.com/http-party/node-http-proxy/commit/73d865bc9f8940f61c1ad4812f220920ead553b5)
+- [minor] Code style adjustment. [`3ab6e95`](https://github.com/http-party/node-http-proxy/commit/3ab6e9591e66c203647605b4f275d374472c9d5f)
+- Bump version v1.4.3 [`554f59c`](https://github.com/http-party/node-http-proxy/commit/554f59c5182d58b359df0159a29ff5ea35dd3830)
+- [ignore] Ignore npm-debug.log [`a934cb6`](https://github.com/http-party/node-http-proxy/commit/a934cb6a46298c380e9bc794f18873576cf73c4c)
+
+## [v1.4.2](https://github.com/http-party/node-http-proxy/compare/v1.4.1...v1.4.2) - 2014-09-12
+
+### Commits
+
+- [fix] ensure path works on windows because path.join doesnt like URLs [`ed73f06`](https://github.com/http-party/node-http-proxy/commit/ed73f06ed307ad2204e565781cc3154047941a8c)
+- [dist] Version bump. 1.4.2 [`df12aeb`](https://github.com/http-party/node-http-proxy/commit/df12aeb12de79de1157898d45f4347fd0037dd70)
+
+## [v1.4.1](https://github.com/http-party/node-http-proxy/compare/v1.3.1...v1.4.1) - 2014-09-11
+
+### Merged
+
+- Trimming contents of distributed npm package. [`#644`](https://github.com/http-party/node-http-proxy/pull/644)
+- Remove changelog - it was not maintained [`#669`](https://github.com/http-party/node-http-proxy/pull/669)
+- Removed duplicated imported dependencies [`#695`](https://github.com/http-party/node-http-proxy/pull/695)
+
+### Commits
+
+- [test] add test for prependPath option [`e44fabe`](https://github.com/http-party/node-http-proxy/commit/e44fabe58a233b367d42f26f15113e2022f71d7b)
+- [api] add prependPath option to go with path change [`9a534c6`](https://github.com/http-party/node-http-proxy/commit/9a534c6ff63d776140918bc839801d247affd18d)
+- [dist] Version bump. 1.4.1 [`d5c656b`](https://github.com/http-party/node-http-proxy/commit/d5c656bceb50dc9008ef223bc58b918adcf05352)
+- [dist] Version bump. 1.4.0 [`dceef40`](https://github.com/http-party/node-http-proxy/commit/dceef407a1130033679e7e836c6753b76187ce5f)
+
+## [v1.3.1](https://github.com/http-party/node-http-proxy/compare/v1.3.0...v1.3.1) - 2014-09-09
+
+### Merged
+
+- Allow proxy to maintain the original target path [`#693`](https://github.com/http-party/node-http-proxy/pull/693)
+- Clarify usable parameters for 'proxyRes' event [`#686`](https://github.com/http-party/node-http-proxy/pull/686)
+
+### Commits
+
+- fix tests for maintaining proxy path [`a65021d`](https://github.com/http-party/node-http-proxy/commit/a65021d52b0ee039486819b5a95f442229458776)
+- Fix proxy path [`511b7b3`](https://github.com/http-party/node-http-proxy/commit/511b7b3d4743636de9d9fbe8ff409730d221d273)
+- Clarify usable parameters for proxyRes event. [`49a0de1`](https://github.com/http-party/node-http-proxy/commit/49a0de1e7cdcec9b555695605ab914038f99d66b)
+- [dist] Version bump. 1.3.1 [`fc73828`](https://github.com/http-party/node-http-proxy/commit/fc73828035baf3cea3664560f8964f2a2a200d0a)
+- [ci] remove 0.11.x to avoid failing builds caused by TLS errors [`6b83ae4`](https://github.com/http-party/node-http-proxy/commit/6b83ae47bbf2d5eab8ac94b4d6130e09a21ac85b)
+
+## [v1.3.0](https://github.com/http-party/node-http-proxy/compare/v1.2.1...v1.3.0) - 2014-08-14
+
+### Merged
+
+- Added functionality to close proxy. [`#679`](https://github.com/http-party/node-http-proxy/pull/679)
+
+### Commits
+
+- [fix] cleanup and stylize close function [`261742a`](https://github.com/http-party/node-http-proxy/commit/261742a4295268ef93f45aa0f1e3a04208a2aed3)
+- updated close function for safety [`8be9d94`](https://github.com/http-party/node-http-proxy/commit/8be9d945d03169056bbf84d702292b5763b015dc)
+- [dist] Version bump. 1.3.0 [`05f0b89`](https://github.com/http-party/node-http-proxy/commit/05f0b891a610fb7779f90916fcd9ed750df818b2)
+
+## [v1.2.1](https://github.com/http-party/node-http-proxy/compare/v1.2.0...v1.2.1) - 2014-08-14
+
+### Commits
+
+- Added close method to proxy server. [`a3d0219`](https://github.com/http-party/node-http-proxy/commit/a3d02196c5e62cd58bc0ebe8a66afcdb905d96b3)
+- [fix] emit an error if proper URL is not passed in as a target [`37036dd`](https://github.com/http-party/node-http-proxy/commit/37036dd32565f72ad5777e47509293db18b60ed3)
+- [dist] Version bump. 1.2.1 [`0a6b424`](https://github.com/http-party/node-http-proxy/commit/0a6b424e2c3b6cef68362a71f0e56740b2605af7)
+
+## [v1.2.0](https://github.com/http-party/node-http-proxy/compare/v1.1.6...v1.2.0) - 2014-08-05
+
+### Merged
+
+- [api] Add event-based ability to modify pre-flight proxy requests. [`#673`](https://github.com/http-party/node-http-proxy/pull/673)
+
+### Commits
+
+- [dist] Version bump. 1.2.0 [`63c53a1`](https://github.com/http-party/node-http-proxy/commit/63c53a177217283ec14e4f7c2e891db48842ab4b)
+
+## [v1.1.6](https://github.com/http-party/node-http-proxy/compare/v1.1.5...v1.1.6) - 2014-07-17
+
+### Fixed
+
+- do proper checking for a pass not existing. fixes #671 [`#671`](https://github.com/http-party/node-http-proxy/issues/671)
+
+### Commits
+
+- Remove changelog - it was not maintained [`e336b52`](https://github.com/http-party/node-http-proxy/commit/e336b52629276e647abeee300d7091db44e5b885)
+- [dist] Version bump. 1.1.6 [`ed9e12b`](https://github.com/http-party/node-http-proxy/commit/ed9e12b0edb0fc206610e94bd696425619868474)
+
+## [v1.1.5](https://github.com/http-party/node-http-proxy/compare/v1.1.4...v1.1.5) - 2014-07-10
+
+### Merged
+
+- Fix simple-balancer example [`#666`](https://github.com/http-party/node-http-proxy/pull/666)
+- Added proxyTimeout option and two tests for timeout [`#658`](https://github.com/http-party/node-http-proxy/pull/658)
+
+### Fixed
+
+- Fix #657 [`#657`](https://github.com/http-party/node-http-proxy/issues/657)
+- Fix #657 [`#657`](https://github.com/http-party/node-http-proxy/issues/657)
+
+### Commits
+
+- Added targetTimeout option and two tests for timeout [`0f24351`](https://github.com/http-party/node-http-proxy/commit/0f243516e1c6737b95fba220a5028439264b5de6)
+- Change name targetTimeout to proxyTimeout [`7b79a74`](https://github.com/http-party/node-http-proxy/commit/7b79a7409ade7a8c79b2ae5761abc4843529063a)
+- Trimming contents of distributed npm package. [`431aba7`](https://github.com/http-party/node-http-proxy/commit/431aba79d8d521e228c1403aaf4fd4a26fba03c3)
+- [api] also emit the target on a proxy error [`d1baa36`](https://github.com/http-party/node-http-proxy/commit/d1baa3684e449610a2aae270816a7b8a907e588e)
+- [dist] Version bump. 1.1.5 [`7104a7c`](https://github.com/http-party/node-http-proxy/commit/7104a7c023073a49091969f825738c79ae036123)
+- fix balancer example [`9df4bc1`](https://github.com/http-party/node-http-proxy/commit/9df4bc1e1216a8e53675f0be16fb9081c11da225)
+
+## [v1.1.4](https://github.com/http-party/node-http-proxy/compare/v1.1.3...v1.1.4) - 2014-05-11
+
+### Merged
+
+- `proxyRes` event, provide access to the req and res objects [`#642`](https://github.com/http-party/node-http-proxy/pull/642)
+
+### Commits
+
+- Add a test for the proxyRes event [`1385635`](https://github.com/http-party/node-http-proxy/commit/1385635e18f081af759c8e088f2f6b0219df83db)
+- [dist] Version bump. 1.1.4 [`7cb98a4`](https://github.com/http-party/node-http-proxy/commit/7cb98a4e417312f01cf4432b52dbb3773aca60a0)
+- Add the req and res objects to the proxyRes event [`1213e46`](https://github.com/http-party/node-http-proxy/commit/1213e46b1b0975ad1d5c5d0aaeace40a0811118f)
+
+## [v1.1.3](https://github.com/http-party/node-http-proxy/compare/v1.1.2...v1.1.3) - 2014-05-11
+
+### Merged
+
+- Don't override connection header if Upgrading [`#640`](https://github.com/http-party/node-http-proxy/pull/640)
+
+### Commits
+
+- Adding test cases on preventing upgrade override [`8aa7c51`](https://github.com/http-party/node-http-proxy/commit/8aa7c519b15f734af7db34d2102781adbeae10aa)
+- Update README.md for benchmarks [`4947484`](https://github.com/http-party/node-http-proxy/commit/4947484806f839d5e0a1b615b56a1bc847b8f534)
+- [minor] style [`ccad177`](https://github.com/http-party/node-http-proxy/commit/ccad17795417de74bea2bcb6d6c559a4601af76d)
+- [dist] Version bump. 1.1.3 [`c472527`](https://github.com/http-party/node-http-proxy/commit/c472527ea60da8b2f737d5742bc61ad2772b7e0b)
+
+## [v1.1.2](https://github.com/http-party/node-http-proxy/compare/v1.1.1...v1.1.2) - 2014-04-14
+
+### Commits
+
+- [fix test] handle proxy error since we are properly aborting the proxy Request [`61c8734`](https://github.com/http-party/node-http-proxy/commit/61c8734e8b1115fab0e0db23fd8eeccbae61eee0)
+- [fix] handle error on incoming request as well and properly abort proxy if client request is aborted [`77a1cff`](https://github.com/http-party/node-http-proxy/commit/77a1cff9bcf697eab27819eef054024bdc0a2ba3)
+- [dist] Version bump. 1.1.2 [`c54278b`](https://github.com/http-party/node-http-proxy/commit/c54278bd3b00e82f4253393b6f6beb1d5a1b19e5)
+
+## [v1.1.1](https://github.com/http-party/node-http-proxy/compare/v1.1.0...v1.1.1) - 2014-04-11
+
+### Commits
+
+- [dist] Version bump. 1.1.1 [`d908e2a`](https://github.com/http-party/node-http-proxy/commit/d908e2ad61013ed1f6e2f80c4b67a6dce7d0f504)
+- [fix] let user make the decision on what to do with the buffer [`4f07dc2`](https://github.com/http-party/node-http-proxy/commit/4f07dc220d700ac90bd8405f7cb0724bdae4b430)
+
+## [v1.1.0](https://github.com/http-party/node-http-proxy/compare/v1.0.3...v1.1.0) - 2014-04-09
+
+### Merged
+
+- Update UPGRADING.md [`#616`](https://github.com/http-party/node-http-proxy/pull/616)
+
+### Fixed
+
+- [fix] always be an eventemitter for consistency fixes #606 [`#606`](https://github.com/http-party/node-http-proxy/issues/606)
+
+### Commits
+
+- [api] emit a start an an end event [`8b48a9f`](https://github.com/http-party/node-http-proxy/commit/8b48a9fdab01624f7249c53f25919b1295eefb10)
+- [dist] Version bump. 1.1.0 [`97ceeb3`](https://github.com/http-party/node-http-proxy/commit/97ceeb37d04e5d2195352365985165866323c4d7)
+- [minor] missing angle bracket [`eca765a`](https://github.com/http-party/node-http-proxy/commit/eca765a856164c077ff9128949019552cdaf9a67)
+
+## [v1.0.3](https://github.com/http-party/node-http-proxy/compare/v1.0.2...v1.0.3) - 2014-03-27
+
+### Merged
+
+- Fix for #591 [`#592`](https://github.com/http-party/node-http-proxy/pull/592)
+- Add Repository field to package.json [`#578`](https://github.com/http-party/node-http-proxy/pull/578)
+- Fix doc: option lines [`#575`](https://github.com/http-party/node-http-proxy/pull/575)
+
+### Fixed
+
+- [api] add toProxy method to allow absolute URLs to be sent when sending to another proxy fixes #603 [`#603`](https://github.com/http-party/node-http-proxy/issues/603)
+
+### Commits
+
+- [doc] update docs with toProxy option [`ece85b4`](https://github.com/http-party/node-http-proxy/commit/ece85b4e1ba379b3ed084bd8f606e285c14d4db3)
+- [fix] set connection to CLOSE in cases where the agent is false. [`89a22bc`](https://github.com/http-party/node-http-proxy/commit/89a22bc00396f069eeb054ce30891a204077d16d)
+- @xtreme-topher-bullock - update package.json to have proper repository key and formatting [`68fa17b`](https://github.com/http-party/node-http-proxy/commit/68fa17bbcaa73ae2d9539cba6f6ddff29f9e30d5)
+- [dist] Version bump. 1.0.3 [`07fceb7`](https://github.com/http-party/node-http-proxy/commit/07fceb7c7aed25a8991d0295db4b4a7e50d79cf9)
+- Add support for localAddress [`e633b0f`](https://github.com/http-party/node-http-proxy/commit/e633b0f7e4fd719d809eaeb4725e589f79c271ab)
+
+## [v1.0.2](https://github.com/http-party/node-http-proxy/compare/v1.0.1...v1.0.2) - 2014-01-28
+
+### Merged
+
+- Update README.md [`#566`](https://github.com/http-party/node-http-proxy/pull/566)
+- Fix argument order for ws stream pass [`#560`](https://github.com/http-party/node-http-proxy/pull/560)
+- Extend listen to enable IPv6 support. [`#558`](https://github.com/http-party/node-http-proxy/pull/558)
+- Fix before and after type check [`#556`](https://github.com/http-party/node-http-proxy/pull/556)
+
+### Fixed
+
+- Close outgoing ws if incoming ws emits error [`#559`](https://github.com/http-party/node-http-proxy/issues/559)
+- [fix] closes #555 [`#555`](https://github.com/http-party/node-http-proxy/issues/555)
+
+### Commits
+
+- [fix] replicate node core behavior and throw an error if the user does not add their own error listener [`daad470`](https://github.com/http-party/node-http-proxy/commit/daad4703f3a80014936c89f4d67affdc3246f478)
+- [dist] Version bump. 1.0.2 [`4bdc3e4`](https://github.com/http-party/node-http-proxy/commit/4bdc3e4f455b2749c03961404db74e3112a3e9e8)
+- [doc] Fix broken image in npm by using an absolute link [`8004f4e`](https://github.com/http-party/node-http-proxy/commit/8004f4e5fc0f535806e92ec4e1bd973a45367dac)
+
+## [v1.0.1](https://github.com/http-party/node-http-proxy/compare/v1.0.0...v1.0.1) - 2014-01-17
+
+### Fixed
+
+- [fix] closes #553 [`#553`](https://github.com/http-party/node-http-proxy/issues/553)
+
+### Commits
+
+- [dist] bump v1.0.1 [`68c5512`](https://github.com/http-party/node-http-proxy/commit/68c55123039369cdf8a55a64b36b719c96b672cf)
+- typo [`689459f`](https://github.com/http-party/node-http-proxy/commit/689459fe46885a1b3b8e32a4df55f2d1339143e5)
+
+## [v1.0.0](https://github.com/http-party/node-http-proxy/compare/v0.10.4...v1.0.0) - 2014-01-16
+
+### Merged
+
+- Http proxy 1.0 [`#552`](https://github.com/http-party/node-http-proxy/pull/552)
+- Caronte [`#551`](https://github.com/http-party/node-http-proxy/pull/551)
+- Only emit response if a valid server is present [`#549`](https://github.com/http-party/node-http-proxy/pull/549)
+- [fix] add `type` to before and after to grab correct `passes`, fixes #537 [`#539`](https://github.com/http-party/node-http-proxy/pull/539)
+- export the proxy itself from the main require [`#536`](https://github.com/http-party/node-http-proxy/pull/536)
+
+### Fixed
+
+- [fix] closes #547 [`#547`](https://github.com/http-party/node-http-proxy/issues/547)
+- Merge pull request #539 from nodejitsu/fix-before-after [`#537`](https://github.com/http-party/node-http-proxy/issues/537)
+- [fix] add `type` to before and after to grab correct `passes`, fixes #537 [`#537`](https://github.com/http-party/node-http-proxy/issues/537)
+
+### Commits
+
+- [nuke] old files [`a4ee8f9`](https://github.com/http-party/node-http-proxy/commit/a4ee8f9d82f71ef423c401b1f5e9f712b13cbc98)
+- [docs] upgrade UPGRADING.md [`e599151`](https://github.com/http-party/node-http-proxy/commit/e5991519dbc7838aa4b8aeb5077d1c1ec5a13813)
+- [api] export the httpProxy.Server as the main export but preserve the createServer factory [`182c76c`](https://github.com/http-party/node-http-proxy/commit/182c76cd2322d4d4c041c2a964d51db396c5c96b)
+- [fix] remove caronte [`d6d2d0c`](https://github.com/http-party/node-http-proxy/commit/d6d2d0c8821bba9888eee7c3881fc408b3b2008e)
+- [fix] ee3 error handling [`d23353d`](https://github.com/http-party/node-http-proxy/commit/d23353d980d8aa1b2606e3d36a83d27432952bef)
+- [fix] comments [`6fa23e1`](https://github.com/http-party/node-http-proxy/commit/6fa23e11f6dc0b9c09766b268611ade919bfaa08)
+
+## [v0.10.4](https://github.com/http-party/node-http-proxy/compare/v0.10.3...v0.10.4) - 2013-12-27
+
+### Merged
+
+- Update README.md [`#521`](https://github.com/http-party/node-http-proxy/pull/521)
+- Better examples [`#520`](https://github.com/http-party/node-http-proxy/pull/520)
+- Send path in req.path and not the url [`#416`](https://github.com/http-party/node-http-proxy/pull/416)
+- Fix websocket error handing [`#518`](https://github.com/http-party/node-http-proxy/pull/518)
+- attempting to fix links to 2 source locations in README.md [`#502`](https://github.com/http-party/node-http-proxy/pull/502)
+- [merge] rename codename to actual project name [`#492`](https://github.com/http-party/node-http-proxy/pull/492)
+- [merge] Added error handling example [`#484`](https://github.com/http-party/node-http-proxy/pull/484)
+- [merge] https & agent [`#482`](https://github.com/http-party/node-http-proxy/pull/482)
+- [merge] caronte tests [`#476`](https://github.com/http-party/node-http-proxy/pull/476)
+- FIX: ws error event [`#475`](https://github.com/http-party/node-http-proxy/pull/475)
+- Fix accidental write to global variable. [`#472`](https://github.com/http-party/node-http-proxy/pull/472)
+- [fix] 2 spelling mistakes [`#14`](https://github.com/http-party/node-http-proxy/pull/14)
+- [fix] add ability to proxy websockets over HTTPS [`#11`](https://github.com/http-party/node-http-proxy/pull/11)
+- Tests [`#3`](https://github.com/http-party/node-http-proxy/pull/3)
+
+### Fixed
+
+- determine x-forwarded-port from host header [`#341`](https://github.com/http-party/node-http-proxy/issues/341)
+- [fix] closes #529 [`#529`](https://github.com/http-party/node-http-proxy/issues/529)
+- [fix] fixes #341 [`#341`](https://github.com/http-party/node-http-proxy/issues/341)
+- [tests] https test pass, fix #511. Exposed the rejectUnauthorized flag [`#511`](https://github.com/http-party/node-http-proxy/issues/511)
+- [fix] pass proper options object that extend the global options and parse the per proxy args into options. fixes #510 [`#510`](https://github.com/http-party/node-http-proxy/issues/510)
+- [readme] add links to badges on readme, fix #483 [`#483`](https://github.com/http-party/node-http-proxy/issues/483)
+- [fix] pooled connections, closes #478 [`#478`](https://github.com/http-party/node-http-proxy/issues/478)
+- [fix] add 0.10 link, fixes #459 [`#459`](https://github.com/http-party/node-http-proxy/issues/459)
+- [fix] closes #473 [`#473`](https://github.com/http-party/node-http-proxy/issues/473)
+- [fix] add 0.10 compatibily.. closes #474 [`#474`](https://github.com/http-party/node-http-proxy/issues/474)
+- [fix] headers, closes #469 [`#469`](https://github.com/http-party/node-http-proxy/issues/469)
+- [fix] headers, fixes #467 [`#467`](https://github.com/http-party/node-http-proxy/issues/467)
+- [fix] yawnt baaaka .. fixes #8 [`#8`](https://github.com/http-party/node-http-proxy/issues/8)
+
+### Commits
+
+- [fix] more jshint intendation [`17399e7`](https://github.com/http-party/node-http-proxy/commit/17399e7c3ef9addf9dd8f7c628b273e693f128a1)
+- [fix] tests [`a255f98`](https://github.com/http-party/node-http-proxy/commit/a255f984fecf24c9290f3ad58d1b68e54a7509eb)
+- [minor] remove coverage [`335af81`](https://github.com/http-party/node-http-proxy/commit/335af81d0244e62ecb501690bd15bc5a04ec51a3)
+- [examples] updated websockets examples [`ed8c9ee`](https://github.com/http-party/node-http-proxy/commit/ed8c9eeba99d60f39f5c36c4f34ed1a781d2cfd8)
+- [tests] removed unused tests [`7e25bde`](https://github.com/http-party/node-http-proxy/commit/7e25bded27effc1b3d47121ce21465a4e2ec7c0b)
+- [tests] Added a test case for run all the examples [`bc236d7`](https://github.com/http-party/node-http-proxy/commit/bc236d7e95ef10bc17cf551eea2cd2fb9bf265eb)
+- [tests] drop the test of own streams, moved the usable tests [`dc9d7e5`](https://github.com/http-party/node-http-proxy/commit/dc9d7e5452c7d39ae1d242cb8021ca75e4f736d4)
+- [fix] default port [`d166354`](https://github.com/http-party/node-http-proxy/commit/d1663549ec070e7ae8bc45ffb148f40ee903192f)
+- [tests] added the ws passes test and the streams webscokets test [`8b3fe32`](https://github.com/http-party/node-http-proxy/commit/8b3fe32f6ae60ae067bc5e40cdc43015e689467f)
+- [refactor minor] s/caronte/http-proxy/ or s/caronte/httpProxy/ where appropriate. [`bb0d28c`](https://github.com/http-party/node-http-proxy/commit/bb0d28c58729e2cc70e8446f7fbf1113a6fa9310)
+- [examples] updated bodyDecoder middleware example [`c82ff2c`](https://github.com/http-party/node-http-proxy/commit/c82ff2c3c0c0165421fbc4e7e94fa3f59d59aa38)
+- [dist] first [`4d13156`](https://github.com/http-party/node-http-proxy/commit/4d131567211bcefc6ef0b0592d374fef7bd5abd8)
+- [examples] update forward and custom error examples [`b726116`](https://github.com/http-party/node-http-proxy/commit/b7261161343c3471201d6de36ba1030aced26425)
+- [refactor docs] add descriptions [`d05af4a`](https://github.com/http-party/node-http-proxy/commit/d05af4af60a5f3d308aa68bf09ab0cf9e5528c52)
+- [tests] make the tests run with the last refactor [`5bb83b9`](https://github.com/http-party/node-http-proxy/commit/5bb83b967edb514402698eecfe3db7ab5fe60b06)
+- [examples] deleted this examples [`bdeabb7`](https://github.com/http-party/node-http-proxy/commit/bdeabb767a537bcb9f98ef74f6efe9762a9b1c34)
+- websocket draft [`07551c6`](https://github.com/http-party/node-http-proxy/commit/07551c63e428551e5d6e52362efd9620a14c71b4)
+- [fix] naming [`2a59366`](https://github.com/http-party/node-http-proxy/commit/2a593664a5768c90d9b2edf4c298460416b38926)
+- [dist doc] Added documentation for consistent benchmarking of node-http-proxy [`f7f5fa7`](https://github.com/http-party/node-http-proxy/commit/f7f5fa727e8f1d3f4946e61ad03830dab1da01a5)
+- [examples] update old examples [`7e44d36`](https://github.com/http-party/node-http-proxy/commit/7e44d3669bbd1b13e6452f265d52b22396f68b5d)
+- [docs] more short examples to the Readme [`0393b5d`](https://github.com/http-party/node-http-proxy/commit/0393b5da990bb45e873bb80d87a0bc9e4dd6a477)
+- [examples] updated old proxy examples [`e02317c`](https://github.com/http-party/node-http-proxy/commit/e02317ce86ff2dabd496cf7e2741e219a22ac817)
+- [wip] Initial HTTPS->HTTP test, updated https-secure example. Work in progress, need to add more https tests [`33a2462`](https://github.com/http-party/node-http-proxy/commit/33a2462d28c7d1fa26b03bcf290242ff7cd83e7a)
+- [docs] readme [`886a870`](https://github.com/http-party/node-http-proxy/commit/886a8707078f59d0467b34686455bb5bdfadbc0c)
+- [examples] added error-handling using callbacks and HTTP-to-HTTPS examples [`d7064f2`](https://github.com/http-party/node-http-proxy/commit/d7064f2e1e149fe870cbb158932cb99f9f192fce)
+- [examples] updated old examples [`588327c`](https://github.com/http-party/node-http-proxy/commit/588327c2c4392618b515164989f08ef20a30842b)
+- stuff [`e45bfd6`](https://github.com/http-party/node-http-proxy/commit/e45bfd66a21a2470c5a4a4cc1d6095494bbc0f6b)
+- [doc] added some documentation to functions and comments to understand better the code [`5dcdf2b`](https://github.com/http-party/node-http-proxy/commit/5dcdf2b36c24a9584f044b7529265b9ac861d8c7)
+- Fixed issue where error callback would not invoke, including new test cases. Added req/res values to error events. [`0bfb9be`](https://github.com/http-party/node-http-proxy/commit/0bfb9be418926f2113489e92504038127d4c04bb)
+- [examples] updated balancer examples [`831a44b`](https://github.com/http-party/node-http-proxy/commit/831a44b3c8c3acf6c046c47703a07cd6362a0d1c)
+- socket.io stuff [`a74cd85`](https://github.com/http-party/node-http-proxy/commit/a74cd85c8a5aae2851acf7139648fefd6a02a57b)
+- [tests] move contributions of @mmoulton to correct place [`7c72f3b`](https://github.com/http-party/node-http-proxy/commit/7c72f3b407a084a896e420c23ababc3e9357feca)
+- [tests] this file is not necessary anymore [`881c7e6`](https://github.com/http-party/node-http-proxy/commit/881c7e62e0bef7b4b9f81b6fd121f7ad6641bd77)
+- [refactor] move to leaner architecture [`8273cb6`](https://github.com/http-party/node-http-proxy/commit/8273cb6461e4d33f36e583b0354d1bea038d0a56)
+- [fix] remove trailing whitespaces [`0aeaba7`](https://github.com/http-party/node-http-proxy/commit/0aeaba7fe6c51f150d0322eb90a77c1701ed88f5)
+- [test] added tests for web-outgoing.js [`16a4d9d`](https://github.com/http-party/node-http-proxy/commit/16a4d9da1136b79f40ad80482d3fd17dc74274b1)
+- [fix] some stuff start debugging proxystream [`d4f0da8`](https://github.com/http-party/node-http-proxy/commit/d4f0da898e5e8a2d6740e50a7fc34576435e1132)
+- [tests] now each test use a different port to avoid some slow opening and closing ports [`c75d06c`](https://github.com/http-party/node-http-proxy/commit/c75d06c5f92eb7c814deb49bb33cf9fffc632d97)
+- [tests] fixed inherits problem and listen for the correct event [`c65ffbb`](https://github.com/http-party/node-http-proxy/commit/c65ffbb976467dc1768983dcffe111d18e8f2db1)
+- [fix] ProxyStraem now works [`356f43d`](https://github.com/http-party/node-http-proxy/commit/356f43d719998d135e0fc404ac8508e330cf1e5b)
+- [examples] fix the copyright header of example files [`e592c53`](https://github.com/http-party/node-http-proxy/commit/e592c53d1a23b7920d603a9e9ac294fc0e841f6d)
+- [feature] start working on the new server [`b79bd29`](https://github.com/http-party/node-http-proxy/commit/b79bd29d5e984f34b9c07fbdc803aed83b3fd0bb)
+- ENH: updated examples [`f566a42`](https://github.com/http-party/node-http-proxy/commit/f566a42e511f4a6a8f3620f64e05df209e61b64f)
+- [examples] add example of gzip using the connect.compress() middleware [`2142c50`](https://github.com/http-party/node-http-proxy/commit/2142c506e08f56d52e1995da5506c3e032f19c3c)
+- [fix] refactor error handling [`601dbcb`](https://github.com/http-party/node-http-proxy/commit/601dbcbfe929af31995568b4f36b877245809058)
+- [tests] fixed according new refactor and added test to common.setupSocket() [`1cb967b`](https://github.com/http-party/node-http-proxy/commit/1cb967b90aaa5b9da57727b8acbd95108437797a)
+- [feature] websocket support [`79a14ac`](https://github.com/http-party/node-http-proxy/commit/79a14acfd2b2bf03f5ae2b334e7a37e619da6bb9)
+- keepalive sockets [`dad211e`](https://github.com/http-party/node-http-proxy/commit/dad211e71c9ac3b32eba1ea3755edb688053b9d3)
+- [tests] Using target field, tests now pass. We are missing the tests using forward field [`8085178`](https://github.com/http-party/node-http-proxy/commit/8085178dc2c24567adfb872a583863709ce60b5b)
+- [fix] callback as optional error handler [`c7924e0`](https://github.com/http-party/node-http-proxy/commit/c7924e01f92aeec07333273f0882c1dd5e9521ae)
+- ENH: added new https example, needs to be simplified before merge [`427d8d8`](https://github.com/http-party/node-http-proxy/commit/427d8d85369b0cd1d38afa0dd0f28ac98fa16001)
+- [test] proxystream test [`c961279`](https://github.com/http-party/node-http-proxy/commit/c9612798f1207a4c40b616608bf6274d79ad0e4d)
+- [lib] initial draft to websockets passes [`79f7f99`](https://github.com/http-party/node-http-proxy/commit/79f7f99528661162ae4153856888f078f666e017)
+- [fix] minor [`7599cee`](https://github.com/http-party/node-http-proxy/commit/7599cee3fd03a5ce645e313f35557a41c9ac1aee)
+- [tests] added HTTPS to HTTPS test [`31d919b`](https://github.com/http-party/node-http-proxy/commit/31d919b0a3d0b7f574e88fc5eed093c6b1a53548)
+- [feature] started working on error propagation, kinda sucks, gotta think it over [`9ab8749`](https://github.com/http-party/node-http-proxy/commit/9ab8749a9bec33b49c495975e8364336ad7be1a3)
+- [test] testing the onResponse proxy method [`27df8d7`](https://github.com/http-party/node-http-proxy/commit/27df8d72ad86d02cfce00a6e5c183d93dd50f97e)
+- [fix] remove duplicate [`10c0f11`](https://github.com/http-party/node-http-proxy/commit/10c0f11b68e39552051e508c7bf20d65d2d59177)
+- [tests] add more tests [`cedc5c4`](https://github.com/http-party/node-http-proxy/commit/cedc5c4bd2059585e1222ec4f03f09e8bcc808fc)
+- [docs] Update readme with more how to [`ae0faef`](https://github.com/http-party/node-http-proxy/commit/ae0faef5aa0080d742a9740f9cb38bfd54b7d97e)
+- [tests] added test for socket.io proxying [`10a0db4`](https://github.com/http-party/node-http-proxy/commit/10a0db4f0dd4594839f9098b9d67130085a067bc)
+- [tests] added test HTTPS to HTTP using own server [`bbe3bfd`](https://github.com/http-party/node-http-proxy/commit/bbe3bfdf98255b82a185a798ff9f29e74615b6ca)
+- [examples] update the error-handling example using the new error handle way [`a1b25a1`](https://github.com/http-party/node-http-proxy/commit/a1b25a123b4ff71e731f9beb27c5e078acfead65)
+- [fix] quote [`c4ddc4e`](https://github.com/http-party/node-http-proxy/commit/c4ddc4edd324d9910a11eea14561a0e3b953f29c)
+- ENH: updated README and added examples file. [`07091b5`](https://github.com/http-party/node-http-proxy/commit/07091b5077a40dfee29f6fd33ecb38d3fa25b801)
+- [test] passes/web.js (first 2 funcs) [`d40e4be`](https://github.com/http-party/node-http-proxy/commit/d40e4beb62381b962b6cf3254451de0a39f182b1)
+- [test] add test for forwardstream [`8fc3389`](https://github.com/http-party/node-http-proxy/commit/8fc33893672d26013c2b2ff396b777bcf1751527)
+- [tests] fixing tests, fixed some typos and changed how passes are stored [`a704213`](https://github.com/http-party/node-http-proxy/commit/a7042132c881656dd32f915d9b0b962f0ef92efb)
+- [test] added the lib/caronte/streams/forward.js initial test, one test pending [`2fac7b9`](https://github.com/http-party/node-http-proxy/commit/2fac7b9b009b12a940efb22de3af6db55ee686a9)
+- [api] add draft for proxystream [`4f24664`](https://github.com/http-party/node-http-proxy/commit/4f24664e8a50aa9b9a3ea155d067b85f94a8c81b)
+- [experiment] new api for proxying [`07cfa6b`](https://github.com/http-party/node-http-proxy/commit/07cfa6b981ff54d8d96eea6c9aa4b560ee3867ec)
+- [tests] the options got a problem and this test probe that timeout is not being set [`1d1ee88`](https://github.com/http-party/node-http-proxy/commit/1d1ee8858283d7c8984f1c1d6c5185b6822f9235)
+- new error propagation [`3a39e44`](https://github.com/http-party/node-http-proxy/commit/3a39e444ff68a74f6b586f0736bbd3f8a2511ca5)
+- [fix] docs [`ec981c5`](https://github.com/http-party/node-http-proxy/commit/ec981c5b74bf43dd36c8ca89833b751f59f01d38)
+- [examples] added concurrent proxy example [`04c1011`](https://github.com/http-party/node-http-proxy/commit/04c10113f7a3b568fb95b18f30e4aca3e059d961)
+- [fix] closes number #487 [`cde08fb`](https://github.com/http-party/node-http-proxy/commit/cde08fb2ee2df03c9457678d8e6776a5d89165b2)
+- [test] started writing tests [`16eacfa`](https://github.com/http-party/node-http-proxy/commit/16eacfa961d2a2d80534e95eba83010ed6ab01b4)
+- [tests] added tests for websockets [`02007ed`](https://github.com/http-party/node-http-proxy/commit/02007ed0fb38f798436ae5669bb18d4f27496667)
+- Revert "[fix] fixed options and server reference to can access them from passes functions" [`babdf53`](https://github.com/http-party/node-http-proxy/commit/babdf531fecd32f9af0963902909fcfa2cd374f1)
+- mm test file [`1a7bef0`](https://github.com/http-party/node-http-proxy/commit/1a7bef0cda58243416a263075dc6eb51f22b6dec)
+- [fix] fixed options and server reference to can access them from passes functions [`90fb01d`](https://github.com/http-party/node-http-proxy/commit/90fb01d38ac5af7ef395547b24e985b6f63b4abc)
+- [examples] added forward example [`7a3f6df`](https://github.com/http-party/node-http-proxy/commit/7a3f6dfbcc80ba32fa81004438c637e8d29eb029)
+- [docs] add UPGRADING.md [`db12f6c`](https://github.com/http-party/node-http-proxy/commit/db12f6c24e22c034c698457cc28ff60c990b55a5)
+- DOC: Added error handling example [`32a4088`](https://github.com/http-party/node-http-proxy/commit/32a40889cedfd6b0d92224aa921700a7b7271c68)
+- [examples] updated the modifyResponse-middleware example [`de3ff11`](https://github.com/http-party/node-http-proxy/commit/de3ff11656b4a847de3a63b28feed39b6c816480)
+- [test] test onError part, proxying to no where [`b85aa16`](https://github.com/http-party/node-http-proxy/commit/b85aa16e75401a223a947cde444d42cf7eeafb67)
+- ENH: updated agent options in `common.setupOutgoing` [`12cda56`](https://github.com/http-party/node-http-proxy/commit/12cda561afe534427a5f84da9d7e0beb64a8ecbc)
+- [fix] minor and short fixes [`e0faaaf`](https://github.com/http-party/node-http-proxy/commit/e0faaaf81152203b96f0313c68706468e7ee7357)
+- support websockets [`4a4607d`](https://github.com/http-party/node-http-proxy/commit/4a4607d075a912746386d1751fd6b0fc98cf6b20)
+- [test] COVERAGE [`004a46c`](https://github.com/http-party/node-http-proxy/commit/004a46c09df2f0f7b15d8e8f7119bc6039e0c01c)
+- [misc] add a LICENSE file [`584ce76`](https://github.com/http-party/node-http-proxy/commit/584ce76e7576c906e25cdd04a2e079f97bcf86ff)
+- ENH: updated https and agent option [`13741a8`](https://github.com/http-party/node-http-proxy/commit/13741a823f1c1c884d4a37e597e4b188598b0e25)
+- [fix] write connection header [`2c10f25`](https://github.com/http-party/node-http-proxy/commit/2c10f256b658bc0e906c20f29d94ab7eaf653055)
+- [fix] merge #495, thanks @glasser [`d0862af`](https://github.com/http-party/node-http-proxy/commit/d0862aff0c693366dcb11649b6abe1d011268953)
+- support forward [`8c8c455`](https://github.com/http-party/node-http-proxy/commit/8c8c455541f21ad9a9ac7ca19d1f37368206a2e2)
+- [tests] fix tests set correct host headers [`cfd417d`](https://github.com/http-party/node-http-proxy/commit/cfd417de2352b0f05535b979dc15abff60c1fb96)
+- [fix] Optimize fix for `x-forwarded-for-port`. [`2d42709`](https://github.com/http-party/node-http-proxy/commit/2d42709c3283637de16a49e815b03e63432bbd29)
+- ENH: updated readme with an example [`edd8e2f`](https://github.com/http-party/node-http-proxy/commit/edd8e2f04e4b39391b062fa6437d61b4ebde8748)
+- [doc] update README.md [`dcb873a`](https://github.com/http-party/node-http-proxy/commit/dcb873ad9992b1534615d59b8a0a70e8b87d7884)
+- [test] passes/web.js XHeaders func [`c02b721`](https://github.com/http-party/node-http-proxy/commit/c02b721321c455bc287c3fed6b9b21392ce2fc70)
+- [fix] fixed passes functions, now 'this' can be used and options are stored on 'this.options' [`9b3e1eb`](https://github.com/http-party/node-http-proxy/commit/9b3e1eb247df29d18ea299ff4ebb2f10eeb71269)
+- Revert "[fix] fixed passes functions, now 'this' can be used and options are stored on 'this.options'" [`5e130de`](https://github.com/http-party/node-http-proxy/commit/5e130de8548ad41b821da49299b4fd1c9536c5f0)
+- [minor] Remove duplicate dependencies and cleanup of the scripts [`a51b062`](https://github.com/http-party/node-http-proxy/commit/a51b0622780f48160001f9e74340f7d720cbfce6)
+- TEST: added agent and header tests [`39b0c46`](https://github.com/http-party/node-http-proxy/commit/39b0c46a6967fda5329760ad93a8ec01bc4a6f14)
+- [examples] fix styling and bad spaces [`6a6dfbb`](https://github.com/http-party/node-http-proxy/commit/6a6dfbb79dc156679f75dd519344d19a5b61613b)
+- ENH: added error events [`1b867a7`](https://github.com/http-party/node-http-proxy/commit/1b867a7f594f7dfe49fc17ff53451a353ec509d9)
+- [test] remove chunked on http1.0 [`ca09263`](https://github.com/http-party/node-http-proxy/commit/ca092635e7ac4d967b554e3b94a16a931946d464)
+- [tests] fix test to use the new way to pass options [`52ecd52`](https://github.com/http-party/node-http-proxy/commit/52ecd52ee5aa78603e44ba8d5ff9187410351622)
+- [examples] fixed https examples [`a467b7b`](https://github.com/http-party/node-http-proxy/commit/a467b7b4a9614a7cbfdc256524e1495616e3d4d9)
+- Revert "[tests] fix test to use the new way to pass options" [`2bf20d6`](https://github.com/http-party/node-http-proxy/commit/2bf20d61d53201e9820c5f9215e641fcf88f5172)
+- [fix] better code [`3d8e538`](https://github.com/http-party/node-http-proxy/commit/3d8e5383cd9d527825f95d9071a87865fcebca05)
+- [feature] implement _write and _read [`6a4294c`](https://github.com/http-party/node-http-proxy/commit/6a4294cbdfe85fa162969b1393032adc9d418441)
+- [fix] use the correct arguments order [`cc09ae6`](https://github.com/http-party/node-http-proxy/commit/cc09ae6a345cfde1689e1d8731c5822675c59d4d)
+- [fix] fix the correct order of arguments in ws-incoming passes [`02df9a3`](https://github.com/http-party/node-http-proxy/commit/02df9a33c5cce17ea32a892017acbe5ce57ab2e5)
+- [fix] write status [`e08d4ed`](https://github.com/http-party/node-http-proxy/commit/e08d4edad339d0f7f55900b3e6e6a0e770960215)
+- [fix] finished jshint fixes [`455f97e`](https://github.com/http-party/node-http-proxy/commit/455f97e14cb4929e0a3a5c746471e9c5e76436fc)
+- Update the README to describe middleware err handler. [`25bb3bf`](https://github.com/http-party/node-http-proxy/commit/25bb3bfa7012e0f975e10f0311cae8c39183fa41)
+- Prevent headers to be sent twice [`8332e74`](https://github.com/http-party/node-http-proxy/commit/8332e744202ed9de94288d8f1c822cd9fe788983)
+- [examples] added package.json with the dependencies needed by examples [`d85ccdd`](https://github.com/http-party/node-http-proxy/commit/d85ccdd333edcfc7551bcf8e0ffd7dc166e38e61)
+- [tests] added .travis.yml file [`0602500`](https://github.com/http-party/node-http-proxy/commit/06025002303f351f71d9e5f78a93895257f0d283)
+- [dist minor] 2 space indents next time @samalba [`7e8041d`](https://github.com/http-party/node-http-proxy/commit/7e8041d2b687b8375a1d0fe45270029c6e8ddee6)
+- [fix] naming [`8931009`](https://github.com/http-party/node-http-proxy/commit/893100972c22febbf133134394bc0bcef47d9e12)
+- Fix for #458. Host header may cause some sites not to be proxyable with changeOrigin enabled [`781c038`](https://github.com/http-party/node-http-proxy/commit/781c038f2b4d14a01cc9297e1e0dba6ce39dd6cb)
+- [docs] typos, typos everywhere... [`03880d8`](https://github.com/http-party/node-http-proxy/commit/03880d8d069e9e17ca7d7aea6eb760f6626a869c)
+- ENH: updated `ws` and `web` functions to use the global options object as a base [`268afe3`](https://github.com/http-party/node-http-proxy/commit/268afe34bb51448d511c9cd73c03e97d1c1baee0)
+- [fix] make @mmalecki a happy camper [`c9cd6d2`](https://github.com/http-party/node-http-proxy/commit/c9cd6d2ad324e0e6222932c8f29f27621071e045)
+- write [`f97c0c6`](https://github.com/http-party/node-http-proxy/commit/f97c0c6167371c5ff92e6361b1df02e3fd5506d7)
+- [fix] [`a9f9e21`](https://github.com/http-party/node-http-proxy/commit/a9f9e21eda2f8e912523e6b62abb0101c0353505)
+- [fix] coveralls.. will it work? [`f36cb4d`](https://github.com/http-party/node-http-proxy/commit/f36cb4d5a110fc86272e878278f103f313c86f56)
+- ENH: updated target and forward options so that a string may be specified [`ef946a7`](https://github.com/http-party/node-http-proxy/commit/ef946a7697b38b13178881b3d1ebde63681dd4a1)
+- added option for eventlistenerCount(max) [`8eb6780`](https://github.com/http-party/node-http-proxy/commit/8eb6780f8705caff13a5375446539b0621d497d7)
+- [fix] support buffer [`1204a35`](https://github.com/http-party/node-http-proxy/commit/1204a35e467c6c1855ba0dac8f55d79f899148a6)
+- DOC: updated readme with options [`1b5fb1d`](https://github.com/http-party/node-http-proxy/commit/1b5fb1d8fc21421b8383919d93e4149b586b211b)
+- ENH: added 'headers' to available options, to add or overwrite existing headers [`7d840d3`](https://github.com/http-party/node-http-proxy/commit/7d840d35151be1aac612798754af47368594781d)
+- [fix] move logo [`57abb7f`](https://github.com/http-party/node-http-proxy/commit/57abb7f26c14e281c3be07a8b84e3c79e066f59f)
+- FIX: tests. still need to add more tests tho [`a350fad`](https://github.com/http-party/node-http-proxy/commit/a350fadea6bace293131581487f8c66948009449)
+- [fix] move logo [`aaff196`](https://github.com/http-party/node-http-proxy/commit/aaff1966e4e2eb42c9890e57737f57a64e8d964a)
+- [docs] add travis build status [`6b61878`](https://github.com/http-party/node-http-proxy/commit/6b618787598a2a37850898dbdb3b4fe8f3c3414d)
+- [fix] do not send chunked responses to http1.0 clients [`8663ac1`](https://github.com/http-party/node-http-proxy/commit/8663ac1c43505f0081d906c3cd8e702d4b5ddeb0)
+- [dist] Bump dependencies. [`a81dd8d`](https://github.com/http-party/node-http-proxy/commit/a81dd8d53e1595cba9acf5cc3ca9517165dcc4aa)
+- [fix] readme [`4d3a4e1`](https://github.com/http-party/node-http-proxy/commit/4d3a4e1ee7370347898d1863ab73aa68ed345d8d)
+- [fix] proxying to https [`26c4c43`](https://github.com/http-party/node-http-proxy/commit/26c4c43a06263ec6721bc0e8a90644297d0cf217)
+- [fix] new logo [`ee3cc38`](https://github.com/http-party/node-http-proxy/commit/ee3cc380665a31ec6af28ddb73dfc543f430d3f8)
+- [fix] naming convention [`7d71a86`](https://github.com/http-party/node-http-proxy/commit/7d71a867a8bdc375f7577cec3905cca89bbf415c)
+- fix docs [`9243444`](https://github.com/http-party/node-http-proxy/commit/9243444ac006f73c00b0f1f78c4a77f342b0b4e4)
+- [fix] short circuit [`a6256ca`](https://github.com/http-party/node-http-proxy/commit/a6256cac1df1739e3da78fe5f0cf122ef7ce6b14)
+- [tests] this test is already in web-incoming tests [`920f1e7`](https://github.com/http-party/node-http-proxy/commit/920f1e7707aa1751577533cd368529f8a704d7af)
+- Emit middlewareError when on middleware error. [`bc12ca3`](https://github.com/http-party/node-http-proxy/commit/bc12ca39394f9aeed3e3047f59035ba48afa2885)
+- DOC: updated readme [`7ad5c0f`](https://github.com/http-party/node-http-proxy/commit/7ad5c0f993294c9e2e7650e15fbc62d11a2cb062)
+- [docs] add logo [`8b05626`](https://github.com/http-party/node-http-proxy/commit/8b05626eed5e45e72cf9b1f14a4c4dca1dd2ed0f)
+- [fix] making @stoke a happy camper [`34f16e7`](https://github.com/http-party/node-http-proxy/commit/34f16e74647095199f84ab61e10c8dafd60b505a)
+- [feature] add buffer support [`e3f8d5f`](https://github.com/http-party/node-http-proxy/commit/e3f8d5fdbe1ebc4f04188d95bbef768d09718d2c)
+- [Fix] 2 spelling mistakes [`5823842`](https://github.com/http-party/node-http-proxy/commit/58238421945bcc4236e280ebca7799b831ae29a4)
+- [fix] do not call .end [`6e77cd3`](https://github.com/http-party/node-http-proxy/commit/6e77cd390929842088ae9f6deb922a6627ddfecd)
+- attempting to fix link to valid options properties [`bbe2b27`](https://github.com/http-party/node-http-proxy/commit/bbe2b2788a7ee3c74fd44fe88b6dcf213264436f)
+- [fix] slimmer proxying [`031aa0f`](https://github.com/http-party/node-http-proxy/commit/031aa0fbf30bd377696c4efa508f6fc769bf1070)
+- [fix] use agent pool [`abf1d90`](https://github.com/http-party/node-http-proxy/commit/abf1d90fdf05a17ebe05a3e90d464a592e0aee69)
+- [tests] fix test using undefined url [`c4d56a5`](https://github.com/http-party/node-http-proxy/commit/c4d56a5faf1e89cdeb911f0ece0efe065eb58c45)
+- [fix] legacy [`162a42f`](https://github.com/http-party/node-http-proxy/commit/162a42f58f515c5418ccfac0b68f4c928103b1e1)
+- [tests] fixing minor typos [`b333e63`](https://github.com/http-party/node-http-proxy/commit/b333e63648aa67ea1b1aaf17ba684e5fc6f751a6)
+- Updated readme [`bd106d6`](https://github.com/http-party/node-http-proxy/commit/bd106d69f074a1c7018e685a4e144e23a17beb8c)
+- [misc] use the local mocha instead the global [`f1aeb05`](https://github.com/http-party/node-http-proxy/commit/f1aeb0500cde39b63e570323e0e478530d1222ab)
+- added unlimited listeners to the reverproxy event obj. [`1333c0c`](https://github.com/http-party/node-http-proxy/commit/1333c0cc62e7b590843f9b00326fe80137163c5e)
+- [tests] throw error when no options, ALL TESTS PASSING! YAY [`86750c7`](https://github.com/http-party/node-http-proxy/commit/86750c7e594c419dfae957aaf7e44e61e1d480e8)
+- ENH: updated example [`1c7ace2`](https://github.com/http-party/node-http-proxy/commit/1c7ace26c5a36fb63497f1ab67793c5b75495063)
+- [merge] PR #470 [`38e6d7c`](https://github.com/http-party/node-http-proxy/commit/38e6d7cd5449a7264dcf5244b3dfd07b2dda60e1)
+- [fix] remove stuff [`6a03e5f`](https://github.com/http-party/node-http-proxy/commit/6a03e5f7cf356416ea13584e279f5bfa3791c058)
+- [test][misc] remove node@0.8 to test on travis [`8eff1a1`](https://github.com/http-party/node-http-proxy/commit/8eff1a1f26bb739dfc5a1ad90b140ff2a18921d5)
+- merge with @cronopio [`0fb3381`](https://github.com/http-party/node-http-proxy/commit/0fb33810f5e70b714bd9868557d85a531b8e11e3)
+- [merge] text [`98f29bd`](https://github.com/http-party/node-http-proxy/commit/98f29bdcfca9b818ffe107b09578539fdf379c8a)
+- [fix] woops [`bd3df45`](https://github.com/http-party/node-http-proxy/commit/bd3df45010f282997cae3a699c7ecb885c01bdf8)
+- [test] Test on newer version of node [`ebbba73`](https://github.com/http-party/node-http-proxy/commit/ebbba73eda49563ade09f38bdc8aef13d1cf6c00)
+- new error propagation - follows [`1993faf`](https://github.com/http-party/node-http-proxy/commit/1993faf8a4227acda3423d46cf2cf13b4d9861e7)
+- [fix] minor typo [`5a1504f`](https://github.com/http-party/node-http-proxy/commit/5a1504f0764b7747b53cc0d92a69ff3093e85ade)
+- [fix] proxy to http(s) [`3c91ed3`](https://github.com/http-party/node-http-proxy/commit/3c91ed3d26d9af640d0c7a09fb9cdaf80ad673ca)
+- Put the arguments the right way around in the README. [`1457980`](https://github.com/http-party/node-http-proxy/commit/145798062e332ac2aed7f8e8e3240e38464c870a)
+- [fix] use some [`4480699`](https://github.com/http-party/node-http-proxy/commit/4480699d3a2a5080c051e7b8a100689fd1f58657)
+- [fix] layout [`d7078e2`](https://github.com/http-party/node-http-proxy/commit/d7078e2fdd16d23d0b5f8f1d8a7ab3e9011fea4f)
+- [docs] logo [`dd0f7b8`](https://github.com/http-party/node-http-proxy/commit/dd0f7b8876ae5b57fffab8857735b25b159f2bdb)
+- [fix] url [`0637322`](https://github.com/http-party/node-http-proxy/commit/0637322d96e54bbcf5a14bf009dd73314cada4ce)
+- [fix] opts [`adc5be0`](https://github.com/http-party/node-http-proxy/commit/adc5be020c7fff09a1c05ac771d5c5ab61002c23)
+- [docs] fix syntax highlighting [`da9de70`](https://github.com/http-party/node-http-proxy/commit/da9de7034a452d1281217a349bc9403fddcc2b7f)
+- [fix] typo [`275a519`](https://github.com/http-party/node-http-proxy/commit/275a5192fa257f78287a954b347e65023795487d)
+- [tests] fix code coverage, changed pattern on blanket options [`4090250`](https://github.com/http-party/node-http-proxy/commit/40902506af3361b642b8798350b48404fe0a4e78)
+- Put the arguments the right way around in emitter. [`7c8ecc8`](https://github.com/http-party/node-http-proxy/commit/7c8ecc8ea85b59fc16b55b9a142372b6ac168b2a)
+- [fix] link [`72a89ea`](https://github.com/http-party/node-http-proxy/commit/72a89eab8bafef3742d78e8de8631094f961f427)
+- [fix] space [`69f126b`](https://github.com/http-party/node-http-proxy/commit/69f126b34cbd190be8541a854d21f13bfb5a61bf)
+- [fix] tests [`8269eca`](https://github.com/http-party/node-http-proxy/commit/8269eca2bb34d08336b8889e06e53d3522fa79fe)
+- [fix] console [`18341d5`](https://github.com/http-party/node-http-proxy/commit/18341d559717e0a86f5ee4da024109e4b5a595a7)
+- Set travis to run `npm test` while we fix coveralss.io integration [`e2a5d51`](https://github.com/http-party/node-http-proxy/commit/e2a5d513cac3ebceff446787fa106c7f00caf785)
+- [fix] making @jcrugzz a happy camper [`2e7343d`](https://github.com/http-party/node-http-proxy/commit/2e7343d728a3187d48821b88ec2e2d4699bb2afe)
+- [fix] minor typo [`5d66ce1`](https://github.com/http-party/node-http-proxy/commit/5d66ce11bb7eef7e704a2de2c0ef3b5f754843e9)
+- [tests] tests fixed [`d60353f`](https://github.com/http-party/node-http-proxy/commit/d60353f80bbbcba128a2c51066e107365270e878)
+- [tests] disabled the examples-test by now [`d83fdf6`](https://github.com/http-party/node-http-proxy/commit/d83fdf69a1121bfcfba72bbffcd3105ae5852c56)
+- [fix] _ because it is unused [`590bb60`](https://github.com/http-party/node-http-proxy/commit/590bb604dae11223a0ae80469b59d6d341488f1f)
+- [tests] disable test, by now is not throwing without options [`a2b1f0a`](https://github.com/http-party/node-http-proxy/commit/a2b1f0a4c9079342db6255c5f92db4a0cb992707)
+- [fix] support target and forward [`961d2f9`](https://github.com/http-party/node-http-proxy/commit/961d2f9400b4cfd236c3c8ccbf401d37f8e871b8)
+- [dist] Version bump. 0.10.4 [`840f6d8`](https://github.com/http-party/node-http-proxy/commit/840f6d8d29dffc11d3726123c2d400940ca2bdda)
+- [fix] remove old reminescence [`4d65280`](https://github.com/http-party/node-http-proxy/commit/4d65280ea313438a94589bacf55f7a09cc107888)
+- [feature] add emit proxyRes [`dda6f7a`](https://github.com/http-party/node-http-proxy/commit/dda6f7a45a46d2bf63e482d0b47b7c36ae548546)
+- [docs] test badge [`1ceea3e`](https://github.com/http-party/node-http-proxy/commit/1ceea3e5f9b6232d60d673946bbccb7d8ccb4beb)
+- [tests] remove caronte and use http-proxy for file names [`c9f5772`](https://github.com/http-party/node-http-proxy/commit/c9f5772fc18226aca31471bc96c44a6dbff5cbea)
+- [logo] [`4c2f2f3`](https://github.com/http-party/node-http-proxy/commit/4c2f2f3b9a5ba65f97403e778a670f14301d52c1)
+
+## [v0.10.3](https://github.com/http-party/node-http-proxy/compare/v0.10.2...v0.10.3) - 2013-06-20
+
+### Merged
+
+- Pass default certs to SNICallback example [`#419`](https://github.com/http-party/node-http-proxy/pull/419)
+
+### Fixed
+
+- Pass default certs to SNICallback example [`#399`](https://github.com/http-party/node-http-proxy/issues/399)
+
+### Commits
+
+- [dist] Bump version to 0.10.3 [`2fd748f`](https://github.com/http-party/node-http-proxy/commit/2fd748fb61dac7de0daa50aabbface7033c6a222)
+- [fix] Respect `maxSockets` from `target` options in `RoutingProxy` [`e1d384e`](https://github.com/http-party/node-http-proxy/commit/e1d384e769e9f4adc5a06c516cfb721ff24b4b6d)
+- Send path in req.path and not the url [`0c75323`](https://github.com/http-party/node-http-proxy/commit/0c753234c0c85333f909bdbef034ffb6e192bad5)
+
+## [v0.10.2](https://github.com/http-party/node-http-proxy/compare/v0.10.1...v0.10.2) - 2013-04-21
+
+### Merged
+
+- Correct keep-alive responses to HTTP 1.0 clients [`#407`](https://github.com/http-party/node-http-proxy/pull/407)
+
+### Fixed
+
+- [minor] Style compliance. Fixes #402. [`#402`](https://github.com/http-party/node-http-proxy/issues/402)
+
+### Commits
+
+- Correct keep-alive responses to HTTP 1.0 clients. [`a29b5e8`](https://github.com/http-party/node-http-proxy/commit/a29b5e8e289c34c00d2b450e5fb9dd1969db4b97)
+- [minor] Strip trailing whitespace. [`7fc39d7`](https://github.com/http-party/node-http-proxy/commit/7fc39d77f47311b82c24ab05f8e1a45a2733305c)
+- Add headers on 'handshake' [`985025c`](https://github.com/http-party/node-http-proxy/commit/985025c90f3b2fafede64d8b17c318326f2423d9)
+- Don't test raw HTTP 1.0 requests over HTTPS. [`daf53bd`](https://github.com/http-party/node-http-proxy/commit/daf53bd753879223dc84a49c92d0efaf576c1fd3)
+- [dist] Version bump. 0.10.2 [`de0928f`](https://github.com/http-party/node-http-proxy/commit/de0928f616dd62165e8a22c00d091cabf31e1e87)
+
+## [v0.10.1](https://github.com/http-party/node-http-proxy/compare/v0.10.0...v0.10.1) - 2013-04-12
+
+### Merged
+
+- Fix for slab buffer retention, leading to large memory consumption [`#370`](https://github.com/http-party/node-http-proxy/pull/370)
+
+### Commits
+
+- [dist] Version bump. 0.10.1 [`9c13ad4`](https://github.com/http-party/node-http-proxy/commit/9c13ad46e416125373d6604f3954ec3df1f55449)
+
+## [v0.10.0](https://github.com/http-party/node-http-proxy/compare/v0.9.1...v0.10.0) - 2013-03-18
+
+### Merged
+
+- Change the emitter of the `proxyResponse` event [`#385`](https://github.com/http-party/node-http-proxy/pull/385)
+- Fixing a bug that generates an unexpected TypeError [`#383`](https://github.com/http-party/node-http-proxy/pull/383)
+- Mention Harmon used for response modifications in the readme [`#384`](https://github.com/http-party/node-http-proxy/pull/384)
+
+### Commits
+
+- [dist] Update CHANGELOG.md [`8665f3c`](https://github.com/http-party/node-http-proxy/commit/8665f3cc600feecbb4c8229699823149c69a144f)
+- Harmon messsage [`35ba0db`](https://github.com/http-party/node-http-proxy/commit/35ba0db554c6bace21b1bacfa8f5fb6df4228db0)
+- [fix breaking] Emit the `proxyResponse` event on the HttpProxy instance to reduce listener churn and reference counts. [`2620f06`](https://github.com/http-party/node-http-proxy/commit/2620f06e2db9a267945566f10837c4c2a5df753d)
+- [dist] Version bump. 0.10.0 [`71183bf`](https://github.com/http-party/node-http-proxy/commit/71183bf30bc2b9ad2eaf57c51980eeb0bc7edff0)
+- Fixing the if statement as it lead to 'TypeError: Parameter 'url' must be a string, not undefined' in certain cases [`c9b6895`](https://github.com/http-party/node-http-proxy/commit/c9b6895c5e14add6aba4f826a2173458a1896a5f)
+- Harmon messsage [`4e42354`](https://github.com/http-party/node-http-proxy/commit/4e42354e77d5731a383d516fc0b249d5d0eda745)
+
+## [v0.9.1](https://github.com/http-party/node-http-proxy/compare/v0.9.0...v0.9.1) - 2013-03-09
+
+### Commits
+
+- [dist doc] Updated CHANGELOG.md for `v0.9.1` [`ea5e214`](https://github.com/http-party/node-http-proxy/commit/ea5e214522d8ac34d1129b28ff188c0f232ce63f)
+- [dist] Version bump. 0.9.1 [`701dc69`](https://github.com/http-party/node-http-proxy/commit/701dc698e3eb39ca6836a02611d8dce750f4e212)
+- [breaking] Ensure that `webSocketProxyError` also receives the error to be consistent with `proxyError` events. [`c78356e`](https://github.com/http-party/node-http-proxy/commit/c78356e9cf27a21c57e4c98ef7dd3c22abe864c2)
+
+## [v0.9.0](https://github.com/http-party/node-http-proxy/compare/v0.8.7...v0.9.0) - 2013-03-09
+
+### Merged
+
+- If HTTP 1.1 is used and backend doesn't return 'Connection' header, expicitly return Connection: keep-alive. [`#298`](https://github.com/http-party/node-http-proxy/pull/298)
+- add "with custom server logic" to the "Proxying WebSockets" section of the readme [`#332`](https://github.com/http-party/node-http-proxy/pull/332)
+- routing proxy 'this' reference bug? [`#365`](https://github.com/http-party/node-http-proxy/pull/365)
+- fixed issue #364 'proxyError' event emitted twice [`#374`](https://github.com/http-party/node-http-proxy/pull/374)
+- Misleading documentation for Websockets via .createServer [`#349`](https://github.com/http-party/node-http-proxy/pull/349)
+
+### Fixed
+
+- [api test] Manually merge #195 from @tglines since that fork was deleted. Update tests to use new macros. Fixes #195. Fixes #60. [`#195`](https://github.com/http-party/node-http-proxy/issues/195) [`#60`](https://github.com/http-party/node-http-proxy/issues/60)
+- [fix] Set "content-length" header to "0" if it is not already set on DELETE requests. Fixes #338. [`#338`](https://github.com/http-party/node-http-proxy/issues/338)
+- [fix] Do not use "Transfer-Encoding: chunked" header for proxied DELETE requests with no "Content-Length" header. Fixes #373. [`#373`](https://github.com/http-party/node-http-proxy/issues/373)
+- [fix] http-proxy should not modify the protocol in redirect request for external sites. Fixes #359. [`#359`](https://github.com/http-party/node-http-proxy/issues/359)
+- [fix] Emit `notFound` event when ProxyTable location does not exist. Fixes #355. Fixes #333. [`#355`](https://github.com/http-party/node-http-proxy/issues/355) [`#333`](https://github.com/http-party/node-http-proxy/issues/333)
+- [fix] Make options immutable in `RoutingProxy`. Fixes #248. [`#248`](https://github.com/http-party/node-http-proxy/issues/248)
+- [fix] Remove special case handling of `304` responses since it was fixed in 182dcd3. Fixes #322. [`#322`](https://github.com/http-party/node-http-proxy/issues/322)
+- [fix] Ensure `response.headers.location` is defined. Fixes #276. [`#276`](https://github.com/http-party/node-http-proxy/issues/276)
+
+### Commits
+
+- [minor] s/function(/function (/ s/){/) {/ [`9cecd97`](https://github.com/http-party/node-http-proxy/commit/9cecd97153ccce4f81c5eda35a49079e651fb27a)
+- working on x-forwarded-for [`1332409`](https://github.com/http-party/node-http-proxy/commit/133240937dc63aca0007388327837bc24808f79a)
+- Routing Proxy was not sending x-forward-*. Fixing It... [`916d44e`](https://github.com/http-party/node-http-proxy/commit/916d44e3d2a17bb9d5178f347ddad9796b988e05)
+- Added timeout option and test to test new timeout parameter, added requestFail assertion. [`89d43c2`](https://github.com/http-party/node-http-proxy/commit/89d43c20dd0dec1dda1fd70e57f3f250b9e3b431)
+- Add tests for headers bug fixes [`ecb5472`](https://github.com/http-party/node-http-proxy/commit/ecb547223f3f1d9bf551842c2026ee2f1a18638a)
+- Added simple round robin example with websocket support [`83fbd42`](https://github.com/http-party/node-http-proxy/commit/83fbd4250660f41de1ab2b5490a3bf58200ae148)
+- - support unix donain sockets and windows named pipes (socketPath) on node 0.8.x. On node 0.6.x the support was opaque via port, but on the new node, socketPath should be set explicitely. [`ffe74ed`](https://github.com/http-party/node-http-proxy/commit/ffe74ed299f81206b898147dbcc985519b2921f8)
+- pathnameOnly flag added. Ignores hostname and applies routing table to the paths being requested. [`46b078a`](https://github.com/http-party/node-http-proxy/commit/46b078a98d10de7726a3bbca89121acc57ad7625)
+- [doc] added comments to pathnameOnly block. [`5e6be6c`](https://github.com/http-party/node-http-proxy/commit/5e6be6ccf5a39ff450e57d7b24e374a83569fa85)
+- remove offending code, final fix for issue #364 [`3b84e27`](https://github.com/http-party/node-http-proxy/commit/3b84e27ab4efd5ce3b8ac837d699d4ff6661c7e7)
+- memory leak fix in closing of the scokets [`2055d0c`](https://github.com/http-party/node-http-proxy/commit/2055d0c8ec16699ffb06adf6d64d9506920b2071)
+- Fix truncated chunked responses [`ef66833`](https://github.com/http-party/node-http-proxy/commit/ef66833c4d7f07ae9f42026f2bcc0fbca2440579)
+- Re-added previous description [`603106a`](https://github.com/http-party/node-http-proxy/commit/603106a13d28c0199fa4456cc9aee1692eb2588c)
+- pathnameOnly option documented in the Readme.md [`a1607c1`](https://github.com/http-party/node-http-proxy/commit/a1607c1684a7d7617e5148a0dca882eb08a9f03b)
+- [fix minor] Prevent crashes from attempting to remove listeners more than once when proxying websocket requests. [`a681493`](https://github.com/http-party/node-http-proxy/commit/a681493371ae63f026e869bf58b6fea682dc5de3)
+- Added comments [`64efa7f`](https://github.com/http-party/node-http-proxy/commit/64efa7f9291a2377a32e942a247700b71b107993)
+- Revert "[fix minor] Prevent crashes from attempting to remove listeners more than once when proxying websocket requests." [`c6da760`](https://github.com/http-party/node-http-proxy/commit/c6da760ca9f375025229fe3fc174aca943362f38)
+- [doc dist] Update CHANGELOG.md for `v0.9.0`. [`133115c`](https://github.com/http-party/node-http-proxy/commit/133115c9760130dcef447efbd18c470c08795c90)
+- add support for loading CA bundles [`10f6b05`](https://github.com/http-party/node-http-proxy/commit/10f6b0577518bdfcb6b43c1f516dc988bdcade53)
+- problem: don't want to run my server as root to bind to privileged ports (e.g. 80, 443). [`2c36507`](https://github.com/http-party/node-http-proxy/commit/2c3650746cd90fed63b140a8d393e18bd35cd8f9)
+- Add 'proxyResponse' event so observer can modify response headers or abort response. [`3b86a7a`](https://github.com/http-party/node-http-proxy/commit/3b86a7aae3fc366c5fa8645285a4368dbac7a0dc)
+- [minor] Move private helper to end of file. [`476cbe7`](https://github.com/http-party/node-http-proxy/commit/476cbe741fc41b7f1eb269d841d922784e8b3c6b)
+- Fix for retaining large slab buffers in node core [`d2888c8`](https://github.com/http-party/node-http-proxy/commit/d2888c83f5eab3fb82425ef4fd51e62621bf2764)
+- [dist] Update `devDependencies` [`ad21310`](https://github.com/http-party/node-http-proxy/commit/ad213106d06cfc79004841f04b8e73fe7d7ef67a)
+- [minor] Small whitespace compliance. [`ea0587a`](https://github.com/http-party/node-http-proxy/commit/ea0587a8f98b1eedc38c66b69293ae091e24be6e)
+- [doc fix] Add undefined var in example. [`deca756`](https://github.com/http-party/node-http-proxy/commit/deca7565c51fd678354d26eaae7fe2481e36e2c3)
+- working on x-forwarded-for [`31fc94a`](https://github.com/http-party/node-http-proxy/commit/31fc94aa5e43c54033d5384caaf104eebf3889bd)
+- Allow event observers to access upstream response headers and data. [`4c130f5`](https://github.com/http-party/node-http-proxy/commit/4c130f5dac5f2cfbfc2618446b86244aff4cb04f)
+- [fix doc] Fix bad variable reference in `README.md`. [`440013c`](https://github.com/http-party/node-http-proxy/commit/440013c263a96c6681bfe92a8f56db93b58efa8d)
+- Change wording for handling websocket proxy events [`ee6bbe0`](https://github.com/http-party/node-http-proxy/commit/ee6bbe00244c90bd532b11ff1c796aea8c7372f8)
+- [dist] Version bump. 0.9.0 [`c68e038`](https://github.com/http-party/node-http-proxy/commit/c68e0389120d8530e578e20496d8ee091e69a580)
+- fix 'this' reference in routing proxy listener bindings [`15afc23`](https://github.com/http-party/node-http-proxy/commit/15afc23a275f3fa16653fff6179368122661a0af)
+- cleanning [`8d87399`](https://github.com/http-party/node-http-proxy/commit/8d8739999fcaf4cdd8f2471046f6f036c44dc8f7)
+- cleanning [`9672b99`](https://github.com/http-party/node-http-proxy/commit/9672b9927156a0dfe3ce4539f380aaf3172f6267)
+- Fix typo which slipped in during patch clean-up [`ba65a48`](https://github.com/http-party/node-http-proxy/commit/ba65a485fcf7230e85cee77f6eefcd17e46c8f86)
+- Remove data event that is not needed after-all. [`b1c4bd6`](https://github.com/http-party/node-http-proxy/commit/b1c4bd61e8ae5705d4cc97bf719c381554671967)
+
+## [v0.8.7](https://github.com/http-party/node-http-proxy/compare/v0.8.6...v0.8.7) - 2012-12-22
+
+### Commits
+
+- [fix] Handle errors on request object [`edfe869`](https://github.com/http-party/node-http-proxy/commit/edfe86915941e465a06c1d0a3330ee32e5834aa6)
+- [dist] Bump version to 0.8.7 [`26d3646`](https://github.com/http-party/node-http-proxy/commit/26d3646ff252129f35525ab0540a31f5617a31d2)
+- [fix] Don't remove `error` listener after response ends [`223eacd`](https://github.com/http-party/node-http-proxy/commit/223eacda85a4267f2860f6c46f7dedfa9db8c224)
+
+## [v0.8.6](https://github.com/http-party/node-http-proxy/compare/v0.8.5...v0.8.6) - 2012-12-21
+
+### Merged
+
+- http-proxy: 304 responses should emit 'end' too [`#337`](https://github.com/http-party/node-http-proxy/pull/337)
+
+### Commits
+
+- [bench] Remove silly "benchmarks" [`2bd9cd9`](https://github.com/http-party/node-http-proxy/commit/2bd9cd9adb6cea6763930468d22cb56fffab6218)
+- [bench] Add a benchmark for websockets throughput [`6797a27`](https://github.com/http-party/node-http-proxy/commit/6797a2705a309d19a655ab468bcc80ba2e43cf41)
+- [fix] Handle socket errors [`2a61ec8`](https://github.com/http-party/node-http-proxy/commit/2a61ec85bdaeed9a5fca2a117efb36a7f76becc4)
+- [dist] Update `devDependencies` [`b81d9b7`](https://github.com/http-party/node-http-proxy/commit/b81d9b71daa32a571384cff29d81227993299236)
+- [dist] Bump version to 0.8.6 [`6cd78f6`](https://github.com/http-party/node-http-proxy/commit/6cd78f6af9ca08b8797c409896eea2ae6bb6d835)
+- [bench] More exact size display [`7bc1a62`](https://github.com/http-party/node-http-proxy/commit/7bc1a628feab78f8931e9e6481737dd871debfeb)
+
+## [v0.8.5](https://github.com/http-party/node-http-proxy/compare/v0.8.4...v0.8.5) - 2012-11-16
+
+### Merged
+
+- lib: allow overriding maxSockets [`#323`](https://github.com/http-party/node-http-proxy/pull/323)
+
+### Fixed
+
+- [fix] Convert strings to numbers if possible in `.createServer` [`#321`](https://github.com/http-party/node-http-proxy/issues/321)
+
+### Commits
+
+- [test] Delete invalid core test [`886a395`](https://github.com/http-party/node-http-proxy/commit/886a395429f20163992ca76e7b0d059256f56ba6)
+- [test] Upgrade `common.js` from node core [`fefbf04`](https://github.com/http-party/node-http-proxy/commit/fefbf04ac03126858bdad07df7b10131a46e17d6)
+- add "with custom server logic" to the "Proxying WebSockets" section of the readme.md [`03dbe11`](https://github.com/http-party/node-http-proxy/commit/03dbe115c2b088737e5b9abcadf91a8298f56f1f)
+- [test] Kill child process when exiting test runner [`74ec175`](https://github.com/http-party/node-http-proxy/commit/74ec1757153c503ce57eb552031648fe79731d48)
+- [fix] Correctly kill test processes [`b8c27ed`](https://github.com/http-party/node-http-proxy/commit/b8c27ed565e416827b7c4bb123aa9ee119d008e6)
+- [test] Make global detection work with older node versions [`3531fd6`](https://github.com/http-party/node-http-proxy/commit/3531fd609a8ce156d27c27ca38ac912a73aebfeb)
+- [dist] Bump version to 0.8.5 [`22639b3`](https://github.com/http-party/node-http-proxy/commit/22639b378189ec78f9962dde64337df050e29a6f)
+- [test] Run core tests on `npm test` [`41c9a9c`](https://github.com/http-party/node-http-proxy/commit/41c9a9caad679221b8f1d4dcfb74f9b2bdb8270b)
+- [test] Stop testing on `node v0.9`, tests timeout [`9042665`](https://github.com/http-party/node-http-proxy/commit/9042665ea98a6587e1d6800e51d3c354c0a1b20a)
+
+## [v0.8.4](https://github.com/http-party/node-http-proxy/compare/v0.8.2...v0.8.4) - 2012-10-23
+
+### Merged
+
+- Events patch [`#320`](https://github.com/http-party/node-http-proxy/pull/320)
+- documentation for options [`#315`](https://github.com/http-party/node-http-proxy/pull/315)
+- Added travis build status [`#308`](https://github.com/http-party/node-http-proxy/pull/308)
+- Fix installation instructions: s/http/https/ [`#302`](https://github.com/http-party/node-http-proxy/pull/302)
+- If supplied pass changeOrigin option through to HttpProxy instance if set in RoutingProxy [`#285`](https://github.com/http-party/node-http-proxy/pull/285)
+
+### Commits
+
+- [fix test] Fix examples to use newest version of socket.io and helpers. Added tests for ensuring that examples require as expected with no errors. [`fd648a5`](https://github.com/http-party/node-http-proxy/commit/fd648a529090cefc202613fff3fdfec9ba0e6a72)
+- [fix] spdy should look like https when forwarding (until we get a client) [`698b01d`](https://github.com/http-party/node-http-proxy/commit/698b01da8e1fe6195b00e5006032d262a0a86f4e)
+- [docs] options [`4c8e1d9`](https://github.com/http-party/node-http-proxy/commit/4c8e1d96a36523a548959415903bc669ebcc138d)
+- http-proxy: emit websocket:start [`5df6e7b`](https://github.com/http-party/node-http-proxy/commit/5df6e7bdb8d4685a18e94ff1bf117ce8eff8d1c9)
+- [fix] `destroy()` websockets in case of an error [`0d00b06`](https://github.com/http-party/node-http-proxy/commit/0d00b06af307dc5c70c36e89617a08486eb665e2)
+- [fix] Suppress EADDRINUSE errors from `test/examples-test.js` since we are just looking for require-time errors. Isolate tests to ensure idempotency of ports [`c4a7b15`](https://github.com/http-party/node-http-proxy/commit/c4a7b1584302fe12a8fc06b6774db5ff602c3607)
+- [docs] more options [`d4cb9da`](https://github.com/http-party/node-http-proxy/commit/d4cb9dad6ce36a823c9e8970e0bb3266d844e536)
+- If HTTP 1.1 is used and backend doesn't return 'Connection' header, explicitly [`850171c`](https://github.com/http-party/node-http-proxy/commit/850171cdc41cb93343f7c31f650ac908a8d2dacb)
+- [refactor] Pass all options to `Agent` constructor [`eafdc74`](https://github.com/http-party/node-http-proxy/commit/eafdc744b67b33b5ed3cfc80de84dafcd850bdd0)
+- Fix socket leaks when FIN packet isn't responded to [`24b8406`](https://github.com/http-party/node-http-proxy/commit/24b84068eac1c704d9f8df3dc833b976850c328f)
+- [fix] Partial fix for rejecting self-signed certs in tests [`2e7d8a8`](https://github.com/http-party/node-http-proxy/commit/2e7d8a88f4b470dcc9da1639fe2a69e03251036c)
+- [fix] Dont use `-i` when running vows because it supresses `--target=` and `--proxy=` CLI arguments [`1783ab0`](https://github.com/http-party/node-http-proxy/commit/1783ab0625743355eecc11f5cfd57469c429daa0)
+- [test] Add `node v0.9` testing, test all branches [`4f6387c`](https://github.com/http-party/node-http-proxy/commit/4f6387c17f55c23da4aac161cf2e5a4dd2a25c40)
+- [minor] Remove `setEncoding` on incoming socket [`812868d`](https://github.com/http-party/node-http-proxy/commit/812868ddfc720b6c4fd26603c2fe4d5ae68f2492)
+- [dist] v0.8.3 [`a89a5b8`](https://github.com/http-party/node-http-proxy/commit/a89a5b80889a56dd31634096bc6546b6b7b26da2)
+- [fix] Ignore npm version errors when installing dependencies for examples [`a454666`](https://github.com/http-party/node-http-proxy/commit/a454666e7a0465ed65b7bbd29cf1b0c6c126d153)
+- [fix] function [`213e03c`](https://github.com/http-party/node-http-proxy/commit/213e03c99844c5c984fbf857bae32095165a1e8f)
+- [dist] Bump version to 0.8.4 [`4d7e8a8`](https://github.com/http-party/node-http-proxy/commit/4d7e8a808d83d3db1b729820aba5f481ab3d18f4)
+- [minor doc] Correct comment [`cee27fe`](https://github.com/http-party/node-http-proxy/commit/cee27feeddf9b4db06917dfa9e59e6bcd7e14c27)
+
+## [v0.8.2](https://github.com/http-party/node-http-proxy/compare/v0.8.1...v0.8.2) - 2012-07-22
+
+### Merged
+
+- Add example for gzip middleware using a proxy table. [`#221`](https://github.com/http-party/node-http-proxy/pull/221)
+- Implement RoutingProxy.prototype.remove [`#246`](https://github.com/http-party/node-http-proxy/pull/246)
+- prefer `target.hostname` over `target.host` [`#235`](https://github.com/http-party/node-http-proxy/pull/235)
+- add "Using two certificiates" to the https section of the readme.md [`#275`](https://github.com/http-party/node-http-proxy/pull/275)
+- Add support for setting the host in the executable [`#268`](https://github.com/http-party/node-http-proxy/pull/268)
+- Hi! I fixed some calls to "sys" for you! [`#270`](https://github.com/http-party/node-http-proxy/pull/270)
+- Fix bug: x-forwarded-proto set incorrectly as httphttps or wswss [`#266`](https://github.com/http-party/node-http-proxy/pull/266)
+
+### Commits
+
+- [refactor] Rewrite tests to use saner vows idioms. Update tests to use latest socket.io [`4ae7a5b`](https://github.com/http-party/node-http-proxy/commit/4ae7a5b84011bb5b9ec3a36ded4c5e5b3330db80)
+- [dist] Remove out-dated docco docs [`2d75510`](https://github.com/http-party/node-http-proxy/commit/2d75510d827c770c30a7292c31ef0f2007da7086)
+- [refactor test] Finish removing old test code. [`e2dc7f9`](https://github.com/http-party/node-http-proxy/commit/e2dc7f96937e5d565fea16c9f56b9f5d3e427de2)
+- [dist] Complete JSHint compliance except for `too many var statements` [`36226da`](https://github.com/http-party/node-http-proxy/commit/36226daa2e4cbc65fae80d2d09fd64c0e7ce36ba)
+- [refactor test] Add support for `http*-to-http*` testing from CLI arguments [`828dbeb`](https://github.com/http-party/node-http-proxy/commit/828dbebcaaf11e338a7727bf9d2fff8bfbd3726e)
+- [fix api] Optimize lookups in the ProxyTable. Ensure that RoutingProxy can proxy to `https` by default. [`55286a7`](https://github.com/http-party/node-http-proxy/commit/55286a7c499c0fe267f75d8e8441ff89f1e65f99)
+- Whitespace fixes. [`04ce49c`](https://github.com/http-party/node-http-proxy/commit/04ce49c5b289acb6ad72303e9ac70c637ea490b2)
+- [refactor tests] Finished refactoring tests to support `ws*-to-ws*` tests based on CLI arguments [`7e854d7`](https://github.com/http-party/node-http-proxy/commit/7e854d778b89201f7cb933e8bbda66316b98b0b4)
+- [doc] Minor formatting updates to README.md [`6753951`](https://github.com/http-party/node-http-proxy/commit/67539519faf1f32073fdb562404bd897072e24ee)
+- [fix] Changed require('util') to require('util') for compatibility with node v0.8 [`bf7e328`](https://github.com/http-party/node-http-proxy/commit/bf7e328fb837de69455c42f41822b0caae2777b6)
+- [test] Add .travis.yml file for Travis CI. [`29e6e74`](https://github.com/http-party/node-http-proxy/commit/29e6e748f780629d05635eebb421e8ee1d125058)
+- Use changeOrigin for proxyRequest. [`0273958`](https://github.com/http-party/node-http-proxy/commit/0273958b0a5c7823c6212cb6ce6e4f801a215d3b)
+- adding support for setting the host [`06e78f2`](https://github.com/http-party/node-http-proxy/commit/06e78f27475165d023fd66afbe5dd626a6a548af)
+- match style requested by @cronopio [`415d4ed`](https://github.com/http-party/node-http-proxy/commit/415d4ed908e45332421d683eb45e0d6873b85ae7)
+- Fix bug: x-forwarded-proto set incorrectly [`0933f1c`](https://github.com/http-party/node-http-proxy/commit/0933f1c598c1b62a75e040c3ed3ccb262612d3c9)
+- [dist] Version bump. 0.8.2 [`13c34d0`](https://github.com/http-party/node-http-proxy/commit/13c34d09b2f8be14fbbe4be77c49b23066667f1b)
+
+## [v0.8.1](https://github.com/http-party/node-http-proxy/compare/v0.8.0...v0.8.1) - 2012-06-05
+
+### Merged
+
+- [misc] Updating the changelog. Close #137 [`#256`](https://github.com/http-party/node-http-proxy/pull/256)
+- Fix problem with req.url not being not properly replaced. [`#218`](https://github.com/http-party/node-http-proxy/pull/218)
+- Re-emit 'start', 'forward' and 'end' events in RoutingProxy, and fix some hanging issues. [`#216`](https://github.com/http-party/node-http-proxy/pull/216)
+- Fixes to make the websockets example work. [`#225`](https://github.com/http-party/node-http-proxy/pull/225)
+- [minor] Syntax error [`#222`](https://github.com/http-party/node-http-proxy/pull/222)
+- [docs] Making README links consistent with latest project structure. [`#208`](https://github.com/http-party/node-http-proxy/pull/208)
+- [docs] improved grammar [`#205`](https://github.com/http-party/node-http-proxy/pull/205)
+- proposed doc addition for #180 [`#189`](https://github.com/http-party/node-http-proxy/pull/189)
+
+### Fixed
+
+- Merge pull request #256 from nodejitsu/changelog [`#137`](https://github.com/http-party/node-http-proxy/issues/137)
+- [misc] Updating the changelog. Close #137 [`#137`](https://github.com/http-party/node-http-proxy/issues/137)
+
+### Commits
+
+- Whitespace fixes [`e9fd3f4`](https://github.com/http-party/node-http-proxy/commit/e9fd3f43d7e890f0164b5a03a34f196dd162d043)
+- Added example for gzip middleware using a ProxyTable. [`6201328`](https://github.com/http-party/node-http-proxy/commit/62013281b8a980c53a38362f10d746bfbf36c52e)
+- [examples] Added simple load balancer example [`fd7fcd8`](https://github.com/http-party/node-http-proxy/commit/fd7fcd8decbf0c7ab00cab84e151991e380b8fae)
+- [dist] Update author field for consistency [`27316e2`](https://github.com/http-party/node-http-proxy/commit/27316e22e8e7786252583cdb9131cfd8cacb07c1)
+- Add documentation for listening for proxy events to prevent a common mistake. [`4f2bc58`](https://github.com/http-party/node-http-proxy/commit/4f2bc58431c7f44d486ee8c1ee3136b3637f9405)
+- Fix RoutingProxy hanging when there is an error [`b26b434`](https://github.com/http-party/node-http-proxy/commit/b26b434e9fc501f7e0c4a966dbee6220c355bc7c)
+- prefer `target.hostname` over `target.host` [`c4d185d`](https://github.com/http-party/node-http-proxy/commit/c4d185dca9696c77d5c38d24d897c2679f6762a0)
+- [doc] Fix style in websockets example [`ed06af9`](https://github.com/http-party/node-http-proxy/commit/ed06af97efe406ea2533009be64a6b568f9d0601)
+- Add tests for remapping URL properly. [`5d839dd`](https://github.com/http-party/node-http-proxy/commit/5d839dd5f8890c6d2af96807b96d1bd5bb0f7276)
+- fixed comment typos in examples/http/proxy-https-to-http.js and proxy-https-to-https.js, lines 37 and 46 [`868f7e7`](https://github.com/http-party/node-http-proxy/commit/868f7e7a287c4709c541c077f3e2303f45b1f072)
+- [misc] changelog updated to version 0.8.1 [`e9a3a30`](https://github.com/http-party/node-http-proxy/commit/e9a3a3012c5507dff46afd3e5cececf43b1717ae)
+- Implement RoutingProxy.prototype.remove [`0532995`](https://github.com/http-party/node-http-proxy/commit/0532995dfa0be53d285c886a9922b8915f297d36)
+- Making README links consistent with latest project structure. [`7fa6599`](https://github.com/http-party/node-http-proxy/commit/7fa6599f4f2c92bb29bc5fc8a9ba06d704652c5e)
+- Address ticket #180 here since that problem is so hard to discover when you run into it. If there was an error, people would search for the error text, but there isn't. [`73e415a`](https://github.com/http-party/node-http-proxy/commit/73e415a22634bfc9e5993377902f67ac3212714a)
+- [tests] used socket.io 0.6.17 fixed version for tests [`45d67f4`](https://github.com/http-party/node-http-proxy/commit/45d67f42cba373db4f47765d6a3dd38a7d19dae6)
+- [fix] x-forwarded-proto sets properly [`ca37ad7`](https://github.com/http-party/node-http-proxy/commit/ca37ad74367764cca479a1af63bd7491dc79606b)
+- [doc] add missing {} to make an object [`843901e`](https://github.com/http-party/node-http-proxy/commit/843901eeeb24611ad24889f13edcbfd5dee4314d)
+- fix the broken english and clarified the sentence (I hope) [`e15db4f`](https://github.com/http-party/node-http-proxy/commit/e15db4fb50db3e2191f3ebd30e12eeed9c376bc2)
+- Re-emit 'start', 'forward' and 'end' events in RoutingProxy. [`99ee542`](https://github.com/http-party/node-http-proxy/commit/99ee54259eae70c0c680ee82efc7dd184313f182)
+- [doc] call listen() to get the server started [`4fc1ee8`](https://github.com/http-party/node-http-proxy/commit/4fc1ee85d35d9feb468f808ddd11aaf186eaedd4)
+- syntax error fixed [`5842d0e`](https://github.com/http-party/node-http-proxy/commit/5842d0ee7de875378d9b8ae240748dd2af567be9)
+- [dist] Version bump 0.8.1 [`81f6095`](https://github.com/http-party/node-http-proxy/commit/81f6095cf08f84a84ae2bbda7ca0315729638fe0)
+- finally removed hidden char [`4358a4c`](https://github.com/http-party/node-http-proxy/commit/4358a4c1225acf8c13536fd742b845166f3a65a6)
+- [minor fix] delete white space [`df650d1`](https://github.com/http-party/node-http-proxy/commit/df650d11dd0a47653a4905f871d8d3d6c327d600)
+
+## [v0.8.0](https://github.com/http-party/node-http-proxy/compare/v0.7.3...v0.8.0) - 2011-12-23
+
+### Merged
+
+- Fix issue where front-end is HTTPS, back-end is HTTP, and server issues a redirect. [`#165`](https://github.com/http-party/node-http-proxy/pull/165)
+- Modified the ad-hoc proxy lookup to use _getKey(), rather than the error-prone in-line method. [`#164`](https://github.com/http-party/node-http-proxy/pull/164)
+- Allows node-http-proxy to append new values to existing headers for incoming "x-forward-for","x-forward-proto" and "x-forward-port" [`#163`](https://github.com/http-party/node-http-proxy/pull/163)
+- [fix] only set one drain listener while paused [`#136`](https://github.com/http-party/node-http-proxy/pull/136)
+- [docs] grammar correction [`#134`](https://github.com/http-party/node-http-proxy/pull/134)
+
+### Fixed
+
+- [fix] Avoid `Transfer-Encoding: chunked` for HTTP/1.0 client, closes #59. [`#59`](https://github.com/http-party/node-http-proxy/issues/59)
+
+### Commits
+
+- [refactor minor] Update vendor/websocket.js to be compatible with node@0.6.x [`ea7fea6`](https://github.com/http-party/node-http-proxy/commit/ea7fea627255ed34d39902438b55e740c7c9b08c)
+- [test] Add common.js file from core [`543f214`](https://github.com/http-party/node-http-proxy/commit/543f214361605cffdbee7b233029edf343c358c1)
+- [test] Add core `test-http-proxy` test [`feb324b`](https://github.com/http-party/node-http-proxy/commit/feb324b0d4c0a2307493b35be944ed08ffc9187a)
+- [test] Add core `test-http` test [`25a9e2d`](https://github.com/http-party/node-http-proxy/commit/25a9e2d217cabef07d6f161f5d6ded49342dbb2f)
+- [test] Add core `test-http-host-headers` test [`f298411`](https://github.com/http-party/node-http-proxy/commit/f298411f76a106791f34dd4d31ea033a7bdca9c7)
+- [test] Add core `test-http-extra-response` test [`c26ab5e`](https://github.com/http-party/node-http-proxy/commit/c26ab5e46ff2649f0ea6585f20d8f58b7d0cadef)
+- [test] Add core `test-http-set-cookies` test [`b3b5cce`](https://github.com/http-party/node-http-proxy/commit/b3b5cce3aee98a7fd5b50fb8e1bd6bd5e1c7512f)
+- [test] Add core `test-http-client-abort` test [`7bf8d4a`](https://github.com/http-party/node-http-proxy/commit/7bf8d4a7be668591b350144b4546559abf9a0b5f)
+- [test] Add core `test-http-client-upload` test [`7648fe5`](https://github.com/http-party/node-http-proxy/commit/7648fe50c1859597dc390e9e628db938372483e7)
+- [test] Add core `test-http-client-upload-buf` test [`5ac9878`](https://github.com/http-party/node-http-proxy/commit/5ac987857c934d07073b853f5243d2d8fc6d8c2b)
+- [test] Add core `test-http-upgrade-server2` test [`bc98c0d`](https://github.com/http-party/node-http-proxy/commit/bc98c0dbce154ef266eef83d3c2f737a2d60f0e6)
+- [test] Implement basic runner for multiple tests [`a4079c6`](https://github.com/http-party/node-http-proxy/commit/a4079c6a1c8b87334d12d47d67f060cbb1214696)
+- [test] Add core `test-http-upload-timeout` test [`60ff181`](https://github.com/http-party/node-http-proxy/commit/60ff181af9c22405d3822ce5955f178ab13de79d)
+- [test] Add core `test-http-status-code` test [`82060a5`](https://github.com/http-party/node-http-proxy/commit/82060a53430de05f2dc95450d8487bc8139544d5)
+- [test] Add core `test-http-many-keep-alive-connections` test [`4e1ca6e`](https://github.com/http-party/node-http-proxy/commit/4e1ca6e61899b11cad1b437cc9d9490b9d856665)
+- [test] Add core `test-http-chunked` test [`d7461f3`](https://github.com/http-party/node-http-proxy/commit/d7461f3206cca0691fbd438545ff325589770627)
+- [test] Add core `test-http-head-response-has-no-body-end` test [`13389db`](https://github.com/http-party/node-http-proxy/commit/13389db1bef38a7fc7ddc3ada479a608f033020c)
+- [test] Add core `test-http-server-multiheaders` test [`d7f15d0`](https://github.com/http-party/node-http-proxy/commit/d7f15d02f7477c76529fc76daddee5029079eb2d)
+- [test] Add core `test-http-multi-line-headers` test [`35d2088`](https://github.com/http-party/node-http-proxy/commit/35d2088c96bacb44b17755176b6e9451ed0299dd)
+- [test] Add core `test-http-head-response-has-no-body` test [`f79f3ad`](https://github.com/http-party/node-http-proxy/commit/f79f3adf0295ec5bb7fb9f6525b48ba5209d04c6)
+- [refactor] Improved event handler cleanup [`9f92332`](https://github.com/http-party/node-http-proxy/commit/9f923325d08ac018a3325beaa9e0805b5eda61e6)
+- [fix minor] Correctly set x-forwarded-proto in WebSocket requests [`c81bae2`](https://github.com/http-party/node-http-proxy/commit/c81bae2fdde3bf0087fe71a39855c61c43ffb145)
+- Revert "[refactor] Improved event handler cleanup " [`c83d88e`](https://github.com/http-party/node-http-proxy/commit/c83d88ee88faac10b53cd4296165ed85f26036b4)
+- Allowing the common proxy headers' value to be appended in proxy chain scenarios. [`621f9b4`](https://github.com/http-party/node-http-proxy/commit/621f9b425a272421de98a674f1679f0c47912733)
+- [test] Add basic test runner [`87999d0`](https://github.com/http-party/node-http-proxy/commit/87999d028880dfccca349c9c44f9e66a613c4d38)
+- [examples] Add some hand-crafted middleware [`6e65c20`](https://github.com/http-party/node-http-proxy/commit/6e65c20017a2e1a87dc6d58e847bc6db16440f3c)
+- [test] Add core `test-http-malformed-request` test [`a635389`](https://github.com/http-party/node-http-proxy/commit/a6353897cdbe8c380d52a060f5e66784f67ad98e)
+- [example] Response modification middleware [`dd83199`](https://github.com/http-party/node-http-proxy/commit/dd8319972c1c2f9421a90a21dce9560fd5ca199f)
+- [test] Add core `test-http-head-request` test [`c0857f2`](https://github.com/http-party/node-http-proxy/commit/c0857f2d59c33d91cb3e0c131c44ec1667f592fa)
+- [test] Add core `test-http-response-close` test [`f1c0be3`](https://github.com/http-party/node-http-proxy/commit/f1c0be3f0bd2c5e87d44a37ba4f29aafd9903ad4)
+- [refactor] core proxy logic. all tests should be passing. [`63ac925`](https://github.com/http-party/node-http-proxy/commit/63ac9252606d23e2003696da1fb34a539abee7ca)
+- [test] Add core `test-http-contentLength0` test [`275109b`](https://github.com/http-party/node-http-proxy/commit/275109b2f8c8519c56ca9f456096d4002698fab1)
+- [test] Add core `test-http-client-abort2` test [`98bbe54`](https://github.com/http-party/node-http-proxy/commit/98bbe541e4fa581f1b9e2eadb821c0609da6ab81)
+- adding tests for url segment proxytable routing [`91e9bb9`](https://github.com/http-party/node-http-proxy/commit/91e9bb90709cc8a361066d6f6b8f51f58bfd7e36)
+- [test] Add core `test-http-eof-on-connect` test [`80c216d`](https://github.com/http-party/node-http-proxy/commit/80c216df0cc59b88c6934f795c03ea16a737af34)
+- [example] Replace `sys` usages with `util` [`8d701bb`](https://github.com/http-party/node-http-proxy/commit/8d701bb20b593c6cdf0ff1bc35cf83051b21a35e)
+- [refactor] Updates to support http2 from @mikeal [`5b52c89`](https://github.com/http-party/node-http-proxy/commit/5b52c896947db42ac01e6038c9170d8859d33aea)
+- [refactor] Listen for `socket` events since reverseProxy.socket is no longer set synchronously [`3828616`](https://github.com/http-party/node-http-proxy/commit/38286168161d4f4ad24d2ad95ccd8335e9ed08a4)
+- [test] Run tests in `test/core/simple` by default [`68cebbe`](https://github.com/http-party/node-http-proxy/commit/68cebbe0e79ea283eea8a1ca850ab462c66c611a)
+- simplify proxytable path segment rewrite logic [`c03a450`](https://github.com/http-party/node-http-proxy/commit/c03a450d9b952e1463ae2609303029e317ff5da2)
+- change proxytable routing to route one level shallower [`4d50915`](https://github.com/http-party/node-http-proxy/commit/4d50915373b6afaafc7857a3e9366e8e77315683)
+- [docs] Little explanation for test/core directory [`8ca5d83`](https://github.com/http-party/node-http-proxy/commit/8ca5d83497cc106a2456ff7f2ebe3db5c8634d69)
+- [minor] Allow user to set `colors.mode` [`48d4a8b`](https://github.com/http-party/node-http-proxy/commit/48d4a8b263faa9acda06651bceeff50881f21b26)
+- [minor] Indentation fix [`9e630da`](https://github.com/http-party/node-http-proxy/commit/9e630daf81d10485206ec136c3e1a07fe065ffeb)
+- [v0.6] `http.Agent` uses different structure for sockets [`86b4122`](https://github.com/http-party/node-http-proxy/commit/86b4122323ca32d455714b1149b99acce49a9e45)
+- [minor] Nicer output from test runner [`5c3d41b`](https://github.com/http-party/node-http-proxy/commit/5c3d41bf4e101d0250fb0b3db4a8dc078104dcad)
+- Modified the ad-hoc proxy lookup to use _getKey(), rather than the [`553e7fb`](https://github.com/http-party/node-http-proxy/commit/553e7fbc335a9befd166d472f057aa50452a9d40)
+- [fix] When client request is aborted, abort server request [`4d43d81`](https://github.com/http-party/node-http-proxy/commit/4d43d81e5c2d7c8088716d4fd574019f43ebb5ce)
+- Fixes memory leak when clients abort connections [`c98ccb4`](https://github.com/http-party/node-http-proxy/commit/c98ccb40e9fe5c5198a1605fa8835efc3ff1856c)
+- [fix test] Make test runner exit after test exits [`31a8c68`](https://github.com/http-party/node-http-proxy/commit/31a8c6800ddf8d91b477d980605a4c19284a1648)
+- [test dist] Run core tests on `npm test` [`8358ef8`](https://github.com/http-party/node-http-proxy/commit/8358ef8a2bdf817c8ed515be7bc9cec0a9b5f486)
+- don't add upgrade handler if a custom handler is passed in [`d6ea3a4`](https://github.com/http-party/node-http-proxy/commit/d6ea3a425c203695394eaba4ce8abd57f7809e98)
+- always emit end in 0.4 [`182dcd3`](https://github.com/http-party/node-http-proxy/commit/182dcd34555f361c1bb2b8d2777689e64ce32f87)
+- [fix] Fix incorrect depth check. [`3ab02f3`](https://github.com/http-party/node-http-proxy/commit/3ab02f3ad7f2c59d73c621695eb238233c16d09c)
+- [minor] Everybody loves Unicode [`38bd906`](https://github.com/http-party/node-http-proxy/commit/38bd906f2bc9322b156b92c47457bb7904f0d23a)
+- [test minor] Update copyright notice on test runner [`2ccc5c7`](https://github.com/http-party/node-http-proxy/commit/2ccc5c73eaef30ab5a2af7e456bfcc270583c460)
+- [minor] When running tests output only basename [`e109eba`](https://github.com/http-party/node-http-proxy/commit/e109eba9724494737021579938c1094c9dfbc8ee)
+- [dist] Version bump. 0.8.0 [`5055689`](https://github.com/http-party/node-http-proxy/commit/5055689a11f3b990f848bf2699e0111d9e708d5f)
+- Revert "[dist] Adjusted engines field to allow for 0.6; version bump 0.7.7" [`1e33434`](https://github.com/http-party/node-http-proxy/commit/1e33434fcc4772c233825b5aada7472113c0be50)
+- changeOrigin option: set the host header to the proxy destination [`f27d26f`](https://github.com/http-party/node-http-proxy/commit/f27d26f4515c900ea4cf1756ef279257a189e308)
+- [dist] Adjusted engines field to allow for 0.6; version bump 0.7.7 [`30dac89`](https://github.com/http-party/node-http-proxy/commit/30dac898f30a8508b4c4b4236e9438987f320167)
+- [fix] In routing proxy, match line beginning [`63dfc7f`](https://github.com/http-party/node-http-proxy/commit/63dfc7f1757fc9a1a9bceeb3b035e97be6504692)
+- [v0.6] Don't use `agent.appendMessage()` [`6655e01`](https://github.com/http-party/node-http-proxy/commit/6655e0164216449a97090651230266da8ced0150)
+- bump version 0.7.4 [`3dfba2b`](https://github.com/http-party/node-http-proxy/commit/3dfba2ba4591e0fcd65ff0bfd012b3ab749a0a02)
+- bump version 0.7.6 [`c5dc929`](https://github.com/http-party/node-http-proxy/commit/c5dc9295c711177c165bfb34c67407e1a5a0ed06)
+- Revert "update outgoing.headers.host incase the destination does proxying" [`2061c71`](https://github.com/http-party/node-http-proxy/commit/2061c713664b044852fdf67aa5e173e5c3b6d874)
+- update outgoing.headers.host incase the destination does proxying [`65b7872`](https://github.com/http-party/node-http-proxy/commit/65b7872e6ad433deae4de823c63629cb341bd649)
+- bump version 0.7.5 [`b4d41c3`](https://github.com/http-party/node-http-proxy/commit/b4d41c3628ade82792eb361b095ab014a88d537a)
+- [minor] Fix indent on timeout notice [`c4124da`](https://github.com/http-party/node-http-proxy/commit/c4124da4f25860497790fc06c97dde6e8985ab73)
+- [minor] Change test runner output order [`b76680b`](https://github.com/http-party/node-http-proxy/commit/b76680b045f69e03759bc119f4827f337a8f395d)
+- grammar correction [`729496d`](https://github.com/http-party/node-http-proxy/commit/729496d2898612969f5369e7f1c313cb4034f96c)
+- [dist] Test runner depends on `async` [`219b0ff`](https://github.com/http-party/node-http-proxy/commit/219b0ff8f8780cde4714267273b0a1637c84679f)
+- [test fix] Remove unnecessary console.log in tests/websocket/websocket-proxy-test.js [`f188f4f`](https://github.com/http-party/node-http-proxy/commit/f188f4ffd8c47b6312cd88c28de7e5ac63565047)
+- [test refactor] `test/core/{run => run-single}` [`004be38`](https://github.com/http-party/node-http-proxy/commit/004be38048792d6f1d3efb361a5e7e66d5dbee8d)
+
+## [v0.7.3](https://github.com/http-party/node-http-proxy/compare/v0.7.2...v0.7.3) - 2011-10-03
+
+### Commits
+
+- added what is necessary for having proxyError on Routing proxywq [`b7adf86`](https://github.com/http-party/node-http-proxy/commit/b7adf866b595f0d64a3ef6bde19271276450e723)
+- [dist] Version bump. 0.7.3 [`db185bb`](https://github.com/http-party/node-http-proxy/commit/db185bb303ce9c413b2abccbc885f8ec43b61202)
+
+## [v0.7.2](https://github.com/http-party/node-http-proxy/compare/v0.7.1...v0.7.2) - 2011-09-30
+
+### Merged
+
+- [fix] Examples have working require paths now. [`#118`](https://github.com/http-party/node-http-proxy/pull/118)
+
+### Commits
+
+- [fix] Fixed require paths in examples [`2e8d4c6`](https://github.com/http-party/node-http-proxy/commit/2e8d4c6e49e2e9b27443c0b9ae2b96331715402b)
+- [websockets] add latest websockets support [`45ef87e`](https://github.com/http-party/node-http-proxy/commit/45ef87e71bc9cccefe5fb6afc3121fb09b8efbc3)
+- [dist] Version bump. 0.7.2 [`ccccc45`](https://github.com/http-party/node-http-proxy/commit/ccccc45f11fbe535017b1806fad43578f143649d)
+
+## [v0.7.1](https://github.com/http-party/node-http-proxy/compare/v0.7.0...v0.7.1) - 2011-09-21
+
+### Merged
+
+- Readme fixes [`#114`](https://github.com/http-party/node-http-proxy/pull/114)
+- #107: Set x-forwarded-for header (amongst others) [`#110`](https://github.com/http-party/node-http-proxy/pull/110)
+- command line tool - make sure targetPort is an integer [`#109`](https://github.com/http-party/node-http-proxy/pull/109)
+
+### Fixed
+
+- [dist] Version bump v0.7.1, closes #107 #112 [`#107`](https://github.com/http-party/node-http-proxy/issues/107)
+
+### Commits
+
+- [test] Added a test for the "x-forwarded-for" header [`66e9820`](https://github.com/http-party/node-http-proxy/commit/66e982060c6c41ad7dfadce1403c8e13d267781a)
+- [docs] Updated examples in README.md for 0.7.x API. [`24ef919`](https://github.com/http-party/node-http-proxy/commit/24ef9194953c27fb11a8f1ceb499e5feca11c30c)
+- [examples] Updated examples to v0.7.x API. [`8fc8d96`](https://github.com/http-party/node-http-proxy/commit/8fc8d966c4681d514af00516b348105608e13382)
+- [examples] More fixes to examples. [`549360a`](https://github.com/http-party/node-http-proxy/commit/549360a462c134cc2b02301070209084ec94c393)
+- [fix] x-forwarded http headers should set properly. [`2677bb6`](https://github.com/http-party/node-http-proxy/commit/2677bb6c44244ea0b584db744955bedf7aee2c62)
+- [fix] connection.socket -> socket for source of x-forwarded-for data [`1f33943`](https://github.com/http-party/node-http-proxy/commit/1f33943b231cdf2cb619977801c7b0d4e98ab6df)
+- Make sure the target port is an integer [`5ba25aa`](https://github.com/http-party/node-http-proxy/commit/5ba25aa3451f131b6c6c8892848a4f236f5b859e)
+
+## [v0.7.0](https://github.com/http-party/node-http-proxy/compare/v0.6.6...v0.7.0) - 2011-09-10
+
+### Fixed
+
+- [fix] Add `x-forward-*` headers for WebSocket requests. Closes #74 [`#74`](https://github.com/http-party/node-http-proxy/issues/74)
+- [doc] Document `setMaxSockets`. Fixes #81 [`#81`](https://github.com/http-party/node-http-proxy/issues/81)
+
+### Commits
+
+- [api test dist] Stubbed out the API for the higher-level `RoutingProxy` object to be exposed by `node-http-proxy` [`5927ecd`](https://github.com/http-party/node-http-proxy/commit/5927ecd62a082269c3b6a0ae4f5b4a673784bcdb)
+- [api] Finalized the RoutingProxy API [`f765f90`](https://github.com/http-party/node-http-proxy/commit/f765f90ec37defaa2b493f859a982add51e25b76)
+- [minor] Move private methods to the bottom of file(s) [`ec03d72`](https://github.com/http-party/node-http-proxy/commit/ec03d72c5d8749aee835f571869f69816be02265)
+- [test] Updated tests to reflect finalized API of the RoutingProxy [`734769f`](https://github.com/http-party/node-http-proxy/commit/734769fa9b2c3054d45e33c3e552af80ce3f4740)
+- [api doc] Rebuilt httpProxy.createServer() with the newer high-level RoutingProxy API [`598fe2e`](https://github.com/http-party/node-http-proxy/commit/598fe2e38def56518a1f0a8196b2fcb7f1bc569e)
+- [minor] Remove commented out debug statements. [`5575bcf`](https://github.com/http-party/node-http-proxy/commit/5575bcf60c87def74d1755b2e5cc73e085dbf8c3)
+- [doc] Updated examples [`13eaec5`](https://github.com/http-party/node-http-proxy/commit/13eaec55dc50e2aae164cb8adaa0f1a3c5a66c68)
+- Add flow control [`6a7fd14`](https://github.com/http-party/node-http-proxy/commit/6a7fd14bfa9f25694d75cf490e32817ff15a94fe)
+- Add flow control [`2b9e09b`](https://github.com/http-party/node-http-proxy/commit/2b9e09b00ac40e6c6de2b68754df7b8e8c1e3878)
+- Emit drain if it doesn't happen on its own in 100ms [`37e2541`](https://github.com/http-party/node-http-proxy/commit/37e25418916a31e4a513ee5866d6013858d579cf)
+- resume() can throw [`558a8a4`](https://github.com/http-party/node-http-proxy/commit/558a8a4f79716496dbdee13759c8641606458c05)
+- [fix] Memory leak hunting. [`ca1d12c`](https://github.com/http-party/node-http-proxy/commit/ca1d12cf1bbfbe98b5159f9c02e2f6c818a1c749)
+- Emit drain if it doesn't happen on its own in 100ms [`84be9f2`](https://github.com/http-party/node-http-proxy/commit/84be9f2c3a244c7dbfe2c6320fa26d85cf80ec31)
+- resume() can throw [`0c71119`](https://github.com/http-party/node-http-proxy/commit/0c71119ee58ee84068120be72308ecb28cb3e532)
+- [dist] Update examples/package.json to conform to nodejitsu style guidelines [`2937229`](https://github.com/http-party/node-http-proxy/commit/29372298208135f571538cc29dcc05f41f79b01c)
+- Fixed large DoS vector in the middleware implementation [`0e36912`](https://github.com/http-party/node-http-proxy/commit/0e36912906640fdb007e0492b75c3f6a7b580ec6)
+- [api] Added new `close()` method which cleans up sockets from HttpProxy instances [`0eae2a9`](https://github.com/http-party/node-http-proxy/commit/0eae2a913a2173d85478f8c9deec929388284ee2)
+- Fixed large DoS vector in the middleware implementation [`07c8d2e`](https://github.com/http-party/node-http-proxy/commit/07c8d2ee6017264c3d4deac9f42ca264a3740b48)
+- [minor] More contextual errors when middleware(s) error [`38315f6`](https://github.com/http-party/node-http-proxy/commit/38315f6b1f7b01bc6e55587878a57590135945c0)
+- [dist] Update scripts in package.json [`6e1ade0`](https://github.com/http-party/node-http-proxy/commit/6e1ade0bb8174b744abb58df72b098bd96134ca4)
+- [dist] Version bump. 0.7.0 [`0182ba3`](https://github.com/http-party/node-http-proxy/commit/0182ba37cd4c618cd50947ea2addef823349e49f)
+- [merge] Merge from significant internal refactor in v0.7.x. No external API changes [`f7010e5`](https://github.com/http-party/node-http-proxy/commit/f7010e5169ac23114b9b35da272e9a041743fbb9)
+- [minor] Small update to bin/node-http-proxy [`2cd8256`](https://github.com/http-party/node-http-proxy/commit/2cd8256c4d6089409f603655ea3b3a5ccf1fb065)
+- [dist] Update .gitignore [`6c1c554`](https://github.com/http-party/node-http-proxy/commit/6c1c5544515bf17f0e6ed3588e16ae1a75f8a25b)
+- [doc] Update README.md [`0ba5023`](https://github.com/http-party/node-http-proxy/commit/0ba5023e82fe8a08ed55194644d147c323368f41)
+- [doc] Drop version number from README.md. [`bdf48be`](https://github.com/http-party/node-http-proxy/commit/bdf48bea36eae441c775e9321ab6e17db470bf27)
+- [dist] Version bump. 0.7.0 [`00e34a1`](https://github.com/http-party/node-http-proxy/commit/00e34a10bd9ffca9e636b2e5aebb4f18ff6765ec)
+- [test] Whitespace fix [`3a4d312`](https://github.com/http-party/node-http-proxy/commit/3a4d312eda08e7a5cecb3c82b04023e22f368e2b)
+- [dist] Reorganize examples based on classification(s): http, websocket, or middleware [`81d6c31`](https://github.com/http-party/node-http-proxy/commit/81d6c318758231f77a52fab7de174fcc63b7a243)
+
+## [v0.6.6](https://github.com/http-party/node-http-proxy/compare/v0.6.5...v0.6.6) - 2011-08-31
+
+### Commits
+
+- Memory leak hunting. [`f4fcf93`](https://github.com/http-party/node-http-proxy/commit/f4fcf934030e84c15cceca620e974aafc35f1691)
+- [fix] Add guards to every throw-able res.end call [`e1c41d0`](https://github.com/http-party/node-http-proxy/commit/e1c41d06942b56f6cd65a079ae78b54456a8bbe1)
+- [fix] Only set `x-forward-*` headers if req.connection and req.connection.socket [`de4a6fe`](https://github.com/http-party/node-http-proxy/commit/de4a6fe8a5f78460b030e635e5f4a63312cd4a76)
+- [dist] Version bump. 0.6.6 [`967884c`](https://github.com/http-party/node-http-proxy/commit/967884c5de311f21b8405a5030730ef8db912531)
+
+## [v0.6.5](https://github.com/http-party/node-http-proxy/compare/v0.6.4...v0.6.5) - 2011-08-29
+
+### Commits
+
+- [fix] Use `req.connection` for all x-forward-* headers [`f6dc12a`](https://github.com/http-party/node-http-proxy/commit/f6dc12a971fdd892614b32d2a4fb2ff39ddc0e67)
+- [dist] Version bump. 0.6.5 [`7beead5`](https://github.com/http-party/node-http-proxy/commit/7beead54654bdc7f9ab4ed0c17000118a3e7b4fc)
+
+## [v0.6.4](https://github.com/http-party/node-http-proxy/compare/v0.6.3...v0.6.4) - 2011-08-28
+
+### Fixed
+
+- Fix #95 Don't look on req.connection if it's not set. [`#95`](https://github.com/http-party/node-http-proxy/issues/95)
+
+### Commits
+
+- [api breaking] Begin refactor to optimize node-http-proxy by managing one instance of HttpProxy per `host:port` location [`d2b0e43`](https://github.com/http-party/node-http-proxy/commit/d2b0e4399e8026d3e2ece78ac8fdb1def6649950)
+- [api test] Updated httpProxy.createServer() for new API exposed by simplified HttpProxy object. [`be4562d`](https://github.com/http-party/node-http-proxy/commit/be4562da9fafef8b26856f7f73f6c5a2c4e389b0)
+- [test fix] A few minor fixes to ensure basic WebSocket tests are working. Better scope tests by supported protocol [`daf9231`](https://github.com/http-party/node-http-proxy/commit/daf9231a66f10a25782d2227df1b1501099ac5d1)
+- [test] Updates for readability [`db10c4a`](https://github.com/http-party/node-http-proxy/commit/db10c4af918c3e4bc448163f4b9e9b9267145d47)
+- Add guards to every throw-able res.end call [`7bda25b`](https://github.com/http-party/node-http-proxy/commit/7bda25b1c60d082f0f2fd12fc61b45a33b74f13d)
+- [minor] Dont use `.bind()` [`340be42`](https://github.com/http-party/node-http-proxy/commit/340be42797e87fcc11859a771200075e7fe0c5f1)
+- [dist] Version bump. 0.6.4 [`216d46d`](https://github.com/http-party/node-http-proxy/commit/216d46dc81bda1aeb0feb1318e34f37bee38c8fb)
+
+## [v0.6.3](https://github.com/http-party/node-http-proxy/compare/v0.5.11...v0.6.3) - 2011-08-28
+
+### Merged
+
+- This adds a flag to ProxyRequest to disable the setting of x-forwarded-[for|port|proto] [`#73`](https://github.com/http-party/node-http-proxy/pull/73)
+
+### Fixed
+
+- Merge branch 'patch-1' of https://github.com/KimSchneider/node-http-proxy [`#80`](https://github.com/http-party/node-http-proxy/issues/80)
+
+### Commits
+
+- [minor] Style updates and whitespace cleaning for consistency [`f0917a3`](https://github.com/http-party/node-http-proxy/commit/f0917a3f97e8df2d58252f14c15ec54369c969ae)
+- [api] refactor out middlewares from examples. [`2cf4e0a`](https://github.com/http-party/node-http-proxy/commit/2cf4e0a9e6c78dfd093c098fc87100ae71bc9450)
+- [docs] add middleware examples (first draft) [`020290a`](https://github.com/http-party/node-http-proxy/commit/020290a162146c4996831f4f13d71c1dc949f508)
+- [fix] use routing table mhen proxying WebSockets. [`efa17ef`](https://github.com/http-party/node-http-proxy/commit/efa17ef6cf614b763fc3b76570a24e750e2ddd31)
+- Tested & fixed url middleware example, added comments. [`4cc18f4`](https://github.com/http-party/node-http-proxy/commit/4cc18f4217739b0bd1b3ac88287cc8a23d486b6b)
+- [minor] add middleware to node-http-proxy [`b54666f`](https://github.com/http-party/node-http-proxy/commit/b54666ff69c574d842ce1349700c6b6248484d24)
+- [minor] add middleware to node-http-proxy [`c773eed`](https://github.com/http-party/node-http-proxy/commit/c773eedeb6d0b22e2b41ab9215cfdc064a8095e3)
+- [minor] add url-proxying middleware example [`45f3df8`](https://github.com/http-party/node-http-proxy/commit/45f3df80937ffd5854727c91ea6b0e09cf77e160)
+- [fix] Removed bad example. [`2626308`](https://github.com/http-party/node-http-proxy/commit/2626308cd845982c82a284b0d0bc064090aaf116)
+- [minor] add example to test concurrency [`6ec8d6c`](https://github.com/http-party/node-http-proxy/commit/6ec8d6caace3797841c0447feb081aa7920aa0dd)
+- [minor] add example of using middleware to gzip response [`d3c0697`](https://github.com/http-party/node-http-proxy/commit/d3c06973a1bf1f1c54ca55a5d7f93b77133ef9a2)
+- support old (port,host) and (options) style when using middlewares [`7976de1`](https://github.com/http-party/node-http-proxy/commit/7976de1121a40f963e18ea0a4673d185f847df4c)
+- [minor] Added body decoder middleware example. Needs fixing. [`8eaec35`](https://github.com/http-party/node-http-proxy/commit/8eaec3507456731c1138c0b8ebb4e51dedc7c300)
+- [minor dist] Use `pkginfo`. Minor updates to variable scoping in `.createServer()` [`5d0bbb3`](https://github.com/http-party/node-http-proxy/commit/5d0bbb38c3af14907567e2dc7c4f84a915b60ce5)
+- [doc] add comments to examples/url-middleware.js [`f6484de`](https://github.com/http-party/node-http-proxy/commit/f6484de4112463c74105db82d27f131d64478f1d)
+- Handle cases where res.write throws [`be3a0d8`](https://github.com/http-party/node-http-proxy/commit/be3a0d84a1e75b45bc1fc63fe63cdabd9844eb59)
+- [minor] code style changes [`8b48b7e`](https://github.com/http-party/node-http-proxy/commit/8b48b7e0af656fdbd6da2b16ec6365beec47c302)
+- [doc] note in readme about middleware [`b5d5eaa`](https://github.com/http-party/node-http-proxy/commit/b5d5eaababa276f7d197e4b6a8a771b364b73139)
+- Allow forwarding for x-forwarded-[for|port|proto] to enabled layering of http-proxies. [`404818b`](https://github.com/http-party/node-http-proxy/commit/404818b1dce9e77a917ce9f0c187772eb8c18042)
+- [style] tidy [`0f8fe8e`](https://github.com/http-party/node-http-proxy/commit/0f8fe8e2460fd27edfba44989b78aa6b8c9a38e2)
+- [fix] do not use middleware code if it's not needed [`2012588`](https://github.com/http-party/node-http-proxy/commit/20125889b362c61c85924810de446e1e7b18d079)
+- [minor] minor fixes to gzip middleware example [`caa1f49`](https://github.com/http-party/node-http-proxy/commit/caa1f494ab4effabad6d08272c3606c1d82005ea)
+- [minor] default enableXForwarded to true [`e3d95ec`](https://github.com/http-party/node-http-proxy/commit/e3d95ecab24700535184df32f3a97e8699099b7f)
+- Updating to enableXForwarded [`ee3506a`](https://github.com/http-party/node-http-proxy/commit/ee3506a8e7262f780eeada331898d42ca0e9838a)
+- [api] Expose adapted version of `stack` so it can be used with HttpProxy instances not created by `httpProxy.createServer()` [`5d6e6b9`](https://github.com/http-party/node-http-proxy/commit/5d6e6b9f78eb98b28db01490a36b23c1aade133f)
+- The number of maxSockets has to be set after the agent is created. Setting the property in the constructor does not work. [`2caa5d2`](https://github.com/http-party/node-http-proxy/commit/2caa5d2b0d55898c133a0bf3a0048ee969efb121)
+- [fix] Dont use res.* in proxyWebSocketRequest [`f7452bc`](https://github.com/http-party/node-http-proxy/commit/f7452bc42d963406f7ee19dfa353d72ce3252dd6)
+- [fix] fix syntax errors. close issue #86 [`b8f8499`](https://github.com/http-party/node-http-proxy/commit/b8f84994b0515e12c9d87f89f81a8601be47a6ff)
+- [api] merge middleware branch [`e6ff8d6`](https://github.com/http-party/node-http-proxy/commit/e6ff8d6597a977baf0caf4f69c75bfa93d7281f3)
+- [dist] Version bump. 0.6.3 [`1389b70`](https://github.com/http-party/node-http-proxy/commit/1389b706b5c1d857c571c2947b7c758b5cc70ca3)
+- merged [`5ba0f89`](https://github.com/http-party/node-http-proxy/commit/5ba0f89aa356b2e76f5cf64c16e8578d71c45d8a)
+- [fix] handler variable in createServer was global (!) [`25c06a3`](https://github.com/http-party/node-http-proxy/commit/25c06a3a952068de6a24c643cb0c872f7b9a0846)
+- [dist] bump version 6.0 [`03475a5`](https://github.com/http-party/node-http-proxy/commit/03475a59445a1c1c1029d0673aafabe63af1e711)
+- [dist] bump version 0.6.2 [`d8068a8`](https://github.com/http-party/node-http-proxy/commit/d8068a832d437790ce8680b9b34a9f171d75786c)
+- [dist] bump version 5.12 [`5d33ad7`](https://github.com/http-party/node-http-proxy/commit/5d33ad711895b2afcbd6dd5e1c0449cee1ceae7b)
+- [dist] bump version 0.6.1 [`fea371d`](https://github.com/http-party/node-http-proxy/commit/fea371dc0a47dfb4f84427e5740e8756f4e5b285)
+- [fix] broken RegExp [`549bfea`](https://github.com/http-party/node-http-proxy/commit/549bfeac233888ec84edeec350ed5a7377f3773e)
+- [doc] add note on middleware to Using node-http-proxy section of the README [`5bf2d59`](https://github.com/http-party/node-http-proxy/commit/5bf2d59241a7695f43bb89e5cb41ade2ab7a0ad2)
+
+## [v0.5.11](https://github.com/http-party/node-http-proxy/compare/v0.5.10...v0.5.11) - 2011-06-26
+
+### Fixed
+
+- [api] Simplify the usage for the `.changeHeaders` option. Fixes #34 [`#34`](https://github.com/http-party/node-http-proxy/issues/34)
+
+### Commits
+
+- [api doc test] node-http-proxy now emits `websocket:*` on important WebSocket events. Added tests for these features and updated some code docs [`4f85ca0`](https://github.com/http-party/node-http-proxy/commit/4f85ca04e425a7d4df1e46c9cadd6026eeed32f6)
+- [doc] Updated docco docs [`f0649d8`](https://github.com/http-party/node-http-proxy/commit/f0649d8d6a9f84ac61d5f173c585fa4307ffb3c3)
+- [doc] Added examples/latent-websocket-proxy.js [`fcfe846`](https://github.com/http-party/node-http-proxy/commit/fcfe84626fff15be21ac83ccd69b96bf3ca1f7a2)
+- [doc] Added sample for custom error messages using the `proxyError` event [`4cdbf0e`](https://github.com/http-party/node-http-proxy/commit/4cdbf0e8729a0665904b577376240c00e56ad876)
+- [doc] Add examples/standalone-websocket-proxy.js [`1ee8ae7`](https://github.com/http-party/node-http-proxy/commit/1ee8ae710497e239716f72d45e2f61ead3995dc3)
+- [dist] Version bump. 0.5.11 [`baf0b9e`](https://github.com/http-party/node-http-proxy/commit/baf0b9e25af53e2738812ff78614cc12966e99e3)
+- [doc] Small update to code docs [`9d9509f`](https://github.com/http-party/node-http-proxy/commit/9d9509f791c4c566629c2e323259885f1c3db7ed)
+- [minor] Add missing space [`b608a02`](https://github.com/http-party/node-http-proxy/commit/b608a029f8aa26f1a74a917e0bec0ac37e4615a0)
+
+## [v0.5.10](https://github.com/http-party/node-http-proxy/compare/v0.5.9...v0.5.10) - 2011-06-13
+
+### Commits
+
+- [refactor] Manage our own internal list of Agent instances [`887c580`](https://github.com/http-party/node-http-proxy/commit/887c5808c90b7128c040e510e237ddb4d034fe3e)
+- [doc] Update docco docs for 0.5.9 [`b4ac4d4`](https://github.com/http-party/node-http-proxy/commit/b4ac4d441fe4fb84d463bd889a5ce8d7f4d596ca)
+- [test] Update tests to use `localhost` [`a1cdf00`](https://github.com/http-party/node-http-proxy/commit/a1cdf005b98c422c777c88a7d7baf2eeb91f732d)
+- [dist] Version bump. 0.5.10 [`7b574d3`](https://github.com/http-party/node-http-proxy/commit/7b574d3d3e52b09a6445c011b8f2ae0d78282111)
+- [doc] Bump version in README.md [`653c6ca`](https://github.com/http-party/node-http-proxy/commit/653c6ca1af607623b653d3148b1bb45a304aab87)
+
+## [v0.5.9](https://github.com/http-party/node-http-proxy/compare/v0.5.8...v0.5.9) - 2011-05-23
+
+### Commits
+
+- [fix] Change sec-websocket-location header when proxying WSS --> WS. Added test coverage for this scenario [`028d204`](https://github.com/http-party/node-http-proxy/commit/028d2044e71d70b7bc21d339de29e2275c3be5c2)
+- [dist] Version bump. 0.5.9 [`57ca62c`](https://github.com/http-party/node-http-proxy/commit/57ca62c878c9a953f2344719556e05492ece3435)
+
+## [v0.5.8](https://github.com/http-party/node-http-proxy/compare/v0.5.7...v0.5.8) - 2011-05-21
+
+### Commits
+
+- [doc] Regenerate docco docs [`c5fd368`](https://github.com/http-party/node-http-proxy/commit/c5fd368a8d803b6ab47e32e744a6fd6a6ca5361f)
+- [doc] Update docco docs [`74120d8`](https://github.com/http-party/node-http-proxy/commit/74120d8988627bb0686d3a26cb8ec1408cc41287)
+- [doc] Update to v0.5.7 in code and README.md [`6fd272a`](https://github.com/http-party/node-http-proxy/commit/6fd272ac18240811d8a8a39c85ee483557c414b3)
+- [dist] Version bump. 0.5.8. Forwards compatible with new versions of nodejs [`76ecb51`](https://github.com/http-party/node-http-proxy/commit/76ecb51e7b41a23288f922c9c5df3ce40f67bf80)
+- [fix] Dont force `Connection: close` now that Keep-Alive is supported [`a86d18b`](https://github.com/http-party/node-http-proxy/commit/a86d18bc7f93d013df715d1f4d88e651846f645d)
+- [test] Update to vows description for web-socket-proxy-test.js [`a865fe6`](https://github.com/http-party/node-http-proxy/commit/a865fe662ff04a4badcc90ce2af80d2380c40a85)
+
+## [v0.5.7](https://github.com/http-party/node-http-proxy/compare/v0.5.6...v0.5.7) - 2011-05-19
+
+### Commits
+
+- [api] Add `x-forwarded-proto` and `x-forwarded-port` to proxied HTTP requests [`421895f`](https://github.com/http-party/node-http-proxy/commit/421895fa308d49628bbbb546d542efa96769c3f4)
+- [dist] Version bump. v0.5.7. Only good on node v0.4.7. See issue #48. [`0911c17`](https://github.com/http-party/node-http-proxy/commit/0911c1719e641c6e4342027e8d5d82c47c6f310e)
+- [fix] Set `x-forwarded-for` from req.connection.socket.remoteAddress if req.connection.remoteAddress is not defined [`e9b3ec9`](https://github.com/http-party/node-http-proxy/commit/e9b3ec9b1d0ebf427e138176b28af44f0f973670)
+
+## [v0.5.6](https://github.com/http-party/node-http-proxy/compare/v0.5.5...v0.5.6) - 2011-05-19
+
+### Commits
+
+- [fix doc] Add `error` handler to reverseProxy request when proxying WebSockets to prevent unhandled ParseError. Rename some variables in proxyWebSocketRequest to make the code more readable [`76580c2`](https://github.com/http-party/node-http-proxy/commit/76580c292a152c0007352a9d383f59e48993cd03)
+- [doc] Regenerate docco docs [`bd45216`](https://github.com/http-party/node-http-proxy/commit/bd45216bc9207e5016f394a4bfee2bdffcc669c7)
+- [api minor] Small refactor to emit `webSocketProxyError` from a single helper function on any of the various `error` events in the proxy chain [`5d2192e`](https://github.com/http-party/node-http-proxy/commit/5d2192e654f23e1b76e0b66554debe1590a3af64)
+- [api] Manual merge of #46: add custom `proxyError` event and enable production error handling. [`652cca3`](https://github.com/http-party/node-http-proxy/commit/652cca37ea321ec9d1d55125217df0214c8090b6)
+- [dist] Version bump. v0.5.6 Only good on node v0.4.7. See issue #48. [`f1c0f64`](https://github.com/http-party/node-http-proxy/commit/f1c0f641aa14dc3c267de37370a7369c3131c636)
+
+## [v0.5.5](https://github.com/http-party/node-http-proxy/compare/v0.5.4...v0.5.5) - 2011-05-19
+
+### Commits
+
+- [fix] Change variable references for Websockets, bugs found from using wsbench [`7bf0cae`](https://github.com/http-party/node-http-proxy/commit/7bf0caef9fae86a34719f04f7b9926095fb6a146)
+- [dist] Version bump. 0.5.5. Only good on node v0.4.7. See issue #48. [`acacc05`](https://github.com/http-party/node-http-proxy/commit/acacc0561f2efabc0a7859b9a410e954f2dca6fd)
+
+## [v0.5.4](https://github.com/http-party/node-http-proxy/compare/v0.5.3...v0.5.4) - 2011-05-19
+
+### Commits
+
+- [doc] Update docco docs [`faf2618`](https://github.com/http-party/node-http-proxy/commit/faf2618cf3b53a972779514842bc4264ec9541fa)
+- [doc] Update README.md to reflect the new HTTPS to HTTP proxy capabilities [`abc01bc`](https://github.com/http-party/node-http-proxy/commit/abc01bce293f7c1a88f9be08b0540407d2b0f4a1)
+- [doc test api] Improve node-http-proxy API to allow for HTTPS to HTTP proxying scenarios. Update tests accordingly. [`895f577`](https://github.com/http-party/node-http-proxy/commit/895f577744e3cbcbb5f479c4aacec5323bb001f7)
+- [doc] Update examples for HTTPS to HTTP proxying [`91737fa`](https://github.com/http-party/node-http-proxy/commit/91737fadb640f30d3cd959f29069537473207efd)
+- [dist] Version bump. 0.5.4. Only good on node v0.4.7. See issue #48. [`c04eec1`](https://github.com/http-party/node-http-proxy/commit/c04eec1c370ca0eb212c96c0896c27b349f7ea97)
+- [minor] Update README.md to conform to Github flavored markdown [`32a15dd`](https://github.com/http-party/node-http-proxy/commit/32a15dd79d860343453c38a7eef8339d7b99718b)
+- [minor] Update README.md to conform to Github flavored markdown [`521fe27`](https://github.com/http-party/node-http-proxy/commit/521fe271853632563143fb4b76c032f7afa7831a)
+
+## [v0.5.3](https://github.com/http-party/node-http-proxy/compare/v0.5.2...v0.5.3) - 2011-05-18
+
+### Commits
+
+- [test] Continued work around Origin mismatch tests [`44a8566`](https://github.com/http-party/node-http-proxy/commit/44a85664a80fd67e20bbc36d280816dbd1a796c5)
+- [doc] Regenerate docco docs [`9e36d2d`](https://github.com/http-party/node-http-proxy/commit/9e36d2d2e619be322bb73092db2a9d72ef6709e8)
+- [fix test api] Only change Origin headers in WebSocket requests when the `changeOrigin` option is set explicitly. Added tests to ensure Origin and sec-websocket-origin headers match when proxying websockets. [`9c6c4b9`](https://github.com/http-party/node-http-proxy/commit/9c6c4b908b7d6ce67144ba9d41702b5694254099)
+- [test] Improve websocket tests to inspect outgoing and incoming HTTP headers to test origin mismatch bugs [`6e679c8`](https://github.com/http-party/node-http-proxy/commit/6e679c8019e1eb62b2b1da48628f89b8046203fd)
+- [test] Refined tests to begin checking Origin == Sec-Websocket-Origin [`9ab54ab`](https://github.com/http-party/node-http-proxy/commit/9ab54ab47fc43d98f3182da9c41487f524933783)
+- [doc minor] Update docs and code docs for v0.5.3 release [`03b9087`](https://github.com/http-party/node-http-proxy/commit/03b908744612faed82d9233f3b6d4af70368cf3c)
+- [dist] Version bump. v0.5.3. Only good on node v0.4.7. See issue #48. [`d9fa261`](https://github.com/http-party/node-http-proxy/commit/d9fa261cdc97aee71279064e536a4a22edbe3b5b)
+
+## [v0.5.2](https://github.com/http-party/node-http-proxy/compare/v0.5.1...v0.5.2) - 2011-05-17
+
+### Merged
+
+- Readme: fix syntax error, reformat code blocks [`#52`](https://github.com/http-party/node-http-proxy/pull/52)
+
+### Commits
+
+- format markdown for syntax highlighting on GitHub [`28f6dc1`](https://github.com/http-party/node-http-proxy/commit/28f6dc153a7d9fa9b6a08637c90765cf3a07fd3e)
+- [doc] Regenerate docco docs [`a5e1e3e`](https://github.com/http-party/node-http-proxy/commit/a5e1e3e70d02f32ab86b711ec4b262df5955a1a9)
+- [test] Fix tests in https mode [`1ee6bef`](https://github.com/http-party/node-http-proxy/commit/1ee6beff6aa3087e332701fd3cfda70b4e968ce8)
+- [fix] Manage bookkeeping for incoming requests to the underlying sockets behind reverse proxied websocket events. Only use the appropriate variables in the closure scope of the `upgrade` event from this bookkeeping [`85223ea`](https://github.com/http-party/node-http-proxy/commit/85223ea0800ad63ea82783c9dc2dc4a0e3345ae8)
+- [minor] Fix syntax in examples/ [`ff82946`](https://github.com/http-party/node-http-proxy/commit/ff829467d33d326c588861a46acc2bf9adbdddd2)
+- add spacing around code blocks to fix README rendering [`ab8c264`](https://github.com/http-party/node-http-proxy/commit/ab8c264e6d729de81c93982f97875006e52240f0)
+- [dist] Use devDependencies in package.json [`e6c52d4`](https://github.com/http-party/node-http-proxy/commit/e6c52d431f8a32e11cd347fbabeb7a03d0d40790)
+- don't highlight non-javascript as javascript [`d5b9ba7`](https://github.com/http-party/node-http-proxy/commit/d5b9ba7180376b8a67b9cbfebe9acf7399cab3ed)
+- fix syntax error in README example [`332d2d7`](https://github.com/http-party/node-http-proxy/commit/332d2d780ab62ccc996157dacd2498c568816ffc)
+- [minor] Ignore npm modules and debug logs [`e90cbd6`](https://github.com/http-party/node-http-proxy/commit/e90cbd6f148633ef7d3e2de06aaabe1cc493cc37)
+- [dist] Include docco module as a dev dependency [`d08c2bb`](https://github.com/http-party/node-http-proxy/commit/d08c2bb525ec661c0c8e6539e28605972b1ae9b8)
+- [dist] Version bump. 0.5.2. Only good on node v0.4.7. See issue #48. [`360e79a`](https://github.com/http-party/node-http-proxy/commit/360e79a005d298f40f36ee0e25c34fe534311b09)
+
+## [v0.5.1](https://github.com/http-party/node-http-proxy/compare/v0.5.0...v0.5.1) - 2011-05-10
+
+### Commits
+
+- [dist] Version bump. 0.5.1. Only good on node v0.4.7. See issue #48. [`6c80177`](https://github.com/http-party/node-http-proxy/commit/6c8017734053bc683f32a2b9f0ba18ba0c014855)
+- Revert "Fixed "Invalid argument to getAgent" when proxying HTTP" [`40dc9de`](https://github.com/http-party/node-http-proxy/commit/40dc9dee2d1e617af7f85a056d281b4f220f2802)
+- [fix] Fix typo in bin/node-http-proxy [`57127a3`](https://github.com/http-party/node-http-proxy/commit/57127a367193bcf12be2b367e1e01cbc57d685fe)
+- Merged pull request #39 from timmattison/master. [`ac425d7`](https://github.com/http-party/node-http-proxy/commit/ac425d70ef63b847fe6eb17dbfc4b084d0dd2d20)
+- Fixed "Invalid argument to getAgent" when proxying HTTP [`642e158`](https://github.com/http-party/node-http-proxy/commit/642e15805dbd572835bb4fee9527e4f2da658833)
+
+## [v0.5.0](https://github.com/http-party/node-http-proxy/compare/v0.4.2...v0.5.0) - 2011-04-17
+
+### Commits
+
+- [doc] Breakout demo.js into files in example/. Add web-socket-proxy.js example [`6e4bf6a`](https://github.com/http-party/node-http-proxy/commit/6e4bf6a9cbc400fcd2be420649ce08936417dd83)
+- [api test doc] Improve HTTPS support. Update minor documentation. Change tests accordingly. [`bf68dc3`](https://github.com/http-party/node-http-proxy/commit/bf68dc30a5c508bc8f533f52c083206b87963811)
+- [api] Update WebSocket support to use http.Agent APIs [`b0b0183`](https://github.com/http-party/node-http-proxy/commit/b0b0183c2b54fa63bd2a6f9c92475c7f56d811a3)
+- [api] Update `.proxyRequest()` and `.proxyWebSocketRequest()` APIs to take an options hash instead of a set of arguments. Add HTTPS support. [`cfddd12`](https://github.com/http-party/node-http-proxy/commit/cfddd12e821bd6b07ff2dbf0aa543ddfc3664dca)
+- [doc api] Update README.md and CHANGELOG.md for v0.5.0. Update bin/node-http-proxy to read files specified in `config.https` [`212009d`](https://github.com/http-party/node-http-proxy/commit/212009df6b08de3c0c97a4e9ec43f60f6bf49ea6)
+- [test] Add WebSocket tests [`4d18ac1`](https://github.com/http-party/node-http-proxy/commit/4d18ac1ae611f84e5e0cc599234124d183d81ffd)
+- [doc] Regenerate docco docs [`c485c87`](https://github.com/http-party/node-http-proxy/commit/c485c8742c86b504823020d2cf6c1342a1bcce48)
+- [doc test] Small updates to README.md. Update to try require socket.io [`12064d8`](https://github.com/http-party/node-http-proxy/commit/12064d8e5debf674cd5d367e563b699f10a4325e)
+- [api] Remove winston logging in favor of custom events [`a89b397`](https://github.com/http-party/node-http-proxy/commit/a89b3976b25516db9b601c0327948f3d90fab006)
+- [doc] Update README.md [`bd6a262`](https://github.com/http-party/node-http-proxy/commit/bd6a2622ad67b8c7ec15868037a48048207ce0df)
+- [dist] Version bump. v0.5.0 [`ddf31b2`](https://github.com/http-party/node-http-proxy/commit/ddf31b22ec71ef9dacca9c178ee26b6314d9fdf4)
+- [api] Update `request` event to be consistent by emitting both `req` and `res`. Add `x-forwarded-for` header. [`a3cb527`](https://github.com/http-party/node-http-proxy/commit/a3cb527be5e42d5192400933bf32a361b8c707c4)
+- [api] Emit `end` event when done proxying [`5681fc1`](https://github.com/http-party/node-http-proxy/commit/5681fc1a28ff06dfa91d9bf5512c688235cafac4)
+- [minor] Small update to README.md [`40c51a7`](https://github.com/http-party/node-http-proxy/commit/40c51a703baaf050b35f60131d3e78b42e7b0858)
+- [dist] Move pgriess' websocket client into vendor/* [`7cbf447`](https://github.com/http-party/node-http-proxy/commit/7cbf44732068dc788d31432553b3bdfcfb39f743)
+
+## [v0.4.2](https://github.com/http-party/node-http-proxy/compare/v0.4.1...v0.4.2) - 2011-04-13
+
+### Commits
+
+- [dist] Version bump. 0.4.2. Remove `eyes` dependency. [`a5d88aa`](https://github.com/http-party/node-http-proxy/commit/a5d88aaacc209bdceaf0799e99ff82bdce1bdc10)
+
+## [v0.4.1](https://github.com/http-party/node-http-proxy/compare/v0.4.0...v0.4.1) - 2011-03-20
+
+### Commits
+
+- [dist] Version bump. 0.4.1. Fix package.json [`0d1a3fe`](https://github.com/http-party/node-http-proxy/commit/0d1a3fe99511dda1ac949536a9eb4a045db39979)
+
+## [v0.4.0](https://github.com/http-party/node-http-proxy/compare/v0.3.1...v0.4.0) - 2011-03-20
+
+### Commits
+
+- [api] Further work on refactor for node 0.4.0 [`e39a9f9`](https://github.com/http-party/node-http-proxy/commit/e39a9f93d2f9ab6ea769fad5e9dda25d022d8a1a)
+- [doc] Added docco generated literate coding documentation [`3bc7d16`](https://github.com/http-party/node-http-proxy/commit/3bc7d16adc48ad1aa1161bb02bd0c27d4fb20639)
+- [doc api test] Wrap things up for v0.4.0 release: Add hostnameOnly routing to ProxyTable, add more documentation, fix edge-cases until they can be further investigated in node.js core [`5715318`](https://github.com/http-party/node-http-proxy/commit/571531820e2233b0d2f7268a1d4db8510fcabf91)
+- [api] First pass at removing pool and working with node v0.4.0 [`9faa924`](https://github.com/http-party/node-http-proxy/commit/9faa924a29544cfd84c28cb1c45489f495e3806a)
+- [doc api test] Rename HttpProxy.pause to HttpProxy.resume. Update documentation and tests accordingly [`4110448`](https://github.com/http-party/node-http-proxy/commit/4110448046dd945afe3e092968d9382d573a369a)
+- [doc] Added more documentation [`973f19f`](https://github.com/http-party/node-http-proxy/commit/973f19fd5a14e3bfad5f67e54710a4076a469fe0)
+- [doc] Regenerate docco docs [`6c42f04`](https://github.com/http-party/node-http-proxy/commit/6c42f045241194061c3786ba5827aebf88070201)
+- [api] Force connection header to be `close` until keep-alive is replemented [`3fd3c96`](https://github.com/http-party/node-http-proxy/commit/3fd3c96fa05fda45c7ef9ff44594644ac54f4a1e)
+- [dist] Version bump. 0.4.0 [`cbb5fbc`](https://github.com/http-party/node-http-proxy/commit/cbb5fbccd0e65c51eba14e75ef44184714cc8971)
+- [api test] All tests are passing when run as individual files [`389159d`](https://github.com/http-party/node-http-proxy/commit/389159da1b91ab60b8de3c379d84e76c703e6b59)
+- [minor doc] Update demo and small fix to node-http-proxy [`d8c5406`](https://github.com/http-party/node-http-proxy/commit/d8c54063dc5961fa619f7c04fa2d225da9aa1439)
+- [fix] Fixed cli parsing issue when --argument=value is not used [`34cba38`](https://github.com/http-party/node-http-proxy/commit/34cba38c297d6dcb845e95b9e1ce0271da1631d2)
+- [test] Small update to proxy-table-test.js [`3588687`](https://github.com/http-party/node-http-proxy/commit/3588687874eb691fe59407a207d38efa418211d0)
+- [minor] Expose version on module [`1dd9b3b`](https://github.com/http-party/node-http-proxy/commit/1dd9b3b15088a3c4595faae64822969014a61d52)
+- [doc] Update to v0.3.1 in README.md [`8ef2e1f`](https://github.com/http-party/node-http-proxy/commit/8ef2e1fe33e0fca2b80c0d6474dba994e625f094)
+- [dist] Change package.json for npm version bump [`0e7f362`](https://github.com/http-party/node-http-proxy/commit/0e7f3626718ecf108f3cafa814b0f4ffb3e6faa2)
+
+## [v0.3.1](https://github.com/http-party/node-http-proxy/compare/v0.3.0...v0.3.1) - 2010-11-22
+
+### Commits
+
+- [api test doc] Updated tests. Added ProxyTable functionality [`bedc7a3`](https://github.com/http-party/node-http-proxy/commit/bedc7a3ae57d5ec07b372a550fa69772f9fbc19e)
+- [test] Simplified tests. Added tests for experimental websocket support [`8c3e993`](https://github.com/http-party/node-http-proxy/commit/8c3e993833e2a09376fdb5e7c847ff00b53e70d8)
+- [test doc api] Added forward proxy functionality with tests [`c06f4bf`](https://github.com/http-party/node-http-proxy/commit/c06f4bf7fe50f29677dc5a5aad596193fc893018)
+- [dist minor] Removed vendored pool. Changed all references of sys to util [`8251296`](https://github.com/http-party/node-http-proxy/commit/8251296d7f5c472ec523316e905d678042b043d3)
+- WebSocket proxy support, fixed 304 code halting [`7249ef3`](https://github.com/http-party/node-http-proxy/commit/7249ef3ee776c66acc95036dc76a2d08dc3f6350)
+- [api] pseduo-vendor pool until pull request is finalized [`7c2eb5d`](https://github.com/http-party/node-http-proxy/commit/7c2eb5de3531f20ea92c99dd8ab207d26be9dce8)
+- No-server fix [`f84880f`](https://github.com/http-party/node-http-proxy/commit/f84880fcd946e55585d8e901e5bc32933f629837)
+- [api test bin doc] Added bin script and simple logging [`00014d6`](https://github.com/http-party/node-http-proxy/commit/00014d624c052e7404ce96c7e06769440c4eae2a)
+- [debug] Removed pool as a dependency for stress test [`73381cf`](https://github.com/http-party/node-http-proxy/commit/73381cf71ae92b9ed1c2da5986aa7ca31a7cf2e8)
+- 'end' event becomes 'close', added more try-catch handling [`cd78af5`](https://github.com/http-party/node-http-proxy/commit/cd78af5feaa67c5005df921a8d1a61575a58fca2)
+- Added support of automatic websocket tunneling, added test for it [`56003b5`](https://github.com/http-party/node-http-proxy/commit/56003b527625b2d83a191f3172005c87856aa87d)
+- [debug] Better debug messages to try to determine if pool is slowly losing clients to forever busy [`dd1918d`](https://github.com/http-party/node-http-proxy/commit/dd1918dc360dc0f9553c35c82f3f0f93ac3bfb46)
+- [doc dist] Version bump. Added CHANGELOG.md [`de53d5e`](https://github.com/http-party/node-http-proxy/commit/de53d5eb2c3d671be0ad0e736a6435c3bf5f55f4)
+- Moved error handling to response.on('end'), fixed error handling in websocket's part [`7e61f0c`](https://github.com/http-party/node-http-proxy/commit/7e61f0cf5725dedf37b956545639c2d6129855d3)
+- [minor] Pushing hot-fix from Mikeal for vendored pool repo [`60791f3`](https://github.com/http-party/node-http-proxy/commit/60791f361f8a11f9d1bad2c6366bf0ce72b40f66)
+- [api] Integrated commits from donnerjack and worked on pool changes [`3bb458e`](https://github.com/http-party/node-http-proxy/commit/3bb458e115037bc27691705d255b0d2e2504a9f1)
+- [doc] Updated Copyright ... added Fedor [`9128a8c`](https://github.com/http-party/node-http-proxy/commit/9128a8c5a15d0f64a0bae946f3e741ea708bc56f)
+- [minor] Listen to error event on pool so we dont fail out unexpectedly anymore [`711258e`](https://github.com/http-party/node-http-proxy/commit/711258ef469d064cc0dbe0f0320ed1047ed0bd54)
+- adding more debugging messages [`5d54ea5`](https://github.com/http-party/node-http-proxy/commit/5d54ea58c93c26635e0de96871e824baffea34dd)
+- adding some debug messages for live testing [`4069a7e`](https://github.com/http-party/node-http-proxy/commit/4069a7e98c22a48bae7fd57ad5f315d0e5006dfc)
+- [minor] Listen to error events re-emitted by pool into the ClientRequest [`f8bff4c`](https://github.com/http-party/node-http-proxy/commit/f8bff4c618ab2a6b6185ac973cd0e21cea19c23a)
+- [minor] Updated max clients for pool [`32aaf74`](https://github.com/http-party/node-http-proxy/commit/32aaf74e95f8a39d847b352ca984145e7abe89a6)
+- [debug] Trying to repair pool busy client growth [`7b0ea85`](https://github.com/http-party/node-http-proxy/commit/7b0ea85e2ac58d5f711f64b855f746fb2423a276)
+- [debug] Roll back last commit ... connection = close was ineffective [`266e524`](https://github.com/http-party/node-http-proxy/commit/266e5246eacb4877bb6ab557e6e6b9b8434ad612)
+
+## [v0.3.0](https://github.com/http-party/node-http-proxy/compare/v0.2.0...v0.3.0) - 2010-09-10
+
+### Commits
+
+- [api] Revert to old 0.1.x codebase for bug testing and performance comparison [`66afb2a`](https://github.com/http-party/node-http-proxy/commit/66afb2a2a35a479512ce2601c89b82f13596fc9f)
+- [api test dist doc] Updated for 0.3.0 release [`a9084b9`](https://github.com/http-party/node-http-proxy/commit/a9084b923afa66c3004abec4951ff02e031631da)
+- [api] Object creation is cheap for HttpProxy, so lets take advantage [`9f0aeac`](https://github.com/http-party/node-http-proxy/commit/9f0aeacab1a632136f5905a0d03ad04be9f93f51)
+- [doc] Update contributors for 0.3.0 [`6d47d98`](https://github.com/http-party/node-http-proxy/commit/6d47d98f5345b7f335c3b93f8e4a31dd90235dda)
+
+## [v0.2.0](https://github.com/http-party/node-http-proxy/compare/v0.1.5...v0.2.0) - 2010-09-07
+
+### Commits
+
+- [dist] Version bump and update to README + LICENCE. Word to Mikeal for coming thru for 0.2.0 [`69c162d`](https://github.com/http-party/node-http-proxy/commit/69c162dc3da334b2ece0a19be5ea4c8da7e0fe87)
+- [api dist] Merge of branch 0.2.0 [`fd61828`](https://github.com/http-party/node-http-proxy/commit/fd618289338ca2d7595f695c0b8531b40145bbca)
+- [api] Completely refactored node-http-proxy with help from Mikeal [`1221939`](https://github.com/http-party/node-http-proxy/commit/1221939accf00467adb25f8908e991e984043c85)
+- [api minor debug] Remove debug code, set Connection header if not set [`6d08f24`](https://github.com/http-party/node-http-proxy/commit/6d08f24c863e071eb4a0d3ede15656e5e7c27c4b)
+- [debug] Added some debugging to figure out why AB wont complete a test with v0.2.0 [`9715ebd`](https://github.com/http-party/node-http-proxy/commit/9715ebd40bdbbe883eb383676d5b0df24968dd72)
+- [api] Integrated a little more from Mikeal to make our return headers consistent [`eb39018`](https://github.com/http-party/node-http-proxy/commit/eb39018fd0b5751dd90fabce905997e52f2ffecd)
+- [doc] Updated README.md [`f291efb`](https://github.com/http-party/node-http-proxy/commit/f291efbaa4360d6e7ff4004cc11f8df0d737c1d0)
+
+## v0.1.5 - 2010-09-02
+
+### Commits
+
+- [api] More changes for createServer api [`5d94ae2`](https://github.com/http-party/node-http-proxy/commit/5d94ae27bc2d56d1f817b0cf1dfdb01dcc376393)
+- added colors and asciimo [`d490b50`](https://github.com/http-party/node-http-proxy/commit/d490b50ada8c1024cb785335966b71d69fae3407)
+- [api] First commit of http-proxy [`30b68c1`](https://github.com/http-party/node-http-proxy/commit/30b68c153270619119ec36615bb54ee7a2816ecc)
+- updating demo [`c4b7c0d`](https://github.com/http-party/node-http-proxy/commit/c4b7c0d8a0cc5fd7f43257594bd0a71c7bd12a63)
+- initial release v0.1.0, sure to have many updates coming. [`85f7372`](https://github.com/http-party/node-http-proxy/commit/85f73723415ec54539721777e77d5d10de383469)
+- fleshing out demo [`994f748`](https://github.com/http-party/node-http-proxy/commit/994f7481ce07c15afa5ab993b79d920b8220be44)
+- [docs] added benchmarks [`bbed176`](https://github.com/http-party/node-http-proxy/commit/bbed17640f84e56aaea06c6d4eb7d04952957fce)
+- updated paths to use npm [`972c8c0`](https://github.com/http-party/node-http-proxy/commit/972c8c05274c72c7320291389f88b0694ac290ca)
+- added spark demo [`d0ad931`](https://github.com/http-party/node-http-proxy/commit/d0ad93176d8430301a8a42f8c2b817674ce7ba32)
+- [test] Updated tests to include support for latent requests [`095e86a`](https://github.com/http-party/node-http-proxy/commit/095e86aa653c1c8e07cd1403697e0e4b638b8294)
+- started to flesh out simple demo based on tests [`2fb5ffb`](https://github.com/http-party/node-http-proxy/commit/2fb5ffba7765462e95badd0f7243e65395a3fd2e)
+- added createServer but hated it, gonna remove [`b1eb13e`](https://github.com/http-party/node-http-proxy/commit/b1eb13eb70b67ea76f5ab720d566894677a53ca2)
+- [test] Updated node-http-proxy tests [`2f265a2`](https://github.com/http-party/node-http-proxy/commit/2f265a23e4a10971495d0bd7b324b7ba786e5065)
+- [api] Updated request hashes to use a unique identifier [`c887a75`](https://github.com/http-party/node-http-proxy/commit/c887a757623f5a3d7d1e0fafeb00b96731c89872)
+- [api] Updated http-proxy to work with vows [`ead7567`](https://github.com/http-party/node-http-proxy/commit/ead7567db8099264a2001fd876cded84bc4f111f)
+- [dist] Renamed node-proxy to node-http-proxy, updated package.json [`2f49810`](https://github.com/http-party/node-http-proxy/commit/2f49810ef86f49927991f32ae42605f1118b0c25)
+- updating docs, almost there [`6e651f4`](https://github.com/http-party/node-http-proxy/commit/6e651f420f4d1e15dbbf823a8e3b311e9533c805)
+- changed api to better reflect nodes api. updated demos, tests, docs [`bde98f4`](https://github.com/http-party/node-http-proxy/commit/bde98f489234fe22f49468011b7e342cd108603f)
+- updating docs [`341bbd4`](https://github.com/http-party/node-http-proxy/commit/341bbd404f3fd81e65197b3830c3fa9e544bc1e7)
+- fixed npm package, i think. bumped version 0.1.1 [`fca40da`](https://github.com/http-party/node-http-proxy/commit/fca40da694d8df17ed6140265e374c0ceabd1167)
+- updated demo [`b622702`](https://github.com/http-party/node-http-proxy/commit/b62270210e7ad3c54fd6b2c86bde9f9942328a67)
+- added readme [`d6a2f8a`](https://github.com/http-party/node-http-proxy/commit/d6a2f8aa7dae3f6721b9607a702c68b1ad7fc692)
+- [api] Corrected chain of argument passing [`da55777`](https://github.com/http-party/node-http-proxy/commit/da55777a92d100a5ddb7a8267e56ba26bd8c2270)
+- updated demo [`e9511ea`](https://github.com/http-party/node-http-proxy/commit/e9511eafdf9ada6a0ce6defb3c5f2299411633b1)
+- [deploy] Added package.json [`dce80b9`](https://github.com/http-party/node-http-proxy/commit/dce80b9b4546064da1943e0e396e19b41390588a)
+- updated readme [`76d0649`](https://github.com/http-party/node-http-proxy/commit/76d0649abcafd80509af922503c5544e646bcebb)
+- update to docs and package.json [`d15bba4`](https://github.com/http-party/node-http-proxy/commit/d15bba4c1d2cbdaf0af27f3adcaa1db9b534d968)
+- [minor] Removed eyes dependency [`eaeed83`](https://github.com/http-party/node-http-proxy/commit/eaeed8306d6dc6e1b30223cf6d59cda6d5bb76de)
+- merge [`93505a4`](https://github.com/http-party/node-http-proxy/commit/93505a422c688b7f41fdaf304270c893ef4cf09a)
+- fixed additional port / server mismatches for new api [`15c18b6`](https://github.com/http-party/node-http-proxy/commit/15c18b612d6cd5a1f3ae46b5590dda1fc586fb35)
+- [doc] added nodejitsu.com link to ReadMe. http-proxy is used in our front facing load-balancers. look for bugs...try to improve benchmarks.... ^_^ [`6661753`](https://github.com/http-party/node-http-proxy/commit/6661753f07dcf4e5ae684df4d1709f3c238346c9)
+- removed extra self, updated colors requirement, bumped to version 0.1.3 [`9bc5b6f`](https://github.com/http-party/node-http-proxy/commit/9bc5b6f8621fb2a37e84524c3e5b91aab9b45675)
+- fixed pathing issue, bumped version 0.1.3 [`ede6490`](https://github.com/http-party/node-http-proxy/commit/ede649037e08b615a8995179f46bc701550354d6)
+- updated docs [`07d96bb`](https://github.com/http-party/node-http-proxy/commit/07d96bb8887a7880a21a739e0a8f495698e7e79e)
+- updated docs [`1594367`](https://github.com/http-party/node-http-proxy/commit/15943675edef490d9b8732345a750bc5ab1f5d7e)
+- updated readme [`fb8c5ab`](https://github.com/http-party/node-http-proxy/commit/fb8c5abd3c2a722c1c18046dcf2fffea4fa7d050)
+- updated docs [`17b6c69`](https://github.com/http-party/node-http-proxy/commit/17b6c6998544572300fc9d4faa63af1aee4c3d88)
+- updated docs [`c8dd8c4`](https://github.com/http-party/node-http-proxy/commit/c8dd8c4e28e09f25c161980316b259d81d5a4e91)
+- updated package.json again [`ddba155`](https://github.com/http-party/node-http-proxy/commit/ddba155377942259554842f37de98c508130fe11)
+- initial release v0.1.0, sure to have many updates coming. [`6a1baa2`](https://github.com/http-party/node-http-proxy/commit/6a1baa25ccf9fc3a3fc4d1a4764c968993e48cab)
+- bumped to version 0.1.5 [`b195a16`](https://github.com/http-party/node-http-proxy/commit/b195a16406534912161671448a53d6633a1f2458)
+- updated readme [`9aa2216`](https://github.com/http-party/node-http-proxy/commit/9aa22162f139ab2fa6df6b11e2a96336ee1d2612)
+- added spark demo [`d408e39`](https://github.com/http-party/node-http-proxy/commit/d408e39ed6dbd44709d0164a95ad9bc67f76ba13)
+- bumped to version 0.1.4. improved on api [`82b8228`](https://github.com/http-party/node-http-proxy/commit/82b822827d35a54501068f9880111473e19c72f9)
+- initial release v0.1.0, sure to have many updates coming. [`1e04552`](https://github.com/http-party/node-http-proxy/commit/1e04552bd8f39e3dcba36bbf7fb36674e5c0c9ff)
+- updated readme [`0a2eaaa`](https://github.com/http-party/node-http-proxy/commit/0a2eaaa7db690f86aca8c0b952f745e806ad818c)
+- updating docs [`198000f`](https://github.com/http-party/node-http-proxy/commit/198000feefd525125a2031557b3556978a057bde)
+- [api] Added createServer api to node-http-proxy [`2e2b55f`](https://github.com/http-party/node-http-proxy/commit/2e2b55f113eb3bc81c43717c0db5de695fb694c1)
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/CODE_OF_CONDUCT.md b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000000000000000000000000000000000..29238b798d7d372d9e62518038d9cc6d8ae9e63e
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/CODE_OF_CONDUCT.md
@@ -0,0 +1,74 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of experience,
+nationality, personal appearance, race, religion, or sexual identity and
+orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at . All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/LICENSE b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..84820c000caadc2dcb0ff8d32e5b7cd43eb57645
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/LICENSE
@@ -0,0 +1,23 @@
+
+ node-http-proxy
+
+ Copyright (c) 2010-2016 Charlie Robbins, Jarrett Cruger & the Contributors.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/README.md b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..5b2d0b3a21543e2939273db3d71338229a5a26b6
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/README.md
@@ -0,0 +1,568 @@
+
+
+
+
+# node-http-proxy [](https://travis-ci.org/http-party/node-http-proxy) [](https://codecov.io/gh/http-party/node-http-proxy)
+
+`node-http-proxy` is an HTTP programmable proxying library that supports
+websockets. It is suitable for implementing components such as reverse
+proxies and load balancers.
+
+### Table of Contents
+ * [Installation](#installation)
+ * [Upgrading from 0.8.x ?](#upgrading-from-08x-)
+ * [Core Concept](#core-concept)
+ * [Use Cases](#use-cases)
+ * [Setup a basic stand-alone proxy server](#setup-a-basic-stand-alone-proxy-server)
+ * [Setup a stand-alone proxy server with custom server logic](#setup-a-stand-alone-proxy-server-with-custom-server-logic)
+ * [Setup a stand-alone proxy server with proxy request header re-writing](#setup-a-stand-alone-proxy-server-with-proxy-request-header-re-writing)
+ * [Modify a response from a proxied server](#modify-a-response-from-a-proxied-server)
+ * [Setup a stand-alone proxy server with latency](#setup-a-stand-alone-proxy-server-with-latency)
+ * [Using HTTPS](#using-https)
+ * [Proxying WebSockets](#proxying-websockets)
+ * [Options](#options)
+ * [Listening for proxy events](#listening-for-proxy-events)
+ * [Shutdown](#shutdown)
+ * [Miscellaneous](#miscellaneous)
+ * [Test](#test)
+ * [ProxyTable API](#proxytable-api)
+ * [Logo](#logo)
+ * [Contributing and Issues](#contributing-and-issues)
+ * [License](#license)
+
+### Installation
+
+`npm install http-proxy --save`
+
+**[Back to top](#table-of-contents)**
+
+### Upgrading from 0.8.x ?
+
+Click [here](UPGRADING.md)
+
+**[Back to top](#table-of-contents)**
+
+### Core Concept
+
+A new proxy is created by calling `createProxyServer` and passing
+an `options` object as argument ([valid properties are available here](lib/http-proxy.js#L26-L42))
+
+```javascript
+var httpProxy = require('http-proxy');
+
+var proxy = httpProxy.createProxyServer(options); // See (†)
+```
+†Unless listen(..) is invoked on the object, this does not create a webserver. See below.
+
+An object will be returned with four methods:
+
+* web `req, res, [options]` (used for proxying regular HTTP(S) requests)
+* ws `req, socket, head, [options]` (used for proxying WS(S) requests)
+* listen `port` (a function that wraps the object in a webserver, for your convenience)
+* close `[callback]` (a function that closes the inner webserver and stops listening on given port)
+
+It is then possible to proxy requests by calling these functions
+
+```javascript
+http.createServer(function(req, res) {
+ proxy.web(req, res, { target: 'http://mytarget.com:8080' });
+});
+```
+
+Errors can be listened on either using the Event Emitter API
+
+```javascript
+proxy.on('error', function(e) {
+ ...
+});
+```
+
+or using the callback API
+
+```javascript
+proxy.web(req, res, { target: 'http://mytarget.com:8080' }, function(e) { ... });
+```
+
+When a request is proxied it follows two different pipelines ([available here](lib/http-proxy/passes))
+which apply transformations to both the `req` and `res` object.
+The first pipeline (incoming) is responsible for the creation and manipulation of the stream that connects your client to the target.
+The second pipeline (outgoing) is responsible for the creation and manipulation of the stream that, from your target, returns data
+to the client.
+
+**[Back to top](#table-of-contents)**
+
+### Use Cases
+
+#### Setup a basic stand-alone proxy server
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+//
+// Create your proxy server and set the target in the options.
+//
+httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(8000); // See (†)
+
+//
+// Create your target server
+//
+http.createServer(function (req, res) {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
+ res.end();
+}).listen(9000);
+```
+†Invoking listen(..) triggers the creation of a web server. Otherwise, just the proxy instance is created.
+
+**[Back to top](#table-of-contents)**
+
+#### Setup a stand-alone proxy server with custom server logic
+This example shows how you can proxy a request using your own HTTP server
+and also you can put your own logic to handle the request.
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+
+//
+// Create a proxy server with custom application logic
+//
+var proxy = httpProxy.createProxyServer({});
+
+//
+// Create your custom server and just call `proxy.web()` to proxy
+// a web request to the target passed in the options
+// also you can use `proxy.ws()` to proxy a websockets request
+//
+var server = http.createServer(function(req, res) {
+ // You can define here your custom logic to handle the request
+ // and then proxy the request.
+ proxy.web(req, res, { target: 'http://127.0.0.1:5050' });
+});
+
+console.log("listening on port 5050")
+server.listen(5050);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Setup a stand-alone proxy server with proxy request header re-writing
+This example shows how you can proxy a request using your own HTTP server that
+modifies the outgoing proxy request by adding a special header.
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+
+//
+// Create a proxy server with custom application logic
+//
+var proxy = httpProxy.createProxyServer({});
+
+// To modify the proxy connection before data is sent, you can listen
+// for the 'proxyReq' event. When the event is fired, you will receive
+// the following arguments:
+// (http.ClientRequest proxyReq, http.IncomingMessage req,
+// http.ServerResponse res, Object options). This mechanism is useful when
+// you need to modify the proxy request before the proxy connection
+// is made to the target.
+//
+proxy.on('proxyReq', function(proxyReq, req, res, options) {
+ proxyReq.setHeader('X-Special-Proxy-Header', 'foobar');
+});
+
+var server = http.createServer(function(req, res) {
+ // You can define here your custom logic to handle the request
+ // and then proxy the request.
+ proxy.web(req, res, {
+ target: 'http://127.0.0.1:5050'
+ });
+});
+
+console.log("listening on port 5050")
+server.listen(5050);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Modify a response from a proxied server
+Sometimes when you have received a HTML/XML document from the server of origin you would like to modify it before forwarding it on.
+
+[Harmon](https://github.com/No9/harmon) allows you to do this in a streaming style so as to keep the pressure on the proxy to a minimum.
+
+**[Back to top](#table-of-contents)**
+
+#### Setup a stand-alone proxy server with latency
+
+```js
+var http = require('http'),
+ httpProxy = require('http-proxy');
+
+//
+// Create a proxy server with latency
+//
+var proxy = httpProxy.createProxyServer();
+
+//
+// Create your server that makes an operation that waits a while
+// and then proxies the request
+//
+http.createServer(function (req, res) {
+ // This simulates an operation that takes 500ms to execute
+ setTimeout(function () {
+ proxy.web(req, res, {
+ target: 'http://localhost:9008'
+ });
+ }, 500);
+}).listen(8008);
+
+//
+// Create your target server
+//
+http.createServer(function (req, res) {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
+ res.end();
+}).listen(9008);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Using HTTPS
+You can activate the validation of a secure SSL certificate to the target connection (avoid self-signed certs), just set `secure: true` in the options.
+
+##### HTTPS -> HTTP
+
+```js
+//
+// Create the HTTPS proxy server in front of a HTTP server
+//
+httpProxy.createServer({
+ target: {
+ host: 'localhost',
+ port: 9009
+ },
+ ssl: {
+ key: fs.readFileSync('valid-ssl-key.pem', 'utf8'),
+ cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8')
+ }
+}).listen(8009);
+```
+
+##### HTTPS -> HTTPS
+
+```js
+//
+// Create the proxy server listening on port 443
+//
+httpProxy.createServer({
+ ssl: {
+ key: fs.readFileSync('valid-ssl-key.pem', 'utf8'),
+ cert: fs.readFileSync('valid-ssl-cert.pem', 'utf8')
+ },
+ target: 'https://localhost:9010',
+ secure: true // Depends on your needs, could be false.
+}).listen(443);
+```
+
+##### HTTP -> HTTPS (using a PKCS12 client certificate)
+
+```js
+//
+// Create an HTTP proxy server with an HTTPS target
+//
+httpProxy.createProxyServer({
+ target: {
+ protocol: 'https:',
+ host: 'my-domain-name',
+ port: 443,
+ pfx: fs.readFileSync('path/to/certificate.p12'),
+ passphrase: 'password',
+ },
+ changeOrigin: true,
+}).listen(8000);
+```
+
+**[Back to top](#table-of-contents)**
+
+#### Proxying WebSockets
+You can activate the websocket support for the proxy using `ws:true` in the options.
+
+```js
+//
+// Create a proxy server for websockets
+//
+httpProxy.createServer({
+ target: 'ws://localhost:9014',
+ ws: true
+}).listen(8014);
+```
+
+Also you can proxy the websocket requests just calling the `ws(req, socket, head)` method.
+
+```js
+//
+// Setup our server to proxy standard HTTP requests
+//
+var proxy = new httpProxy.createProxyServer({
+ target: {
+ host: 'localhost',
+ port: 9015
+ }
+});
+var proxyServer = http.createServer(function (req, res) {
+ proxy.web(req, res);
+});
+
+//
+// Listen to the `upgrade` event and proxy the
+// WebSocket requests as well.
+//
+proxyServer.on('upgrade', function (req, socket, head) {
+ proxy.ws(req, socket, head);
+});
+
+proxyServer.listen(8015);
+```
+
+**[Back to top](#table-of-contents)**
+
+### Options
+
+`httpProxy.createProxyServer` supports the following options:
+
+* **target**: url string to be parsed with the url module
+* **forward**: url string to be parsed with the url module
+* **agent**: object to be passed to http(s).request (see Node's [https agent](http://nodejs.org/api/https.html#https_class_https_agent) and [http agent](http://nodejs.org/api/http.html#http_class_http_agent) objects)
+* **ssl**: object to be passed to https.createServer()
+* **ws**: true/false, if you want to proxy websockets
+* **xfwd**: true/false, adds x-forward headers
+* **secure**: true/false, if you want to verify the SSL Certs
+* **toProxy**: true/false, passes the absolute URL as the `path` (useful for proxying to proxies)
+* **prependPath**: true/false, Default: true - specify whether you want to prepend the target's path to the proxy path
+* **ignorePath**: true/false, Default: false - specify whether you want to ignore the proxy path of the incoming request (note: you will have to append / manually if required).
+* **localAddress**: Local interface string to bind for outgoing connections
+* **changeOrigin**: true/false, Default: false - changes the origin of the host header to the target URL
+* **preserveHeaderKeyCase**: true/false, Default: false - specify whether you want to keep letter case of response header key
+* **auth**: Basic authentication i.e. 'user:password' to compute an Authorization header.
+* **hostRewrite**: rewrites the location hostname on (201/301/302/307/308) redirects.
+* **autoRewrite**: rewrites the location host/port on (201/301/302/307/308) redirects based on requested host/port. Default: false.
+* **protocolRewrite**: rewrites the location protocol on (201/301/302/307/308) redirects to 'http' or 'https'. Default: null.
+* **cookieDomainRewrite**: rewrites domain of `set-cookie` headers. Possible values:
+ * `false` (default): disable cookie rewriting
+ * String: new domain, for example `cookieDomainRewrite: "new.domain"`. To remove the domain, use `cookieDomainRewrite: ""`.
+ * Object: mapping of domains to new domains, use `"*"` to match all domains.
+ For example keep one domain unchanged, rewrite one domain and remove other domains:
+ ```
+ cookieDomainRewrite: {
+ "unchanged.domain": "unchanged.domain",
+ "old.domain": "new.domain",
+ "*": ""
+ }
+ ```
+* **cookiePathRewrite**: rewrites path of `set-cookie` headers. Possible values:
+ * `false` (default): disable cookie rewriting
+ * String: new path, for example `cookiePathRewrite: "/newPath/"`. To remove the path, use `cookiePathRewrite: ""`. To set path to root use `cookiePathRewrite: "/"`.
+ * Object: mapping of paths to new paths, use `"*"` to match all paths.
+ For example, to keep one path unchanged, rewrite one path and remove other paths:
+ ```
+ cookiePathRewrite: {
+ "/unchanged.path/": "/unchanged.path/",
+ "/old.path/": "/new.path/",
+ "*": ""
+ }
+ ```
+* **headers**: object with extra headers to be added to target requests.
+* **proxyTimeout**: timeout (in millis) for outgoing proxy requests
+* **timeout**: timeout (in millis) for incoming requests
+* **followRedirects**: true/false, Default: false - specify whether you want to follow redirects
+* **selfHandleResponse** true/false, if set to true, none of the webOutgoing passes are called and it's your responsibility to appropriately return the response by listening and acting on the `proxyRes` event
+* **buffer**: stream of data to send as the request body. Maybe you have some middleware that consumes the request stream before proxying it on e.g. If you read the body of a request into a field called 'req.rawbody' you could restream this field in the buffer option:
+
+ ```
+ 'use strict';
+
+ const streamify = require('stream-array');
+ const HttpProxy = require('http-proxy');
+ const proxy = new HttpProxy();
+
+ module.exports = (req, res, next) => {
+
+ proxy.web(req, res, {
+ target: 'http://localhost:4003/',
+ buffer: streamify(req.rawBody)
+ }, next);
+
+ };
+ ```
+
+**NOTE:**
+`options.ws` and `options.ssl` are optional.
+`options.target` and `options.forward` cannot both be missing
+
+If you are using the `proxyServer.listen` method, the following options are also applicable:
+
+ * **ssl**: object to be passed to https.createServer()
+ * **ws**: true/false, if you want to proxy websockets
+
+
+**[Back to top](#table-of-contents)**
+
+### Listening for proxy events
+
+* `error`: The error event is emitted if the request to the target fail. **We do not do any error handling of messages passed between client and proxy, and messages passed between proxy and target, so it is recommended that you listen on errors and handle them.**
+* `proxyReq`: This event is emitted before the data is sent. It gives you a chance to alter the proxyReq request object. Applies to "web" connections
+* `proxyReqWs`: This event is emitted before the data is sent. It gives you a chance to alter the proxyReq request object. Applies to "websocket" connections
+* `proxyRes`: This event is emitted if the request to the target got a response.
+* `open`: This event is emitted once the proxy websocket was created and piped into the target websocket.
+* `close`: This event is emitted once the proxy websocket was closed.
+* (DEPRECATED) `proxySocket`: Deprecated in favor of `open`.
+
+```js
+var httpProxy = require('http-proxy');
+// Error example
+//
+// Http Proxy Server with bad target
+//
+var proxy = httpProxy.createServer({
+ target:'http://localhost:9005'
+});
+
+proxy.listen(8005);
+
+//
+// Listen for the `error` event on `proxy`.
+proxy.on('error', function (err, req, res) {
+ res.writeHead(500, {
+ 'Content-Type': 'text/plain'
+ });
+
+ res.end('Something went wrong. And we are reporting a custom error message.');
+});
+
+//
+// Listen for the `proxyRes` event on `proxy`.
+//
+proxy.on('proxyRes', function (proxyRes, req, res) {
+ console.log('RAW Response from the target', JSON.stringify(proxyRes.headers, true, 2));
+});
+
+//
+// Listen for the `open` event on `proxy`.
+//
+proxy.on('open', function (proxySocket) {
+ // listen for messages coming FROM the target here
+ proxySocket.on('data', hybiParseAndLogMessage);
+});
+
+//
+// Listen for the `close` event on `proxy`.
+//
+proxy.on('close', function (res, socket, head) {
+ // view disconnected websocket connections
+ console.log('Client disconnected');
+});
+```
+
+**[Back to top](#table-of-contents)**
+
+### Shutdown
+
+* When testing or running server within another program it may be necessary to close the proxy.
+* This will stop the proxy from accepting new connections.
+
+```js
+var proxy = new httpProxy.createProxyServer({
+ target: {
+ host: 'localhost',
+ port: 1337
+ }
+});
+
+proxy.close();
+```
+
+**[Back to top](#table-of-contents)**
+
+### Miscellaneous
+
+If you want to handle your own response after receiving the `proxyRes`, you can do
+so with `selfHandleResponse`. As you can see below, if you use this option, you
+are able to intercept and read the `proxyRes` but you must also make sure to
+reply to the `res` itself otherwise the original client will never receive any
+data.
+
+### Modify response
+
+```js
+
+ var option = {
+ target: target,
+ selfHandleResponse : true
+ };
+ proxy.on('proxyRes', function (proxyRes, req, res) {
+ var body = [];
+ proxyRes.on('data', function (chunk) {
+ body.push(chunk);
+ });
+ proxyRes.on('end', function () {
+ body = Buffer.concat(body).toString();
+ console.log("res from proxied server:", body);
+ res.end("my response to cli");
+ });
+ });
+ proxy.web(req, res, option);
+
+
+```
+
+#### ProxyTable API
+
+A proxy table API is available through this add-on [module](https://github.com/donasaur/http-proxy-rules), which lets you define a set of rules to translate matching routes to target routes that the reverse proxy will talk to.
+
+#### Test
+
+```
+$ npm test
+```
+
+#### Logo
+
+Logo created by [Diego Pasquali](http://dribbble.com/diegopq)
+
+**[Back to top](#table-of-contents)**
+
+### Contributing and Issues
+
+* Read carefully our [Code Of Conduct](https://github.com/http-party/node-http-proxy/blob/master/CODE_OF_CONDUCT.md)
+* Search on Google/Github
+* If you can't find anything, open an issue
+* If you feel comfortable about fixing the issue, fork the repo
+* Commit to your local branch (which must be different from `master`)
+* Submit your Pull Request (be sure to include tests and update documentation)
+
+**[Back to top](#table-of-contents)**
+
+### License
+
+>The MIT License (MIT)
+>
+>Copyright (c) 2010 - 2016 Charlie Robbins, Jarrett Cruger & the Contributors.
+>
+>Permission is hereby granted, free of charge, to any person obtaining a copy
+>of this software and associated documentation files (the "Software"), to deal
+>in the Software without restriction, including without limitation the rights
+>to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+>copies of the Software, and to permit persons to whom the Software is
+>furnished to do so, subject to the following conditions:
+>
+>The above copyright notice and this permission notice shall be included in
+>all copies or substantial portions of the Software.
+>
+>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+>IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+>FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+>AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+>LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+>OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+>THE SOFTWARE.
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/codecov.yml b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/codecov.yml
new file mode 100644
index 0000000000000000000000000000000000000000..cafdd1ced36d9def1623f5291bd60d4a544faf07
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/codecov.yml
@@ -0,0 +1,10 @@
+coverage:
+ parsers:
+ javascript:
+ enable_partials: yes
+ status:
+ project:
+ default:
+ target: "70%"
+ patch:
+ enabled: false
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/index.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6fac85844eed4be4905f21068ad8fcdf22c9944
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/index.js
@@ -0,0 +1,13 @@
+/*!
+ * Caron dimonio, con occhi di bragia
+ * loro accennando, tutte le raccoglie;
+ * batte col remo qualunque s’adagia
+ *
+ * Charon the demon, with the eyes of glede,
+ * Beckoning to them, collects them all together,
+ * Beats with his oar whoever lags behind
+ *
+ * Dante - The Divine Comedy (Canto III)
+ */
+
+module.exports = require('./lib/http-proxy');
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ea278938f7e1dd18b1935f82237ccfa9bfae1ec
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy.js
@@ -0,0 +1,66 @@
+ // Use explicit /index.js to help browserify negociation in require '/lib/http-proxy' (!)
+var ProxyServer = require('./http-proxy/index.js').Server;
+
+
+/**
+ * Creates the proxy server.
+ *
+ * Examples:
+ *
+ * httpProxy.createProxyServer({ .. }, 8000)
+ * // => '{ web: [Function], ws: [Function] ... }'
+ *
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @return {Object} Proxy Proxy object with handlers for `ws` and `web` requests
+ *
+ * @api public
+ */
+
+
+function createProxyServer(options) {
+ /*
+ * `options` is needed and it must have the following layout:
+ *
+ * {
+ * target :
+ * forward:
+ * agent :
+ * ssl :
+ * ws :
+ * xfwd :
+ * secure :
+ * toProxy:
+ * prependPath:
+ * ignorePath:
+ * localAddress :
+ * changeOrigin:
+ * preserveHeaderKeyCase:
+ * auth : Basic authentication i.e. 'user:password' to compute an Authorization header.
+ * hostRewrite: rewrites the location hostname on (201/301/302/307/308) redirects, Default: null.
+ * autoRewrite: rewrites the location host/port on (201/301/302/307/308) redirects based on requested host/port. Default: false.
+ * protocolRewrite: rewrites the location protocol on (201/301/302/307/308) redirects to 'http' or 'https'. Default: null.
+ * }
+ *
+ * NOTE: `options.ws` and `options.ssl` are optional.
+ * `options.target and `options.forward` cannot be
+ * both missing
+ * }
+ */
+
+ return new ProxyServer(options);
+}
+
+
+ProxyServer.createProxyServer = createProxyServer;
+ProxyServer.createServer = createProxyServer;
+ProxyServer.createProxy = createProxyServer;
+
+
+
+
+/**
+ * Export the proxy "Server" as the main export.
+ */
+module.exports = ProxyServer;
+
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/common.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/common.js
new file mode 100644
index 0000000000000000000000000000000000000000..6513e81d80d5250ea249ea833f819ece67897c7e
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/common.js
@@ -0,0 +1,248 @@
+var common = exports,
+ url = require('url'),
+ extend = require('util')._extend,
+ required = require('requires-port');
+
+var upgradeHeader = /(^|,)\s*upgrade\s*($|,)/i,
+ isSSL = /^https|wss/;
+
+/**
+ * Simple Regex for testing if protocol is https
+ */
+common.isSSL = isSSL;
+/**
+ * Copies the right headers from `options` and `req` to
+ * `outgoing` which is then used to fire the proxied
+ * request.
+ *
+ * Examples:
+ *
+ * common.setupOutgoing(outgoing, options, req)
+ * // => { host: ..., hostname: ...}
+ *
+ * @param {Object} Outgoing Base object to be filled with required properties
+ * @param {Object} Options Config object passed to the proxy
+ * @param {ClientRequest} Req Request Object
+ * @param {String} Forward String to select forward or target
+ *
+ * @return {Object} Outgoing Object with all required properties set
+ *
+ * @api private
+ */
+
+common.setupOutgoing = function(outgoing, options, req, forward) {
+ outgoing.port = options[forward || 'target'].port ||
+ (isSSL.test(options[forward || 'target'].protocol) ? 443 : 80);
+
+ ['host', 'hostname', 'socketPath', 'pfx', 'key',
+ 'passphrase', 'cert', 'ca', 'ciphers', 'secureProtocol'].forEach(
+ function(e) { outgoing[e] = options[forward || 'target'][e]; }
+ );
+
+ outgoing.method = options.method || req.method;
+ outgoing.headers = extend({}, req.headers);
+
+ if (options.headers){
+ extend(outgoing.headers, options.headers);
+ }
+
+ if (options.auth) {
+ outgoing.auth = options.auth;
+ }
+
+ if (options.ca) {
+ outgoing.ca = options.ca;
+ }
+
+ if (isSSL.test(options[forward || 'target'].protocol)) {
+ outgoing.rejectUnauthorized = (typeof options.secure === "undefined") ? true : options.secure;
+ }
+
+
+ outgoing.agent = options.agent || false;
+ outgoing.localAddress = options.localAddress;
+
+ //
+ // Remark: If we are false and not upgrading, set the connection: close. This is the right thing to do
+ // as node core doesn't handle this COMPLETELY properly yet.
+ //
+ if (!outgoing.agent) {
+ outgoing.headers = outgoing.headers || {};
+ if (typeof outgoing.headers.connection !== 'string'
+ || !upgradeHeader.test(outgoing.headers.connection)
+ ) { outgoing.headers.connection = 'close'; }
+ }
+
+
+ // the final path is target path + relative path requested by user:
+ var target = options[forward || 'target'];
+ var targetPath = target && options.prependPath !== false
+ ? (target.path || '')
+ : '';
+
+ //
+ // Remark: Can we somehow not use url.parse as a perf optimization?
+ //
+ var outgoingPath = !options.toProxy
+ ? (url.parse(req.url).path || '')
+ : req.url;
+
+ //
+ // Remark: ignorePath will just straight up ignore whatever the request's
+ // path is. This can be labeled as FOOT-GUN material if you do not know what
+ // you are doing and are using conflicting options.
+ //
+ outgoingPath = !options.ignorePath ? outgoingPath : '';
+
+ outgoing.path = common.urlJoin(targetPath, outgoingPath);
+
+ if (options.changeOrigin) {
+ outgoing.headers.host =
+ required(outgoing.port, options[forward || 'target'].protocol) && !hasPort(outgoing.host)
+ ? outgoing.host + ':' + outgoing.port
+ : outgoing.host;
+ }
+ return outgoing;
+};
+
+/**
+ * Set the proper configuration for sockets,
+ * set no delay and set keep alive, also set
+ * the timeout to 0.
+ *
+ * Examples:
+ *
+ * common.setupSocket(socket)
+ * // => Socket
+ *
+ * @param {Socket} Socket instance to setup
+ *
+ * @return {Socket} Return the configured socket.
+ *
+ * @api private
+ */
+
+common.setupSocket = function(socket) {
+ socket.setTimeout(0);
+ socket.setNoDelay(true);
+
+ socket.setKeepAlive(true, 0);
+
+ return socket;
+};
+
+/**
+ * Get the port number from the host. Or guess it based on the connection type.
+ *
+ * @param {Request} req Incoming HTTP request.
+ *
+ * @return {String} The port number.
+ *
+ * @api private
+ */
+common.getPort = function(req) {
+ var res = req.headers.host ? req.headers.host.match(/:(\d+)/) : '';
+
+ return res ?
+ res[1] :
+ common.hasEncryptedConnection(req) ? '443' : '80';
+};
+
+/**
+ * Check if the request has an encrypted connection.
+ *
+ * @param {Request} req Incoming HTTP request.
+ *
+ * @return {Boolean} Whether the connection is encrypted or not.
+ *
+ * @api private
+ */
+common.hasEncryptedConnection = function(req) {
+ return Boolean(req.connection.encrypted || req.connection.pair);
+};
+
+/**
+ * OS-agnostic join (doesn't break on URLs like path.join does on Windows)>
+ *
+ * @return {String} The generated path.
+ *
+ * @api private
+ */
+
+common.urlJoin = function() {
+ //
+ // We do not want to mess with the query string. All we want to touch is the path.
+ //
+ var args = Array.prototype.slice.call(arguments),
+ lastIndex = args.length - 1,
+ last = args[lastIndex],
+ lastSegs = last.split('?'),
+ retSegs;
+
+ args[lastIndex] = lastSegs.shift();
+
+ //
+ // Join all strings, but remove empty strings so we don't get extra slashes from
+ // joining e.g. ['', 'am']
+ //
+ retSegs = [
+ args.filter(Boolean).join('/')
+ .replace(/\/+/g, '/')
+ .replace('http:/', 'http://')
+ .replace('https:/', 'https://')
+ ];
+
+ // Only join the query string if it exists so we don't have trailing a '?'
+ // on every request
+
+ // Handle case where there could be multiple ? in the URL.
+ retSegs.push.apply(retSegs, lastSegs);
+
+ return retSegs.join('?')
+};
+
+/**
+ * Rewrites or removes the domain of a cookie header
+ *
+ * @param {String|Array} Header
+ * @param {Object} Config, mapping of domain to rewritten domain.
+ * '*' key to match any domain, null value to remove the domain.
+ *
+ * @api private
+ */
+common.rewriteCookieProperty = function rewriteCookieProperty(header, config, property) {
+ if (Array.isArray(header)) {
+ return header.map(function (headerElement) {
+ return rewriteCookieProperty(headerElement, config, property);
+ });
+ }
+ return header.replace(new RegExp("(;\\s*" + property + "=)([^;]+)", 'i'), function(match, prefix, previousValue) {
+ var newValue;
+ if (previousValue in config) {
+ newValue = config[previousValue];
+ } else if ('*' in config) {
+ newValue = config['*'];
+ } else {
+ //no match, return previous value
+ return match;
+ }
+ if (newValue) {
+ //replace value
+ return prefix + newValue;
+ } else {
+ //remove value
+ return '';
+ }
+ });
+};
+
+/**
+ * Check the host and see if it potentially has a port in it (keep it simple)
+ *
+ * @returns {Boolean} Whether we have one or not
+ *
+ * @api private
+ */
+function hasPort(host) {
+ return !!~host.indexOf(':');
+};
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/index.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..977a4b3622b9eaac27689f06347ea4c5173a96cd
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/index.js
@@ -0,0 +1,185 @@
+var httpProxy = module.exports,
+ extend = require('util')._extend,
+ parse_url = require('url').parse,
+ EE3 = require('eventemitter3'),
+ http = require('http'),
+ https = require('https'),
+ web = require('./passes/web-incoming'),
+ ws = require('./passes/ws-incoming');
+
+httpProxy.Server = ProxyServer;
+
+/**
+ * Returns a function that creates the loader for
+ * either `ws` or `web`'s passes.
+ *
+ * Examples:
+ *
+ * httpProxy.createRightProxy('ws')
+ * // => [Function]
+ *
+ * @param {String} Type Either 'ws' or 'web'
+ *
+ * @return {Function} Loader Function that when called returns an iterator for the right passes
+ *
+ * @api private
+ */
+
+function createRightProxy(type) {
+
+ return function(options) {
+ return function(req, res /*, [head], [opts] */) {
+ var passes = (type === 'ws') ? this.wsPasses : this.webPasses,
+ args = [].slice.call(arguments),
+ cntr = args.length - 1,
+ head, cbl;
+
+ /* optional args parse begin */
+ if(typeof args[cntr] === 'function') {
+ cbl = args[cntr];
+
+ cntr--;
+ }
+
+ var requestOptions = options;
+ if(
+ !(args[cntr] instanceof Buffer) &&
+ args[cntr] !== res
+ ) {
+ //Copy global options
+ requestOptions = extend({}, options);
+ //Overwrite with request options
+ extend(requestOptions, args[cntr]);
+
+ cntr--;
+ }
+
+ if(args[cntr] instanceof Buffer) {
+ head = args[cntr];
+ }
+
+ /* optional args parse end */
+
+ ['target', 'forward'].forEach(function(e) {
+ if (typeof requestOptions[e] === 'string')
+ requestOptions[e] = parse_url(requestOptions[e]);
+ });
+
+ if (!requestOptions.target && !requestOptions.forward) {
+ return this.emit('error', new Error('Must provide a proper URL as target'));
+ }
+
+ for(var i=0; i < passes.length; i++) {
+ /**
+ * Call of passes functions
+ * pass(req, res, options, head)
+ *
+ * In WebSockets case the `res` variable
+ * refer to the connection socket
+ * pass(req, socket, options, head)
+ */
+ if(passes[i](req, res, requestOptions, head, this, cbl)) { // passes can return a truthy value to halt the loop
+ break;
+ }
+ }
+ };
+ };
+}
+httpProxy.createRightProxy = createRightProxy;
+
+function ProxyServer(options) {
+ EE3.call(this);
+
+ options = options || {};
+ options.prependPath = options.prependPath === false ? false : true;
+
+ this.web = this.proxyRequest = createRightProxy('web')(options);
+ this.ws = this.proxyWebsocketRequest = createRightProxy('ws')(options);
+ this.options = options;
+
+ this.webPasses = Object.keys(web).map(function(pass) {
+ return web[pass];
+ });
+
+ this.wsPasses = Object.keys(ws).map(function(pass) {
+ return ws[pass];
+ });
+
+ this.on('error', this.onError, this);
+
+}
+
+require('util').inherits(ProxyServer, EE3);
+
+ProxyServer.prototype.onError = function (err) {
+ //
+ // Remark: Replicate node core behavior using EE3
+ // so we force people to handle their own errors
+ //
+ if(this.listeners('error').length === 1) {
+ throw err;
+ }
+};
+
+ProxyServer.prototype.listen = function(port, hostname) {
+ var self = this,
+ closure = function(req, res) { self.web(req, res); };
+
+ this._server = this.options.ssl ?
+ https.createServer(this.options.ssl, closure) :
+ http.createServer(closure);
+
+ if(this.options.ws) {
+ this._server.on('upgrade', function(req, socket, head) { self.ws(req, socket, head); });
+ }
+
+ this._server.listen(port, hostname);
+
+ return this;
+};
+
+ProxyServer.prototype.close = function(callback) {
+ var self = this;
+ if (this._server) {
+ this._server.close(done);
+ }
+
+ // Wrap callback to nullify server after all open connections are closed.
+ function done() {
+ self._server = null;
+ if (callback) {
+ callback.apply(null, arguments);
+ }
+ };
+};
+
+ProxyServer.prototype.before = function(type, passName, callback) {
+ if (type !== 'ws' && type !== 'web') {
+ throw new Error('type must be `web` or `ws`');
+ }
+ var passes = (type === 'ws') ? this.wsPasses : this.webPasses,
+ i = false;
+
+ passes.forEach(function(v, idx) {
+ if(v.name === passName) i = idx;
+ })
+
+ if(i === false) throw new Error('No such pass');
+
+ passes.splice(i, 0, callback);
+};
+ProxyServer.prototype.after = function(type, passName, callback) {
+ if (type !== 'ws' && type !== 'web') {
+ throw new Error('type must be `web` or `ws`');
+ }
+ var passes = (type === 'ws') ? this.wsPasses : this.webPasses,
+ i = false;
+
+ passes.forEach(function(v, idx) {
+ if(v.name === passName) i = idx;
+ })
+
+ if(i === false) throw new Error('No such pass');
+
+ passes.splice(i++, 0, callback);
+};
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js
new file mode 100644
index 0000000000000000000000000000000000000000..7ae735514190eea569c605fff7d27c045fe8d601
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/web-incoming.js
@@ -0,0 +1,194 @@
+var httpNative = require('http'),
+ httpsNative = require('https'),
+ web_o = require('./web-outgoing'),
+ common = require('../common'),
+ followRedirects = require('follow-redirects');
+
+web_o = Object.keys(web_o).map(function(pass) {
+ return web_o[pass];
+});
+
+var nativeAgents = { http: httpNative, https: httpsNative };
+
+/*!
+ * Array of passes.
+ *
+ * A `pass` is just a function that is executed on `req, res, options`
+ * so that you can easily add new checks while still keeping the base
+ * flexible.
+ */
+
+
+module.exports = {
+
+ /**
+ * Sets `content-length` to '0' if request is of DELETE type.
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ deleteLength: function deleteLength(req, res, options) {
+ if((req.method === 'DELETE' || req.method === 'OPTIONS')
+ && !req.headers['content-length']) {
+ req.headers['content-length'] = '0';
+ delete req.headers['transfer-encoding'];
+ }
+ },
+
+ /**
+ * Sets timeout in request socket if it was specified in options.
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ timeout: function timeout(req, res, options) {
+ if(options.timeout) {
+ req.socket.setTimeout(options.timeout);
+ }
+ },
+
+ /**
+ * Sets `x-forwarded-*` headers if specified in config.
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ XHeaders: function XHeaders(req, res, options) {
+ if(!options.xfwd) return;
+
+ var encrypted = req.isSpdy || common.hasEncryptedConnection(req);
+ var values = {
+ for : req.connection.remoteAddress || req.socket.remoteAddress,
+ port : common.getPort(req),
+ proto: encrypted ? 'https' : 'http'
+ };
+
+ ['for', 'port', 'proto'].forEach(function(header) {
+ req.headers['x-forwarded-' + header] =
+ (req.headers['x-forwarded-' + header] || '') +
+ (req.headers['x-forwarded-' + header] ? ',' : '') +
+ values[header];
+ });
+
+ req.headers['x-forwarded-host'] = req.headers['x-forwarded-host'] || req.headers['host'] || '';
+ },
+
+ /**
+ * Does the actual proxying. If `forward` is enabled fires up
+ * a ForwardStream, same happens for ProxyStream. The request
+ * just dies otherwise.
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ stream: function stream(req, res, options, _, server, clb) {
+
+ // And we begin!
+ server.emit('start', req, res, options.target || options.forward);
+
+ var agents = options.followRedirects ? followRedirects : nativeAgents;
+ var http = agents.http;
+ var https = agents.https;
+
+ if(options.forward) {
+ // If forward enable, so just pipe the request
+ var forwardReq = (options.forward.protocol === 'https:' ? https : http).request(
+ common.setupOutgoing(options.ssl || {}, options, req, 'forward')
+ );
+
+ // error handler (e.g. ECONNRESET, ECONNREFUSED)
+ // Handle errors on incoming request as well as it makes sense to
+ var forwardError = createErrorHandler(forwardReq, options.forward);
+ req.on('error', forwardError);
+ forwardReq.on('error', forwardError);
+
+ (options.buffer || req).pipe(forwardReq);
+ if(!options.target) { return res.end(); }
+ }
+
+ // Request initalization
+ var proxyReq = (options.target.protocol === 'https:' ? https : http).request(
+ common.setupOutgoing(options.ssl || {}, options, req)
+ );
+
+ // Enable developers to modify the proxyReq before headers are sent
+ proxyReq.on('socket', function(socket) {
+ if(server && !proxyReq.getHeader('expect')) {
+ server.emit('proxyReq', proxyReq, req, res, options);
+ }
+ });
+
+ // allow outgoing socket to timeout so that we could
+ // show an error page at the initial request
+ if(options.proxyTimeout) {
+ proxyReq.setTimeout(options.proxyTimeout, function() {
+ proxyReq.abort();
+ });
+ }
+
+ // Ensure we abort proxy if request is aborted
+ req.on('aborted', function () {
+ proxyReq.abort();
+ });
+
+ // handle errors in proxy and incoming request, just like for forward proxy
+ var proxyError = createErrorHandler(proxyReq, options.target);
+ req.on('error', proxyError);
+ proxyReq.on('error', proxyError);
+
+ function createErrorHandler(proxyReq, url) {
+ return function proxyError(err) {
+ if (req.socket.destroyed && err.code === 'ECONNRESET') {
+ server.emit('econnreset', err, req, res, url);
+ return proxyReq.abort();
+ }
+
+ if (clb) {
+ clb(err, req, res, url);
+ } else {
+ server.emit('error', err, req, res, url);
+ }
+ }
+ }
+
+ (options.buffer || req).pipe(proxyReq);
+
+ proxyReq.on('response', function(proxyRes) {
+ if(server) { server.emit('proxyRes', proxyRes, req, res); }
+
+ if(!res.headersSent && !options.selfHandleResponse) {
+ for(var i=0; i < web_o.length; i++) {
+ if(web_o[i](req, res, proxyRes, options)) { break; }
+ }
+ }
+
+ if (!res.finished) {
+ // Allow us to listen when the proxy has completed
+ proxyRes.on('end', function () {
+ if (server) server.emit('end', req, res, proxyRes);
+ });
+ // We pipe to the response unless its expected to be handled by the user
+ if (!options.selfHandleResponse) proxyRes.pipe(res);
+ } else {
+ if (server) server.emit('end', req, res, proxyRes);
+ }
+ });
+ }
+
+};
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js
new file mode 100644
index 0000000000000000000000000000000000000000..46352f6e377affc701773328d528bd7e4352f242
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/web-outgoing.js
@@ -0,0 +1,147 @@
+var url = require('url'),
+ common = require('../common');
+
+
+var redirectRegex = /^201|30(1|2|7|8)$/;
+
+/*!
+ * Array of passes.
+ *
+ * A `pass` is just a function that is executed on `req, res, options`
+ * so that you can easily add new checks while still keeping the base
+ * flexible.
+ */
+
+module.exports = { // <--
+
+ /**
+ * If is a HTTP 1.0 request, remove chunk headers
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ *
+ * @api private
+ */
+ removeChunked: function removeChunked(req, res, proxyRes) {
+ if (req.httpVersion === '1.0') {
+ delete proxyRes.headers['transfer-encoding'];
+ }
+ },
+
+ /**
+ * If is a HTTP 1.0 request, set the correct connection header
+ * or if connection header not present, then use `keep-alive`
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ *
+ * @api private
+ */
+ setConnection: function setConnection(req, res, proxyRes) {
+ if (req.httpVersion === '1.0') {
+ proxyRes.headers.connection = req.headers.connection || 'close';
+ } else if (req.httpVersion !== '2.0' && !proxyRes.headers.connection) {
+ proxyRes.headers.connection = req.headers.connection || 'keep-alive';
+ }
+ },
+
+ setRedirectHostRewrite: function setRedirectHostRewrite(req, res, proxyRes, options) {
+ if ((options.hostRewrite || options.autoRewrite || options.protocolRewrite)
+ && proxyRes.headers['location']
+ && redirectRegex.test(proxyRes.statusCode)) {
+ var target = url.parse(options.target);
+ var u = url.parse(proxyRes.headers['location']);
+
+ // make sure the redirected host matches the target host before rewriting
+ if (target.host != u.host) {
+ return;
+ }
+
+ if (options.hostRewrite) {
+ u.host = options.hostRewrite;
+ } else if (options.autoRewrite) {
+ u.host = req.headers['host'];
+ }
+ if (options.protocolRewrite) {
+ u.protocol = options.protocolRewrite;
+ }
+
+ proxyRes.headers['location'] = u.format();
+ }
+ },
+ /**
+ * Copy headers from proxyResponse to response
+ * set each header in response object.
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ * @param {Object} Options options.cookieDomainRewrite: Config to rewrite cookie domain
+ *
+ * @api private
+ */
+ writeHeaders: function writeHeaders(req, res, proxyRes, options) {
+ var rewriteCookieDomainConfig = options.cookieDomainRewrite,
+ rewriteCookiePathConfig = options.cookiePathRewrite,
+ preserveHeaderKeyCase = options.preserveHeaderKeyCase,
+ rawHeaderKeyMap,
+ setHeader = function(key, header) {
+ if (header == undefined) return;
+ if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') {
+ header = common.rewriteCookieProperty(header, rewriteCookieDomainConfig, 'domain');
+ }
+ if (rewriteCookiePathConfig && key.toLowerCase() === 'set-cookie') {
+ header = common.rewriteCookieProperty(header, rewriteCookiePathConfig, 'path');
+ }
+ res.setHeader(String(key).trim(), header);
+ };
+
+ if (typeof rewriteCookieDomainConfig === 'string') { //also test for ''
+ rewriteCookieDomainConfig = { '*': rewriteCookieDomainConfig };
+ }
+
+ if (typeof rewriteCookiePathConfig === 'string') { //also test for ''
+ rewriteCookiePathConfig = { '*': rewriteCookiePathConfig };
+ }
+
+ // message.rawHeaders is added in: v0.11.6
+ // https://nodejs.org/api/http.html#http_message_rawheaders
+ if (preserveHeaderKeyCase && proxyRes.rawHeaders != undefined) {
+ rawHeaderKeyMap = {};
+ for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) {
+ var key = proxyRes.rawHeaders[i];
+ rawHeaderKeyMap[key.toLowerCase()] = key;
+ }
+ }
+
+ Object.keys(proxyRes.headers).forEach(function(key) {
+ var header = proxyRes.headers[key];
+ if (preserveHeaderKeyCase && rawHeaderKeyMap) {
+ key = rawHeaderKeyMap[key] || key;
+ }
+ setHeader(key, header);
+ });
+ },
+
+ /**
+ * Set the statusCode from the proxyResponse
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {IncomingMessage} Res Response object
+ * @param {proxyResponse} Res Response object from the proxy request
+ *
+ * @api private
+ */
+ writeStatusCode: function writeStatusCode(req, res, proxyRes) {
+ // From Node.js docs: response.writeHead(statusCode[, statusMessage][, headers])
+ if(proxyRes.statusMessage) {
+ res.statusCode = proxyRes.statusCode;
+ res.statusMessage = proxyRes.statusMessage;
+ } else {
+ res.statusCode = proxyRes.statusCode;
+ }
+ }
+
+};
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js
new file mode 100644
index 0000000000000000000000000000000000000000..270f23f45db2b417a23d1d4331d2ecdf0d599a35
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/lib/http-proxy/passes/ws-incoming.js
@@ -0,0 +1,162 @@
+var http = require('http'),
+ https = require('https'),
+ common = require('../common');
+
+/*!
+ * Array of passes.
+ *
+ * A `pass` is just a function that is executed on `req, socket, options`
+ * so that you can easily add new checks while still keeping the base
+ * flexible.
+ */
+
+/*
+ * Websockets Passes
+ *
+ */
+
+
+module.exports = {
+ /**
+ * WebSocket requests must have the `GET` method and
+ * the `upgrade:websocket` header
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {Socket} Websocket
+ *
+ * @api private
+ */
+
+ checkMethodAndHeader : function checkMethodAndHeader(req, socket) {
+ if (req.method !== 'GET' || !req.headers.upgrade) {
+ socket.destroy();
+ return true;
+ }
+
+ if (req.headers.upgrade.toLowerCase() !== 'websocket') {
+ socket.destroy();
+ return true;
+ }
+ },
+
+ /**
+ * Sets `x-forwarded-*` headers if specified in config.
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {Socket} Websocket
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+
+ XHeaders : function XHeaders(req, socket, options) {
+ if(!options.xfwd) return;
+
+ var values = {
+ for : req.connection.remoteAddress || req.socket.remoteAddress,
+ port : common.getPort(req),
+ proto: common.hasEncryptedConnection(req) ? 'wss' : 'ws'
+ };
+
+ ['for', 'port', 'proto'].forEach(function(header) {
+ req.headers['x-forwarded-' + header] =
+ (req.headers['x-forwarded-' + header] || '') +
+ (req.headers['x-forwarded-' + header] ? ',' : '') +
+ values[header];
+ });
+ },
+
+ /**
+ * Does the actual proxying. Make the request and upgrade it
+ * send the Switching Protocols request and pipe the sockets.
+ *
+ * @param {ClientRequest} Req Request object
+ * @param {Socket} Websocket
+ * @param {Object} Options Config object passed to the proxy
+ *
+ * @api private
+ */
+ stream : function stream(req, socket, options, head, server, clb) {
+
+ var createHttpHeader = function(line, headers) {
+ return Object.keys(headers).reduce(function (head, key) {
+ var value = headers[key];
+
+ if (!Array.isArray(value)) {
+ head.push(key + ': ' + value);
+ return head;
+ }
+
+ for (var i = 0; i < value.length; i++) {
+ head.push(key + ': ' + value[i]);
+ }
+ return head;
+ }, [line])
+ .join('\r\n') + '\r\n\r\n';
+ }
+
+ common.setupSocket(socket);
+
+ if (head && head.length) socket.unshift(head);
+
+
+ var proxyReq = (common.isSSL.test(options.target.protocol) ? https : http).request(
+ common.setupOutgoing(options.ssl || {}, options, req)
+ );
+
+ // Enable developers to modify the proxyReq before headers are sent
+ if (server) { server.emit('proxyReqWs', proxyReq, req, socket, options, head); }
+
+ // Error Handler
+ proxyReq.on('error', onOutgoingError);
+ proxyReq.on('response', function (res) {
+ // if upgrade event isn't going to happen, close the socket
+ if (!res.upgrade) {
+ socket.write(createHttpHeader('HTTP/' + res.httpVersion + ' ' + res.statusCode + ' ' + res.statusMessage, res.headers));
+ res.pipe(socket);
+ }
+ });
+
+ proxyReq.on('upgrade', function(proxyRes, proxySocket, proxyHead) {
+ proxySocket.on('error', onOutgoingError);
+
+ // Allow us to listen when the websocket has completed
+ proxySocket.on('end', function () {
+ server.emit('close', proxyRes, proxySocket, proxyHead);
+ });
+
+ // The pipe below will end proxySocket if socket closes cleanly, but not
+ // if it errors (eg, vanishes from the net and starts returning
+ // EHOSTUNREACH). We need to do that explicitly.
+ socket.on('error', function () {
+ proxySocket.end();
+ });
+
+ common.setupSocket(proxySocket);
+
+ if (proxyHead && proxyHead.length) proxySocket.unshift(proxyHead);
+
+ //
+ // Remark: Handle writing the headers to the socket when switching protocols
+ // Also handles when a header is an array
+ //
+ socket.write(createHttpHeader('HTTP/1.1 101 Switching Protocols', proxyRes.headers));
+
+ proxySocket.pipe(socket).pipe(proxySocket);
+
+ server.emit('open', proxySocket);
+ server.emit('proxySocket', proxySocket); //DEPRECATED.
+ });
+
+ return proxyReq.end(); // XXX: CHECK IF THIS IS THIS CORRECT
+
+ function onOutgoingError(err) {
+ if (clb) {
+ clb(err, req, socket);
+ } else {
+ server.emit('error', err, req, socket);
+ }
+ socket.end();
+ }
+ }
+};
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/package.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..9fe81a26d6ae34771be1c39c10bf29a3d3332bad
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "http-proxy",
+ "version": "1.18.1",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/http-party/node-http-proxy.git"
+ },
+ "description": "HTTP proxying for the masses",
+ "author": "Charlie Robbins ",
+ "maintainers": [
+ "jcrugzz "
+ ],
+ "main": "index.js",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "requires-port": "^1.0.0",
+ "follow-redirects": "^1.0.0"
+ },
+ "devDependencies": {
+ "async": "^3.0.0",
+ "auto-changelog": "^1.15.0",
+ "concat-stream": "^2.0.0",
+ "expect.js": "~0.3.1",
+ "mocha": "^3.5.3",
+ "nyc": "^14.0.0",
+ "semver": "^5.0.3",
+ "socket.io": "^2.1.0",
+ "socket.io-client": "^2.1.0",
+ "sse": "0.0.8",
+ "ws": "^3.0.0"
+ },
+ "scripts": {
+ "mocha": "mocha test/*-test.js",
+ "test": "nyc --reporter=text --reporter=lcov npm run mocha",
+ "version": "auto-changelog -p && git add CHANGELOG.md"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "license": "MIT"
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/renovate.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/renovate.json
new file mode 100644
index 0000000000000000000000000000000000000000..fc1d2aa3a079e46750d308044764497a5e604333
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/http-proxy/renovate.json
@@ -0,0 +1,19 @@
+{
+ "platform": "github",
+ "autodiscover": false,
+ "requireConfig": true,
+ "ignoreNpmrcFile": true,
+ "rangeStrategy": "replace",
+ "packageRules": [
+ {
+ "packagePatterns": [
+ "*"
+ ],
+ "minor": {
+ "groupName": "all non-major dependencies",
+ "groupSlug": "all-minor-patch"
+ }
+ }
+ ],
+ "commitMessagePrefix": "[dist]"
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/.npmignore b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/.npmignore
new file mode 100644
index 0000000000000000000000000000000000000000..ba2a97b57acafe13673b76a624a59ebceadb2849
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/.npmignore
@@ -0,0 +1,2 @@
+node_modules
+coverage
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/.travis.yml b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0765106aba166102062bae3d2a1f6fe518f69ccf
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/.travis.yml
@@ -0,0 +1,19 @@
+sudo: false
+language: node_js
+node_js:
+ - "4"
+ - "iojs"
+ - "0.12"
+ - "0.10"
+script:
+ - "npm run test-travis"
+after_script:
+ - "npm install coveralls@2 && cat coverage/lcov.info | coveralls"
+matrix:
+ fast_finish: true
+notifications:
+ irc:
+ channels:
+ - "irc.freenode.org#unshift"
+ on_success: change
+ on_failure: change
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/LICENSE b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..6dc9316a6c92f2782c0bcf29951bf2a704524277
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/README.md b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3effe759703730dc1df39b012c03727b9e641abf
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/README.md
@@ -0,0 +1,47 @@
+# requires-port
+
+[](http://unshift.io)[](http://browsenpm.org/package/requires-port)[](https://travis-ci.org/unshiftio/requires-port)[](https://david-dm.org/unshiftio/requires-port)[](https://coveralls.io/r/unshiftio/requires-port?branch=master)[](http://webchat.freenode.net/?channels=unshift)
+
+The module name says it all, check if a protocol requires a given port.
+
+## Installation
+
+This module is intended to be used with browserify or Node.js and is distributed
+in the public npm registry. To install it simply run the following command from
+your CLI:
+
+```j
+npm install --save requires-port
+```
+
+## Usage
+
+The module exports it self as function and requires 2 arguments:
+
+1. The port number, can be a string or number.
+2. Protocol, can be `http`, `http:` or even `https://yomoma.com`. We just split
+ it at `:` and use the first result. We currently accept the following
+ protocols:
+ - `http`
+ - `https`
+ - `ws`
+ - `wss`
+ - `ftp`
+ - `gopher`
+ - `file`
+
+It returns a boolean that indicates if protocol requires this port to be added
+to your URL.
+
+```js
+'use strict';
+
+var required = require('requires-port');
+
+console.log(required('8080', 'http')) // true
+console.log(required('80', 'http')) // false
+```
+
+# License
+
+MIT
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/index.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f267b26c7284dd94e97950aa32e087cb159887d
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/index.js
@@ -0,0 +1,38 @@
+'use strict';
+
+/**
+ * Check if we're required to add a port number.
+ *
+ * @see https://url.spec.whatwg.org/#default-port
+ * @param {Number|String} port Port number we need to check
+ * @param {String} protocol Protocol we need to check against.
+ * @returns {Boolean} Is it a default port for the given protocol
+ * @api private
+ */
+module.exports = function required(port, protocol) {
+ protocol = protocol.split(':')[0];
+ port = +port;
+
+ if (!port) return false;
+
+ switch (protocol) {
+ case 'http':
+ case 'ws':
+ return port !== 80;
+
+ case 'https':
+ case 'wss':
+ return port !== 443;
+
+ case 'ftp':
+ return port !== 21;
+
+ case 'gopher':
+ return port !== 70;
+
+ case 'file':
+ return false;
+ }
+
+ return port !== 0;
+};
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/package.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..c113b4bf78f20e5fdbb458e97131047b557f02d8
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "requires-port",
+ "version": "1.0.0",
+ "description": "Check if a protocol requires a certain port number to be added to an URL.",
+ "main": "index.js",
+ "scripts": {
+ "100%": "istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100",
+ "test-travis": "istanbul cover _mocha --report lcovonly -- test.js",
+ "coverage": "istanbul cover _mocha -- test.js",
+ "watch": "mocha --watch test.js",
+ "test": "mocha test.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/unshiftio/requires-port"
+ },
+ "keywords": [
+ "port",
+ "require",
+ "http",
+ "https",
+ "ws",
+ "wss",
+ "gopher",
+ "file",
+ "ftp",
+ "requires",
+ "requried",
+ "portnumber",
+ "url",
+ "parsing",
+ "validation",
+ "cows"
+ ],
+ "author": "Arnout Kazemier",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/unshiftio/requires-port/issues"
+ },
+ "homepage": "https://github.com/unshiftio/requires-port",
+ "devDependencies": {
+ "assume": "1.3.x",
+ "istanbul": "0.4.x",
+ "mocha": "2.3.x",
+ "pre-commit": "1.1.x"
+ }
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/test.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/test.js
new file mode 100644
index 0000000000000000000000000000000000000000..93a0c749809a72a4c302436b300666af45c6a4bc
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/node_modules/requires-port/test.js
@@ -0,0 +1,98 @@
+describe('requires-port', function () {
+ 'use strict';
+
+ var assume = require('assume')
+ , required = require('./');
+
+ it('is exported as a function', function () {
+ assume(required).is.a('function');
+ });
+
+ it('does not require empty ports', function () {
+ assume(required('', 'http')).false();
+ assume(required('', 'wss')).false();
+ assume(required('', 'ws')).false();
+ assume(required('', 'cowsack')).false();
+ });
+
+ it('assumes true for unknown protocols',function () {
+ assume(required('808', 'foo')).true();
+ assume(required('80', 'bar')).true();
+ });
+
+ it('never requires port numbers for file', function () {
+ assume(required(8080, 'file')).false();
+ });
+
+ it('does not require port 80 for http', function () {
+ assume(required('80', 'http')).false();
+ assume(required(80, 'http')).false();
+ assume(required(80, 'http://')).false();
+ assume(required(80, 'http://www.google.com')).false();
+
+ assume(required('8080', 'http')).true();
+ assume(required(8080, 'http')).true();
+ assume(required(8080, 'http://')).true();
+ assume(required(8080, 'http://www.google.com')).true();
+ });
+
+ it('does not require port 80 for ws', function () {
+ assume(required('80', 'ws')).false();
+ assume(required(80, 'ws')).false();
+ assume(required(80, 'ws://')).false();
+ assume(required(80, 'ws://www.google.com')).false();
+
+ assume(required('8080', 'ws')).true();
+ assume(required(8080, 'ws')).true();
+ assume(required(8080, 'ws://')).true();
+ assume(required(8080, 'ws://www.google.com')).true();
+ });
+
+ it('does not require port 443 for https', function () {
+ assume(required('443', 'https')).false();
+ assume(required(443, 'https')).false();
+ assume(required(443, 'https://')).false();
+ assume(required(443, 'https://www.google.com')).false();
+
+ assume(required('8080', 'https')).true();
+ assume(required(8080, 'https')).true();
+ assume(required(8080, 'https://')).true();
+ assume(required(8080, 'https://www.google.com')).true();
+ });
+
+ it('does not require port 443 for wss', function () {
+ assume(required('443', 'wss')).false();
+ assume(required(443, 'wss')).false();
+ assume(required(443, 'wss://')).false();
+ assume(required(443, 'wss://www.google.com')).false();
+
+ assume(required('8080', 'wss')).true();
+ assume(required(8080, 'wss')).true();
+ assume(required(8080, 'wss://')).true();
+ assume(required(8080, 'wss://www.google.com')).true();
+ });
+
+ it('does not require port 21 for ftp', function () {
+ assume(required('21', 'ftp')).false();
+ assume(required(21, 'ftp')).false();
+ assume(required(21, 'ftp://')).false();
+ assume(required(21, 'ftp://www.google.com')).false();
+
+ assume(required('8080', 'ftp')).true();
+ assume(required(8080, 'ftp')).true();
+ assume(required(8080, 'ftp://')).true();
+ assume(required(8080, 'ftp://www.google.com')).true();
+ });
+
+ it('does not require port 70 for gopher', function () {
+ assume(required('70', 'gopher')).false();
+ assume(required(70, 'gopher')).false();
+ assume(required(70, 'gopher://')).false();
+ assume(required(70, 'gopher://www.google.com')).false();
+
+ assume(required('8080', 'gopher')).true();
+ assume(required(8080, 'gopher')).true();
+ assume(required(8080, 'gopher://')).true();
+ assume(required(8080, 'gopher://www.google.com')).true();
+ });
+});
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/package-lock.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..d5743e74f6fe7f6a939bf8d9d4574a587a433204
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/package-lock.json
@@ -0,0 +1,59 @@
+{
+ "name": "gradio-server-app",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "gradio-server-app",
+ "dependencies": {
+ "http-proxy": "^1.18.1"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "license": "MIT"
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ }
+ }
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/package.json b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..92bea69b76bcf7104413e058b7cd1169c540c55d
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "gradio-server-app",
+ "type": "module",
+ "dependencies": {
+ "http-proxy": "^1.18.1"
+ }
+}
\ No newline at end of file
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/proxy_routes.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/proxy_routes.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69f4c5270e8248a4350e47f1f38dcce3b846bdc
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/proxy_routes.js
@@ -0,0 +1,133 @@
+/**
+ * Routing logic for the Gradio Node proxy.
+ *
+ * Extracted so it can be unit-tested independently of the SvelteKit handler.
+ */
+
+// Routes that must go to the Python server (FastAPI).
+export const PYTHON_ROUTE_PREFIXES = [
+ "/gradio_api",
+ "/config",
+ "/login",
+ "/logout",
+ "/theme.css",
+ "/robots.txt",
+ "/pwa_icon",
+ "/manifest.json",
+ "/monitoring"
+];
+
+// Routes that can be offloaded to static workers.
+// Workers serve both /upload and /gradio_api/upload (same handler).
+// Checked BEFORE the /gradio_api Python catch-all.
+export const STATIC_ROUTE_PREFIXES = [
+ "/gradio_api/upload",
+ "/gradio_api/upload_progress",
+ "/gradio_api/file=",
+ "/gradio_api/file/",
+ "/upload",
+ "/upload_progress",
+ "/file=",
+ "/file/",
+ "/static/",
+ "/assets/",
+ "/svelte/",
+ "/favicon.ico",
+ "/custom_component/"
+];
+
+// Upload routes that need affinity (upload + upload_progress for the same
+// upload_id must land on the same worker).
+const UPLOAD_AFFINITY_PREFIXES = [
+ "/gradio_api/upload",
+ "/gradio_api/upload_progress",
+ "/upload",
+ "/upload_progress"
+];
+
+export function matchesPrefix(path, prefixes) {
+ for (const prefix of prefixes) {
+ if (path === prefix || path.startsWith(prefix)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+/**
+ * Simple string hash (djb2) that returns a non-negative integer.
+ * Used to map upload_id to a deterministic worker index.
+ *
+ * @param {string} str
+ * @returns {number}
+ */
+export function hashString(str) {
+ let hash = 5381;
+ for (let i = 0; i < str.length; i++) {
+ hash = ((hash << 5) + hash + str.charCodeAt(i)) >>> 0;
+ }
+ return hash;
+}
+
+/**
+ * Classify a request into a routing destination and optional worker index.
+ *
+ * @param {string} path - URL path (no query string)
+ * @param {object} options
+ * @param {boolean} options.hasWorkers - whether static workers are configured
+ * @param {boolean} options.serverModeEnabled - whether GRADIO_SERVER_MODE_ENABLED is set
+ * @param {number} options.numWorkers - number of static workers
+ * @param {string} [options.queryString] - raw query string (after ?)
+ * @returns {{route: "worker" | "python" | "sveltekit", workerIndex?: number}}
+ */
+export function classifyRoute(
+ path,
+ {
+ hasWorkers = false,
+ serverModeEnabled = false,
+ numWorkers = 0,
+ queryString = ""
+ } = {}
+) {
+ if (matchesPrefix(path, STATIC_ROUTE_PREFIXES)) {
+ if (!hasWorkers) {
+ return { route: "python" };
+ }
+ // For upload routes with an upload_id, use affinity hashing
+ if (
+ numWorkers > 0 &&
+ queryString &&
+ matchesPrefix(path, UPLOAD_AFFINITY_PREFIXES)
+ ) {
+ const uploadId = extractUploadId(queryString);
+ if (uploadId) {
+ return {
+ route: "worker",
+ workerIndex: hashString(uploadId) % numWorkers
+ };
+ }
+ }
+ return { route: "worker" };
+ }
+ if (matchesPrefix(path, PYTHON_ROUTE_PREFIXES) || serverModeEnabled) {
+ return { route: "python" };
+ }
+ return { route: "sveltekit" };
+}
+
+/**
+ * Extract upload_id from a query string.
+ *
+ * @param {string} qs - raw query string (without leading ?)
+ * @returns {string|null}
+ */
+function extractUploadId(qs) {
+ for (const part of qs.split("&")) {
+ const eq = part.indexOf("=");
+ if (eq === -1) continue;
+ if (part.substring(0, eq) === "upload_id") {
+ return decodeURIComponent(part.substring(eq + 1));
+ }
+ }
+ return null;
+}
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/0-CEJCdOfz.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/0-CEJCdOfz.js
new file mode 100644
index 0000000000000000000000000000000000000000..164dfcb143cf5c73ca4fb3524b0fc8509b8fcf1c
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/0-CEJCdOfz.js
@@ -0,0 +1,21 @@
+import { n as n$1 } from './environment-C8sqWbA_.js';
+import { r as redirect } from './index-DKsxGdoA.js';
+import './index-DBqjc0Yf.js';
+
+function n({url:n}){let{pathname:r,search:i}=n;n$1&&n.pathname.startsWith(`/theme`)&&redirect(308,`http://127.0.0.1:7860${r}${i}`);}
+
+var _layout_server_ts = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ load: n
+});
+
+const index = 0;
+let component_cache;
+const component = async () => component_cache ??= (await import('./_layout.svelte-wsN35Xyi.js')).default;
+const server_id = "src/routes/+layout.server.ts";
+const imports = ["_app/immutable/nodes/0.BnHH3BDA.js","_app/immutable/chunks/WS1bLMZz.js","_app/immutable/chunks/C5-g0Q-M.js"];
+const stylesheets = ["_app/immutable/assets/0.ZTJHj8RP.css"];
+const fonts = [];
+
+export { component, fonts, imports, index, _layout_server_ts as server, server_id, stylesheets };
+//# sourceMappingURL=0-CEJCdOfz.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/1-QVO2-ZXK.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/1-QVO2-ZXK.js
new file mode 100644
index 0000000000000000000000000000000000000000..afd369881a8ccebaa76f0074de89e02ac0cfdf94
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/1-QVO2-ZXK.js
@@ -0,0 +1,9 @@
+const index = 1;
+let component_cache;
+const component = async () => component_cache ??= (await import('./error.svelte-BidE9EIT.js')).default;
+const imports = ["_app/immutable/nodes/1.BqIQZzxO.js","_app/immutable/chunks/WS1bLMZz.js","_app/immutable/chunks/Ci63OoZH.js","_app/immutable/chunks/CTXhSrQn.js","_app/immutable/chunks/Bao9V6Rl.js","_app/immutable/chunks/C5-g0Q-M.js"];
+const stylesheets = [];
+const fonts = [];
+
+export { component, fonts, imports, index, stylesheets };
+//# sourceMappingURL=1-QVO2-ZXK.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/2-CaEpGcoe.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/2-CaEpGcoe.js
new file mode 100644
index 0000000000000000000000000000000000000000..17563a226585f78bef875a9108721a6d28a3f39a
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/2-CaEpGcoe.js
@@ -0,0 +1,247 @@
+import { e as e$4, n as n$5 } from './environment-C8sqWbA_.js';
+import { c as c$5, d as d$6 } from './chunk-B3kRsjbd.js';
+import { an as is_array, ao as get_prototype_of, ap as object_prototype, aq as ssr_context, ar as get, w as writable, as as derived, a as attr_class, b as attr_style, h as ensure_array_like, f as attr, e as escape_html, i as stringify, o as store_get, u as unsubscribe_stores, c as bind_props, d as derived$1 } from './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+
+/** @import { Snapshot } from './types' */
+
+/**
+ * In dev, we keep track of which properties could not be cloned. In prod
+ * we don't bother, but we keep a dummy array around so that the
+ * signature stays the same
+ * @type {string[]}
+ */
+const empty = [];
+
+/**
+ * @template T
+ * @param {T} value
+ * @param {boolean} [skip_warning]
+ * @param {boolean} [no_tojson]
+ * @returns {Snapshot}
+ */
+function snapshot(value, skip_warning = false, no_tojson = false) {
+
+ return clone(value, new Map(), '', empty, null, no_tojson);
+}
+
+/**
+ * @template T
+ * @param {T} value
+ * @param {Map>} cloned
+ * @param {string} path
+ * @param {string[]} paths
+ * @param {null | T} [original] The original value, if `value` was produced from a `toJSON` call
+ * @param {boolean} [no_tojson]
+ * @returns {Snapshot}
+ */
+function clone(value, cloned, path, paths, original = null, no_tojson = false) {
+ if (typeof value === 'object' && value !== null) {
+ var unwrapped = cloned.get(value);
+ if (unwrapped !== undefined) return unwrapped;
+
+ if (value instanceof Map) return /** @type {Snapshot} */ (new Map(value));
+ if (value instanceof Set) return /** @type {Snapshot} */ (new Set(value));
+
+ if (is_array(value)) {
+ var copy = /** @type {Snapshot} */ (Array(value.length));
+ cloned.set(value, copy);
+
+ if (original !== null) {
+ cloned.set(original, copy);
+ }
+
+ for (var i = 0; i < value.length; i += 1) {
+ var element = value[i];
+ if (i in value) {
+ copy[i] = clone(element, cloned, path, paths, null, no_tojson);
+ }
+ }
+
+ return copy;
+ }
+
+ if (get_prototype_of(value) === object_prototype) {
+ /** @type {Snapshot} */
+ copy = {};
+ cloned.set(value, copy);
+
+ if (original !== null) {
+ cloned.set(original, copy);
+ }
+
+ for (var key of Object.keys(value)) {
+ copy[key] = clone(
+ // @ts-expect-error
+ value[key],
+ cloned,
+ path,
+ paths,
+ null,
+ no_tojson
+ );
+ }
+
+ return copy;
+ }
+
+ if (value instanceof Date) {
+ return /** @type {Snapshot} */ (structuredClone(value));
+ }
+
+ if (typeof (/** @type {T & { toJSON?: any } } */ (value).toJSON) === 'function' && !no_tojson) {
+ return clone(
+ /** @type {T & { toJSON(): any } } */ (value).toJSON(),
+ cloned,
+ path,
+ paths,
+ // Associate the instance with the toJSON clone
+ value
+ );
+ }
+ }
+
+ if (value instanceof EventTarget) {
+ // can't be cloned
+ return /** @type {Snapshot} */ (value);
+ }
+
+ try {
+ return /** @type {Snapshot} */ (structuredClone(value));
+ } catch (e) {
+
+ return /** @type {Snapshot} */ (value);
+ }
+}
+
+/** @import { SSRContext } from '#server' */
+/** @import { Renderer } from './internal/server/renderer.js' */
+
+/** @param {() => void} fn */
+function onDestroy(fn) {
+ /** @type {Renderer} */ (/** @type {SSRContext} */ (ssr_context).r).on_destroy(fn);
+}
+
+async function tick() {}
+
+async function settled() {}
+
+/** @import { Readable, Writable } from './public.js' */
+
+/**
+ * @template V
+ * @overload
+ * @param {Writable} store
+ * @returns {{ current: V }}
+ */
+/**
+ * @template V
+ * @overload
+ * @param {Readable} store
+ * @returns {{ readonly current: V }}
+ */
+/**
+ * Convert a store to an object with a reactive `current` property. If `store`
+ * is a readable store, `current` will be a readonly property.
+ *
+ * ```ts
+ * import { fromStore, get, writable } from 'svelte/store';
+ *
+ * const store = writable(0);
+ *
+ * const count = fromStore(store);
+ *
+ * count.current; // 0;
+ * store.set(1);
+ * count.current; // 1
+ *
+ * count.current += 1;
+ * get(store); // 2
+ * ```
+ * @template V
+ * @param {Writable | Readable} store
+ */
+function fromStore(store) {
+ if ('set' in store) {
+ return {
+ get current() {
+ return get(store);
+ },
+ set current(v) {
+ store.set(v);
+ }
+ };
+ }
+
+ return {
+ get current() {
+ return get(store);
+ }
+ };
+}
+
+var t$4=c$5(((e,t)=>{var n=function(e){return r(e)&&!i(e)};function r(e){return !!e&&typeof e==`object`}function i(e){var t=Object.prototype.toString.call(e);return t===`[object RegExp]`||t===`[object Date]`||o(e)}var a=typeof Symbol==`function`&&Symbol.for?Symbol.for(`react.element`):60103;function o(e){return e.$$typeof===a}function s(e){return Array.isArray(e)?[]:{}}function c(e,t){return t.clone!==false&&t.isMergeableObject(e)?g(s(e),e,t):e}function l(e,t,n){return e.concat(t).map(function(e){return c(e,n)})}function u(e,t){if(!t.customMerge)return g;var n=t.customMerge(e);return typeof n==`function`?n:g}function d(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function f(e){return Object.keys(e).concat(d(e))}function p(e,t){try{return t in e}catch{return false}}function m(e,t){return p(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function h(e,t,n){var r={};return n.isMergeableObject(e)&&f(e).forEach(function(t){r[t]=c(e[t],n);}),f(t).forEach(function(i){m(e,i)||(p(e,i)&&n.isMergeableObject(t[i])?r[i]=u(i,n)(e[i],t[i],n):r[i]=c(t[i],n));}),r}function g(e,t,r){r||={},r.arrayMerge=r.arrayMerge||l,r.isMergeableObject=r.isMergeableObject||n,r.cloneUnlessOtherwiseSpecified=c;var i=Array.isArray(t);return i===Array.isArray(e)?i?r.arrayMerge(e,t,r):h(e,t,r):c(t,r)}g.all=function(e,t){if(!Array.isArray(e))throw Error(`first argument should be an array`);return e.reduce(function(e,n){return g(e,n,t)},{})},t.exports=g;}));
+
+var i$3=function(e,t){return i$3=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t;}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);},i$3(e,t)};function a$4(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);i$3(e,t);function n(){this.constructor=e;}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n);}var o$5=function(){return o$5=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0}),n=[],r=0,i=t;r1)throw RangeError(`integer-width stems only accept a single optional option`);i.options[0].replace(ve$1,function(e,n,r,i,a,o){if(n)t.minimumIntegerDigits=r.length;else if(i&&a)throw Error(`We currently do not support maximum integer digits`);else if(o)throw Error(`We currently do not support exact integer digits`);return ``});continue}if(ye$1.test(i.stem)){t.minimumIntegerDigits=i.stem.length;continue}if(ge$1.test(i.stem)){if(i.options.length>1)throw RangeError(`Fraction-precision stems only accept a single optional option`);i.stem.replace(ge$1,function(e,n,r,i,a,o){return r===`*`?t.minimumFractionDigits=n.length:i&&i[0]===`#`?t.maximumFractionDigits=i.length:a&&o?(t.minimumFractionDigits=a.length,t.maximumFractionDigits=a.length+o.length):(t.minimumFractionDigits=n.length,t.maximumFractionDigits=n.length),``});var a=i.options[0];a===`w`?t=o$5(o$5({},t),{trailingZeroDisplay:`stripIfInteger`}):a&&(t=o$5(o$5({},t),be$1(a)));continue}if(_e$1.test(i.stem)){t=o$5(o$5({},t),be$1(i.stem));continue}var s=xe$1(i.stem);s&&(t=o$5(o$5({},t),s));var c=Se$1(i.stem);c&&(t=o$5(o$5({},t),c));}return t}var T$3={"001":[`H`,`h`],419:[`h`,`H`,`hB`,`hb`],AC:[`H`,`h`,`hb`,`hB`],AD:[`H`,`hB`],AE:[`h`,`hB`,`hb`,`H`],AF:[`H`,`hb`,`hB`,`h`],AG:[`h`,`hb`,`H`,`hB`],AI:[`H`,`h`,`hb`,`hB`],AL:[`h`,`H`,`hB`],AM:[`H`,`hB`],AO:[`H`,`hB`],AR:[`h`,`H`,`hB`,`hb`],AS:[`h`,`H`],AT:[`H`,`hB`],AU:[`h`,`hb`,`H`,`hB`],AW:[`H`,`hB`],AX:[`H`],AZ:[`H`,`hB`,`h`],BA:[`H`,`hB`,`h`],BB:[`h`,`hb`,`H`,`hB`],BD:[`h`,`hB`,`H`],BE:[`H`,`hB`],BF:[`H`,`hB`],BG:[`H`,`hB`,`h`],BH:[`h`,`hB`,`hb`,`H`],BI:[`H`,`h`],BJ:[`H`,`hB`],BL:[`H`,`hB`],BM:[`h`,`hb`,`H`,`hB`],BN:[`hb`,`hB`,`h`,`H`],BO:[`h`,`H`,`hB`,`hb`],BQ:[`H`],BR:[`H`,`hB`],BS:[`h`,`hb`,`H`,`hB`],BT:[`h`,`H`],BW:[`H`,`h`,`hb`,`hB`],BY:[`H`,`h`],BZ:[`H`,`h`,`hb`,`hB`],CA:[`h`,`hb`,`H`,`hB`],CC:[`H`,`h`,`hb`,`hB`],CD:[`hB`,`H`],CF:[`H`,`h`,`hB`],CG:[`H`,`hB`],CH:[`H`,`hB`,`h`],CI:[`H`,`hB`],CK:[`H`,`h`,`hb`,`hB`],CL:[`h`,`H`,`hB`,`hb`],CM:[`H`,`h`,`hB`],CN:[`H`,`hB`,`hb`,`h`],CO:[`h`,`H`,`hB`,`hb`],CP:[`H`],CR:[`h`,`H`,`hB`,`hb`],CU:[`h`,`H`,`hB`,`hb`],CV:[`H`,`hB`],CW:[`H`,`hB`],CX:[`H`,`h`,`hb`,`hB`],CY:[`h`,`H`,`hb`,`hB`],CZ:[`H`],DE:[`H`,`hB`],DG:[`H`,`h`,`hb`,`hB`],DJ:[`h`,`H`],DK:[`H`],DM:[`h`,`hb`,`H`,`hB`],DO:[`h`,`H`,`hB`,`hb`],DZ:[`h`,`hB`,`hb`,`H`],EA:[`H`,`h`,`hB`,`hb`],EC:[`h`,`H`,`hB`,`hb`],EE:[`H`,`hB`],EG:[`h`,`hB`,`hb`,`H`],EH:[`h`,`hB`,`hb`,`H`],ER:[`h`,`H`],ES:[`H`,`hB`,`h`,`hb`],ET:[`hB`,`hb`,`h`,`H`],FI:[`H`],FJ:[`h`,`hb`,`H`,`hB`],FK:[`H`,`h`,`hb`,`hB`],FM:[`h`,`hb`,`H`,`hB`],FO:[`H`,`h`],FR:[`H`,`hB`],GA:[`H`,`hB`],GB:[`H`,`h`,`hb`,`hB`],GD:[`h`,`hb`,`H`,`hB`],GE:[`H`,`hB`,`h`],GF:[`H`,`hB`],GG:[`H`,`h`,`hb`,`hB`],GH:[`h`,`H`],GI:[`H`,`h`,`hb`,`hB`],GL:[`H`,`h`],GM:[`h`,`hb`,`H`,`hB`],GN:[`H`,`hB`],GP:[`H`,`hB`],GQ:[`H`,`hB`,`h`,`hb`],GR:[`h`,`H`,`hb`,`hB`],GT:[`h`,`H`,`hB`,`hb`],GU:[`h`,`hb`,`H`,`hB`],GW:[`H`,`hB`],GY:[`h`,`hb`,`H`,`hB`],HK:[`h`,`hB`,`hb`,`H`],HN:[`h`,`H`,`hB`,`hb`],HR:[`H`,`hB`],HU:[`H`,`h`],IC:[`H`,`h`,`hB`,`hb`],ID:[`H`],IE:[`H`,`h`,`hb`,`hB`],IL:[`H`,`hB`],IM:[`H`,`h`,`hb`,`hB`],IN:[`h`,`H`],IO:[`H`,`h`,`hb`,`hB`],IQ:[`h`,`hB`,`hb`,`H`],IR:[`hB`,`H`],IS:[`H`],IT:[`H`,`hB`],JE:[`H`,`h`,`hb`,`hB`],JM:[`h`,`hb`,`H`,`hB`],JO:[`h`,`hB`,`hb`,`H`],JP:[`H`,`K`,`h`],KE:[`hB`,`hb`,`H`,`h`],KG:[`H`,`h`,`hB`,`hb`],KH:[`hB`,`h`,`H`,`hb`],KI:[`h`,`hb`,`H`,`hB`],KM:[`H`,`h`,`hB`,`hb`],KN:[`h`,`hb`,`H`,`hB`],KP:[`h`,`H`,`hB`,`hb`],KR:[`h`,`H`,`hB`,`hb`],KW:[`h`,`hB`,`hb`,`H`],KY:[`h`,`hb`,`H`,`hB`],KZ:[`H`,`hB`],LA:[`H`,`hb`,`hB`,`h`],LB:[`h`,`hB`,`hb`,`H`],LC:[`h`,`hb`,`H`,`hB`],LI:[`H`,`hB`,`h`],LK:[`H`,`h`,`hB`,`hb`],LR:[`h`,`hb`,`H`,`hB`],LS:[`h`,`H`],LT:[`H`,`h`,`hb`,`hB`],LU:[`H`,`h`,`hB`],LV:[`H`,`hB`,`hb`,`h`],LY:[`h`,`hB`,`hb`,`H`],MA:[`H`,`h`,`hB`,`hb`],MC:[`H`,`hB`],MD:[`H`,`hB`],ME:[`H`,`hB`,`h`],MF:[`H`,`hB`],MG:[`H`,`h`],MH:[`h`,`hb`,`H`,`hB`],MK:[`H`,`h`,`hb`,`hB`],ML:[`H`],MM:[`hB`,`hb`,`H`,`h`],MN:[`H`,`h`,`hb`,`hB`],MO:[`h`,`hB`,`hb`,`H`],MP:[`h`,`hb`,`H`,`hB`],MQ:[`H`,`hB`],MR:[`h`,`hB`,`hb`,`H`],MS:[`H`,`h`,`hb`,`hB`],MT:[`H`,`h`],MU:[`H`,`h`],MV:[`H`,`h`],MW:[`h`,`hb`,`H`,`hB`],MX:[`h`,`H`,`hB`,`hb`],MY:[`hb`,`hB`,`h`,`H`],MZ:[`H`,`hB`],NA:[`h`,`H`,`hB`,`hb`],NC:[`H`,`hB`],NE:[`H`],NF:[`H`,`h`,`hb`,`hB`],NG:[`H`,`h`,`hb`,`hB`],NI:[`h`,`H`,`hB`,`hb`],NL:[`H`,`hB`],NO:[`H`,`h`],NP:[`H`,`h`,`hB`],NR:[`H`,`h`,`hb`,`hB`],NU:[`H`,`h`,`hb`,`hB`],NZ:[`h`,`hb`,`H`,`hB`],OM:[`h`,`hB`,`hb`,`H`],PA:[`h`,`H`,`hB`,`hb`],PE:[`h`,`H`,`hB`,`hb`],PF:[`H`,`h`,`hB`],PG:[`h`,`H`],PH:[`h`,`hB`,`hb`,`H`],PK:[`h`,`hB`,`H`],PL:[`H`,`h`],PM:[`H`,`hB`],PN:[`H`,`h`,`hb`,`hB`],PR:[`h`,`H`,`hB`,`hb`],PS:[`h`,`hB`,`hb`,`H`],PT:[`H`,`hB`],PW:[`h`,`H`],PY:[`h`,`H`,`hB`,`hb`],QA:[`h`,`hB`,`hb`,`H`],RE:[`H`,`hB`],RO:[`H`,`hB`],RS:[`H`,`hB`,`h`],RU:[`H`],RW:[`H`,`h`],SA:[`h`,`hB`,`hb`,`H`],SB:[`h`,`hb`,`H`,`hB`],SC:[`H`,`h`,`hB`],SD:[`h`,`hB`,`hb`,`H`],SE:[`H`],SG:[`h`,`hb`,`H`,`hB`],SH:[`H`,`h`,`hb`,`hB`],SI:[`H`,`hB`],SJ:[`H`],SK:[`H`],SL:[`h`,`hb`,`H`,`hB`],SM:[`H`,`h`,`hB`],SN:[`H`,`h`,`hB`],SO:[`h`,`H`],SR:[`H`,`hB`],SS:[`h`,`hb`,`H`,`hB`],ST:[`H`,`hB`],SV:[`h`,`H`,`hB`,`hb`],SX:[`H`,`h`,`hb`,`hB`],SY:[`h`,`hB`,`hb`,`H`],SZ:[`h`,`hb`,`H`,`hB`],TA:[`H`,`h`,`hb`,`hB`],TC:[`h`,`hb`,`H`,`hB`],TD:[`h`,`H`,`hB`],TF:[`H`,`h`,`hB`],TG:[`H`,`hB`],TH:[`H`,`h`],TJ:[`H`,`h`],TL:[`H`,`hB`,`hb`,`h`],TM:[`H`,`h`],TN:[`h`,`hB`,`hb`,`H`],TO:[`h`,`H`],TR:[`H`,`hB`],TT:[`h`,`hb`,`H`,`hB`],TW:[`hB`,`hb`,`h`,`H`],TZ:[`hB`,`hb`,`H`,`h`],UA:[`H`,`hB`,`h`],UG:[`hB`,`hb`,`H`,`h`],UM:[`h`,`hb`,`H`,`hB`],US:[`h`,`hb`,`H`,`hB`],UY:[`h`,`H`,`hB`,`hb`],UZ:[`H`,`hB`,`h`],VA:[`H`,`h`,`hB`],VC:[`h`,`hb`,`H`,`hB`],VE:[`h`,`H`,`hB`,`hb`],VG:[`h`,`hb`,`H`,`hB`],VI:[`h`,`hb`,`H`,`hB`],VN:[`H`,`h`],VU:[`h`,`H`],WF:[`H`,`hB`],WS:[`h`,`H`],XK:[`H`,`hB`,`h`],YE:[`h`,`hB`,`hb`,`H`],YT:[`H`,`hB`],ZA:[`H`,`h`,`hb`,`hB`],ZM:[`h`,`hb`,`H`,`hB`],ZW:[`H`,`h`],"af-ZA":[`H`,`h`,`hB`,`hb`],"ar-001":[`h`,`hB`,`hb`,`H`],"ca-ES":[`H`,`h`,`hB`],"en-001":[`h`,`hb`,`H`,`hB`],"en-HK":[`h`,`hb`,`H`,`hB`],"en-IL":[`H`,`h`,`hb`,`hB`],"en-MY":[`h`,`hb`,`H`,`hB`],"es-BR":[`H`,`h`,`hB`,`hb`],"es-ES":[`H`,`h`,`hB`,`hb`],"es-GQ":[`H`,`h`,`hB`,`hb`],"fr-CA":[`H`,`h`,`hB`],"gl-ES":[`H`,`h`,`hB`],"gu-IN":[`hB`,`hb`,`h`,`H`],"hi-IN":[`hB`,`h`,`H`],"it-CH":[`H`,`h`,`hB`],"it-IT":[`H`,`h`,`hB`],"kn-IN":[`hB`,`h`,`H`],"ml-IN":[`hB`,`h`,`H`],"mr-IN":[`hB`,`hb`,`h`,`H`],"pa-IN":[`hB`,`hb`,`h`,`H`],"ta-IN":[`hB`,`h`,`hb`,`H`],"te-IN":[`hB`,`h`,`H`],"zu-ZA":[`H`,`hB`,`hb`,`h`]};function Te$1(e,t){for(var n=``,r=0;r>1),c=`a`,l=Ee$1(t);for((l==`H`||l==`k`)&&(s=0);s-- >0;)n+=c;for(;o-- >0;)n=l+n;}else i===`J`?n+=`H`:n+=i;}return n}function Ee$1(e){var t=e.hourCycle;if(t===void 0&&e.hourCycles&&e.hourCycles.length&&(t=e.hourCycles[0]),t)switch(t){case `h24`:return `k`;case `h23`:return `H`;case `h12`:return `h`;case `h11`:return `K`;default:throw Error(`Invalid hourCycle`)}var n=e.language,r;return n!==`root`&&(r=e.maximize().region),(T$3[r||``]||T$3[n||``]||T$3[`${n}-001`]||T$3[`001`])[0]}var De$1=RegExp(`^${ue$1.source}*`),Oe$1=RegExp(`${ue$1.source}*\$`);function E$3(e,t){return {start:e,end:t}}var ke$1=!!String.prototype.startsWith&&`_a`.startsWith(`a`,1),Ae$1=!!String.fromCodePoint,je$1=!!Object.fromEntries,Me$1=!!String.prototype.codePointAt,Ne$1=!!String.prototype.trimStart,Pe$1=!!String.prototype.trimEnd,Fe$1=Number.isSafeInteger?Number.isSafeInteger:function(e){return typeof e==`number`&&isFinite(e)&&Math.floor(e)===e&&Math.abs(e)<=9007199254740991},D$2=true;try{D$2=Ve$1(`([^\\p{White_Space}\\p{Pattern_Syntax}]*)`,`yu`).exec(`a`)?.[0]===`a`;}catch{D$2=false;}var Ie$1=ke$1?function(e,t,n){return e.startsWith(t,n)}:function(e,t,n){return e.slice(n,n+t.length)===t},O$2=Ae$1?String.fromCodePoint:function(){for(var e=[...arguments],t=``,n=e.length,r=0,i;n>r;){if(i=e[r++],i>1114111)throw RangeError(i+` is not a valid code point`);t+=i<65536?String.fromCharCode(i):String.fromCharCode(((i-=65536)>>10)+55296,i%1024+56320);}return t},Le$1=je$1?Object.fromEntries:function(e){for(var t={},n=0,r=e;n=n)){var r=e.charCodeAt(t),i;return r<55296||r>56319||t+1===n||(i=e.charCodeAt(t+1))<56320||i>57343?r:(r-55296<<10)+(i-56320)+65536}},ze$1=Ne$1?function(e){return e.trimStart()}:function(e){return e.replace(De$1,``)},Be$1=Pe$1?function(e){return e.trimEnd()}:function(e){return e.replace(Oe$1,``)};function Ve$1(e,t){return new RegExp(e,t)}var k$2;if(D$2){var He$1=Ve$1(`([^\\p{White_Space}\\p{Pattern_Syntax}]*)`,`yu`);k$2=function(e,t){return He$1.lastIndex=t,He$1.exec(e)[1]??``};}else k$2=function(e,t){for(var n=[];;){var r=Re$1(e,t);if(r===void 0||Ke$1(r)||qe$1(r))break;n.push(r),t+=r>=65536?2:1;}return O$2.apply(void 0,n)};var Ue$1=function(){function e(e,t){t===void 0&&(t={}),this.message=e,this.position={offset:0,line:1,column:1},this.ignoreTag=!!t.ignoreTag,this.locale=t.locale,this.requiresOtherClause=!!t.requiresOtherClause,this.shouldParseSkeletons=!!t.shouldParseSkeletons;}return e.prototype.parse=function(){if(this.offset()!==0)throw Error(`parser can only be used once`);return this.parseMessage(0,``,false)},e.prototype.parseMessage=function(e,t,n){for(var r=[];!this.isEOF();){var i=this.char();if(i===123){var a=this.parseArgument(e,n);if(a.err)return a;r.push(a.val);}else if(i===125&&e>0)break;else if(i===35&&(t===`plural`||t===`selectordinal`)){var o=this.clonePosition();this.bump(),r.push({type:S$3.pound,location:E$3(o,this.clonePosition())});}else if(i===60&&!this.ignoreTag&&this.peek()===47){if(n)break;return this.error(x$3.UNMATCHED_CLOSING_TAG,E$3(this.clonePosition(),this.clonePosition()))}else if(i===60&&!this.ignoreTag&&A$2(this.peek()||0)){var a=this.parseTag(e,t);if(a.err)return a;r.push(a.val);}else {var a=this.parseLiteral(e,t);if(a.err)return a;r.push(a.val);}}return {val:r,err:null}},e.prototype.parseTag=function(e,t){var n=this.clonePosition();this.bump();var r=this.parseTagName();if(this.bumpSpace(),this.bumpIf(`/>`))return {val:{type:S$3.literal,value:`<${r}/>`,location:E$3(n,this.clonePosition())},err:null};if(this.bumpIf(`>`)){var i=this.parseMessage(e+1,t,true);if(i.err)return i;var a=i.val,o=this.clonePosition();if(this.bumpIf(``)){if(this.isEOF()||!A$2(this.char()))return this.error(x$3.INVALID_TAG,E$3(o,this.clonePosition()));var s=this.clonePosition();return r===this.parseTagName()?(this.bumpSpace(),this.bumpIf(`>`)?{val:{type:S$3.tag,value:r,children:a,location:E$3(n,this.clonePosition())},err:null}:this.error(x$3.INVALID_TAG,E$3(o,this.clonePosition()))):this.error(x$3.UNMATCHED_CLOSING_TAG,E$3(s,this.clonePosition()))}else return this.error(x$3.UNCLOSED_TAG,E$3(n,this.clonePosition()))}else return this.error(x$3.INVALID_TAG,E$3(n,this.clonePosition()))},e.prototype.parseTagName=function(){var e=this.offset();for(this.bump();!this.isEOF()&&Ge$1(this.char());)this.bump();return this.message.slice(e,this.offset())},e.prototype.parseLiteral=function(e,t){for(var n=this.clonePosition(),r=``;;){var i=this.tryParseQuote(t);if(i){r+=i;continue}var a=this.tryParseUnquoted(e,t);if(a){r+=a;continue}var o=this.tryParseLeftAngleBracket();if(o){r+=o;continue}break}var s=E$3(n,this.clonePosition());return {val:{type:S$3.literal,value:r,location:s},err:null}},e.prototype.tryParseLeftAngleBracket=function(){return !this.isEOF()&&this.char()===60&&(this.ignoreTag||!We$1(this.peek()||0))?(this.bump(),`<`):null},e.prototype.tryParseQuote=function(e){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),`'`;case 123:case 60:case 62:case 125:break;case 35:if(e===`plural`||e===`selectordinal`)break;return null;default:return null}this.bump();var t=[this.char()];for(this.bump();!this.isEOF();){var n=this.char();if(n===39)if(this.peek()===39)t.push(39),this.bump();else {this.bump();break}else t.push(n);this.bump();}return O$2.apply(void 0,t)},e.prototype.tryParseUnquoted=function(e,t){if(this.isEOF())return null;var n=this.char();return n===60||n===123||n===35&&(t===`plural`||t===`selectordinal`)||n===125&&e>0?null:(this.bump(),O$2(n))},e.prototype.parseArgument=function(e,t){var n=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(x$3.EXPECT_ARGUMENT_CLOSING_BRACE,E$3(n,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(x$3.EMPTY_ARGUMENT,E$3(n,this.clonePosition()));var r=this.parseIdentifierIfPossible().value;if(!r)return this.error(x$3.MALFORMED_ARGUMENT,E$3(n,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(x$3.EXPECT_ARGUMENT_CLOSING_BRACE,E$3(n,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:S$3.argument,value:r,location:E$3(n,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(x$3.EXPECT_ARGUMENT_CLOSING_BRACE,E$3(n,this.clonePosition())):this.parseArgumentOptions(e,t,r,n);default:return this.error(x$3.MALFORMED_ARGUMENT,E$3(n,this.clonePosition()))}},e.prototype.parseIdentifierIfPossible=function(){var e=this.clonePosition(),t=this.offset(),n=k$2(this.message,t),r=t+n.length;return this.bumpTo(r),{value:n,location:E$3(e,this.clonePosition())}},e.prototype.parseArgumentOptions=function(e,t,n,r){var i=this.clonePosition(),a=this.parseIdentifierIfPossible().value,s=this.clonePosition();switch(a){case ``:return this.error(x$3.EXPECT_ARGUMENT_TYPE,E$3(i,s));case `number`:case `date`:case `time`:this.bumpSpace();var c=null;if(this.bumpIf(`,`)){this.bumpSpace();var l=this.clonePosition(),u=this.parseSimpleArgStyleIfPossible();if(u.err)return u;var d=Be$1(u.val);if(d.length===0)return this.error(x$3.EXPECT_ARGUMENT_STYLE,E$3(this.clonePosition(),this.clonePosition()));c={style:d,styleLocation:E$3(l,this.clonePosition())};}var f=this.tryParseArgumentClose(r);if(f.err)return f;var p=E$3(r,this.clonePosition());if(c&&Ie$1(c?.style,`::`,0)){var m=ze$1(c.style.slice(2));if(a===`number`){var u=this.parseNumberSkeletonFromString(m,c.styleLocation);return u.err?u:{val:{type:S$3.number,value:n,location:p,style:u.val},err:null}}else {if(m.length===0)return this.error(x$3.EXPECT_DATE_TIME_SKELETON,p);var h=m;this.locale&&(h=Te$1(m,this.locale));var d={type:C$3.dateTime,pattern:h,location:c.styleLocation,parsedOptions:this.shouldParseSkeletons?fe$1(h):{}};return {val:{type:a===`date`?S$3.date:S$3.time,value:n,location:p,style:d},err:null}}}return {val:{type:a===`number`?S$3.number:a===`date`?S$3.date:S$3.time,value:n,location:p,style:c?.style??null},err:null};case `plural`:case `selectordinal`:case `select`:var g=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(`,`))return this.error(x$3.EXPECT_SELECT_ARGUMENT_OPTIONS,E$3(g,o$5({},g)));this.bumpSpace();var _=this.parseIdentifierIfPossible(),v=0;if(a!==`select`&&_.value===`offset`){if(!this.bumpIf(`:`))return this.error(x$3.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,E$3(this.clonePosition(),this.clonePosition()));this.bumpSpace();var u=this.tryParseDecimalInteger(x$3.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE,x$3.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);if(u.err)return u;this.bumpSpace(),_=this.parseIdentifierIfPossible(),v=u.val;}var y=this.tryParsePluralOrSelectOptions(e,a,t,_);if(y.err)return y;var f=this.tryParseArgumentClose(r);if(f.err)return f;var b=E$3(r,this.clonePosition());return a===`select`?{val:{type:S$3.select,value:n,options:Le$1(y.val),location:b},err:null}:{val:{type:S$3.plural,value:n,options:Le$1(y.val),offset:v,pluralType:a===`plural`?`cardinal`:`ordinal`,location:b},err:null};default:return this.error(x$3.INVALID_ARGUMENT_TYPE,E$3(i,s))}},e.prototype.tryParseArgumentClose=function(e){return this.isEOF()||this.char()!==125?this.error(x$3.EXPECT_ARGUMENT_CLOSING_BRACE,E$3(e,this.clonePosition())):(this.bump(),{val:true,err:null})},e.prototype.parseSimpleArgStyleIfPossible=function(){for(var e=0,t=this.clonePosition();!this.isEOF();)switch(this.char()){case 39:this.bump();var n=this.clonePosition();if(!this.bumpUntil(`'`))return this.error(x$3.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE,E$3(n,this.clonePosition()));this.bump();break;case 123:e+=1,this.bump();break;case 125:if(e>0)--e;else return {val:this.message.slice(t.offset,this.offset()),err:null};break;default:this.bump();break}return {val:this.message.slice(t.offset,this.offset()),err:null}},e.prototype.parseNumberSkeletonFromString=function(e,t){var n=[];try{n=me$1(e);}catch{return this.error(x$3.INVALID_NUMBER_SKELETON,t)}return {val:{type:C$3.number,tokens:n,location:t,parsedOptions:this.shouldParseSkeletons?we$1(n):{}},err:null}},e.prototype.tryParsePluralOrSelectOptions=function(e,t,n,r){for(var i,a=false,o=[],s=new Set,c=r.value,l=r.location;;){if(c.length===0){var u=this.clonePosition();if(t!==`select`&&this.bumpIf(`=`)){var d=this.tryParseDecimalInteger(x$3.EXPECT_PLURAL_ARGUMENT_SELECTOR,x$3.INVALID_PLURAL_ARGUMENT_SELECTOR);if(d.err)return d;l=E$3(u,this.clonePosition()),c=this.message.slice(u.offset,this.offset());}else break}if(s.has(c))return this.error(t===`select`?x$3.DUPLICATE_SELECT_ARGUMENT_SELECTOR:x$3.DUPLICATE_PLURAL_ARGUMENT_SELECTOR,l);c===`other`&&(a=true),this.bumpSpace();var f=this.clonePosition();if(!this.bumpIf(`{`))return this.error(t===`select`?x$3.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT:x$3.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT,E$3(this.clonePosition(),this.clonePosition()));var p=this.parseMessage(e+1,t,n);if(p.err)return p;var m=this.tryParseArgumentClose(f);if(m.err)return m;o.push([c,{value:p.val,location:E$3(f,this.clonePosition())}]),s.add(c),this.bumpSpace(),i=this.parseIdentifierIfPossible(),c=i.value,l=i.location;}return o.length===0?this.error(t===`select`?x$3.EXPECT_SELECT_ARGUMENT_SELECTOR:x$3.EXPECT_PLURAL_ARGUMENT_SELECTOR,E$3(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!a?this.error(x$3.MISSING_OTHER_CLAUSE,E$3(this.clonePosition(),this.clonePosition())):{val:o,err:null}},e.prototype.tryParseDecimalInteger=function(e,t){var n=1,r=this.clonePosition();this.bumpIf(`+`)||this.bumpIf(`-`)&&(n=-1);for(var i=false,a=0;!this.isEOF();){var o=this.char();if(o>=48&&o<=57)i=true,a=a*10+(o-48),this.bump();else break}var s=E$3(r,this.clonePosition());return i?(a*=n,Fe$1(a)?{val:a,err:null}:this.error(t,s)):this.error(e,s)},e.prototype.offset=function(){return this.position.offset},e.prototype.isEOF=function(){return this.offset()===this.message.length},e.prototype.clonePosition=function(){return {offset:this.position.offset,line:this.position.line,column:this.position.column}},e.prototype.char=function(){var e=this.position.offset;if(e>=this.message.length)throw Error(`out of bound`);var t=Re$1(this.message,e);if(t===void 0)throw Error(`Offset ${e} is at invalid UTF-16 code unit boundary`);return t},e.prototype.error=function(e,t){return {val:null,err:{kind:e,message:this.message,location:t}}},e.prototype.bump=function(){if(!this.isEOF()){var e=this.char();e===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=e<65536?1:2);}},e.prototype.bumpIf=function(e){if(Ie$1(this.message,e,this.offset())){for(var t=0;t=0?(this.bumpTo(n),true):(this.bumpTo(this.message.length),false)},e.prototype.bumpTo=function(e){if(this.offset()>e)throw Error(`targetOffset ${e} must be greater than or equal to the current offset ${this.offset()}`);for(e=Math.min(e,this.message.length);;){var t=this.offset();if(t===e)break;if(t>e)throw Error(`targetOffset ${e} is at invalid UTF-16 code unit boundary`);if(this.bump(),this.isEOF())break}},e.prototype.bumpSpace=function(){for(;!this.isEOF()&&Ke$1(this.char());)this.bump();},e.prototype.peek=function(){if(this.isEOF())return null;var e=this.char(),t=this.offset();return this.message.charCodeAt(t+(e>=65536?2:1))??null},e}();function A$2(e){return e>=97&&e<=122||e>=65&&e<=90}function We$1(e){return A$2(e)||e===47}function Ge$1(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function Ke$1(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function qe$1(e){return e>=33&&e<=35||e===36||e>=37&&e<=39||e===40||e===41||e===42||e===43||e===44||e===45||e>=46&&e<=47||e>=58&&e<=59||e>=60&&e<=62||e>=63&&e<=64||e===91||e===92||e===93||e===94||e===96||e===123||e===124||e===125||e===126||e===161||e>=162&&e<=165||e===166||e===167||e===169||e===171||e===172||e===174||e===176||e===177||e===182||e===187||e===191||e===215||e===247||e>=8208&&e<=8213||e>=8214&&e<=8215||e===8216||e===8217||e===8218||e>=8219&&e<=8220||e===8221||e===8222||e===8223||e>=8224&&e<=8231||e>=8240&&e<=8248||e===8249||e===8250||e>=8251&&e<=8254||e>=8257&&e<=8259||e===8260||e===8261||e===8262||e>=8263&&e<=8273||e===8274||e===8275||e>=8277&&e<=8286||e>=8592&&e<=8596||e>=8597&&e<=8601||e>=8602&&e<=8603||e>=8604&&e<=8607||e===8608||e>=8609&&e<=8610||e===8611||e>=8612&&e<=8613||e===8614||e>=8615&&e<=8621||e===8622||e>=8623&&e<=8653||e>=8654&&e<=8655||e>=8656&&e<=8657||e===8658||e===8659||e===8660||e>=8661&&e<=8691||e>=8692&&e<=8959||e>=8960&&e<=8967||e===8968||e===8969||e===8970||e===8971||e>=8972&&e<=8991||e>=8992&&e<=8993||e>=8994&&e<=9e3||e===9001||e===9002||e>=9003&&e<=9083||e===9084||e>=9085&&e<=9114||e>=9115&&e<=9139||e>=9140&&e<=9179||e>=9180&&e<=9185||e>=9186&&e<=9254||e>=9255&&e<=9279||e>=9280&&e<=9290||e>=9291&&e<=9311||e>=9472&&e<=9654||e===9655||e>=9656&&e<=9664||e===9665||e>=9666&&e<=9719||e>=9720&&e<=9727||e>=9728&&e<=9838||e===9839||e>=9840&&e<=10087||e===10088||e===10089||e===10090||e===10091||e===10092||e===10093||e===10094||e===10095||e===10096||e===10097||e===10098||e===10099||e===10100||e===10101||e>=10132&&e<=10175||e>=10176&&e<=10180||e===10181||e===10182||e>=10183&&e<=10213||e===10214||e===10215||e===10216||e===10217||e===10218||e===10219||e===10220||e===10221||e===10222||e===10223||e>=10224&&e<=10239||e>=10240&&e<=10495||e>=10496&&e<=10626||e===10627||e===10628||e===10629||e===10630||e===10631||e===10632||e===10633||e===10634||e===10635||e===10636||e===10637||e===10638||e===10639||e===10640||e===10641||e===10642||e===10643||e===10644||e===10645||e===10646||e===10647||e===10648||e>=10649&&e<=10711||e===10712||e===10713||e===10714||e===10715||e>=10716&&e<=10747||e===10748||e===10749||e>=10750&&e<=11007||e>=11008&&e<=11055||e>=11056&&e<=11076||e>=11077&&e<=11078||e>=11079&&e<=11084||e>=11085&&e<=11123||e>=11124&&e<=11125||e>=11126&&e<=11157||e===11158||e>=11159&&e<=11263||e>=11776&&e<=11777||e===11778||e===11779||e===11780||e===11781||e>=11782&&e<=11784||e===11785||e===11786||e===11787||e===11788||e===11789||e>=11790&&e<=11798||e===11799||e>=11800&&e<=11801||e===11802||e===11803||e===11804||e===11805||e>=11806&&e<=11807||e===11808||e===11809||e===11810||e===11811||e===11812||e===11813||e===11814||e===11815||e===11816||e===11817||e>=11818&&e<=11822||e===11823||e>=11824&&e<=11833||e>=11834&&e<=11835||e>=11836&&e<=11839||e===11840||e===11841||e===11842||e>=11843&&e<=11855||e>=11856&&e<=11857||e===11858||e>=11859&&e<=11903||e>=12289&&e<=12291||e===12296||e===12297||e===12298||e===12299||e===12300||e===12301||e===12302||e===12303||e===12304||e===12305||e>=12306&&e<=12307||e===12308||e===12309||e===12310||e===12311||e===12312||e===12313||e===12314||e===12315||e===12316||e===12317||e>=12318&&e<=12319||e===12320||e===12336||e===64830||e===64831||e>=65093&&e<=65094}function j$2(e){e.forEach(function(e){if(delete e.location,ae$1(e)||oe$1(e))for(var t in e.options)delete e.options[t].location,j$2(e.options[t].value);else ne(e)&&le$1(e.style)||(re$1(e)||ie$1(e))&&w$3(e.style)?delete e.style.location:ce$1(e)&&j$2(e.children);});}function Je$1(e,t){t===void 0&&(t={}),t=o$5({shouldParseSkeletons:true,requiresOtherClause:true},t);var n=new Ue$1(e,t).parse();if(n.err){var r=SyntaxError(x$3[n.err.kind]);throw r.location=n.err.location,r.originalMessage=n.err.message,r}return t?.captureLocation||j$2(n.val),n.val}var M$2;(function(e){e.MISSING_VALUE=`MISSING_VALUE`,e.INVALID_VALUE=`INVALID_VALUE`,e.MISSING_INTL_API=`MISSING_INTL_API`;})(M$2||={});var N$2=function(e){a$4(t,e);function t(t,n,r){var i=e.call(this,t)||this;return i.code=n,i.originalMessage=r,i}return t.prototype.toString=function(){return `[formatjs Error: ${this.code}] ${this.message}`},t}(Error),Ye$1=function(e){a$4(t,e);function t(t,n,r,i){return e.call(this,`Invalid values for "${t}": "${n}". Options are "${Object.keys(r).join(`", "`)}"`,M$2.INVALID_VALUE,i)||this}return t}(N$2),Xe$1=function(e){a$4(t,e);function t(t,n,r){return e.call(this,`Value for "${t}" must be of type ${n}`,M$2.INVALID_VALUE,r)||this}return t}(N$2),Ze$1=function(e){a$4(t,e);function t(t,n){return e.call(this,`The intl string context variable "${t}" was not provided to the string "${n}"`,M$2.MISSING_VALUE,n)||this}return t}(N$2),P$2;(function(e){e[e.literal=0]=`literal`,e[e.object=1]=`object`;})(P$2||={});function Qe$1(e){return e.length<2?e:e.reduce(function(e,t){var n=e[e.length-1];return !n||n.type!==P$2.literal||t.type!==P$2.literal?e.push(t):n.value+=t.value,e},[])}function $e$1(e){return typeof e==`function`}function F$2(e,t,n,r,i,a,o){if(e.length===1&&ee$1(e[0]))return [{type:P$2.literal,value:e[0].value}];for(var s=[],c=0,l=e;c0?new Intl.Locale(t[0]):new Intl.Locale(typeof e==`string`?e:e[0])}},e.__parse=Je$1,e.formats={number:{integer:{maximumFractionDigits:0},currency:{style:`currency`},percent:{style:`percent`}},date:{short:{month:`numeric`,day:`numeric`,year:`2-digit`},medium:{month:`short`,day:`numeric`,year:`numeric`},long:{month:`long`,day:`numeric`,year:`numeric`},full:{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}},time:{short:{hour:`numeric`,minute:`numeric`},medium:{hour:`numeric`,minute:`numeric`,second:`numeric`},long:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`},full:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`}}},e}(),it$1=d$6(t$4());function at$1(e,t){if(t==null)return;if(t in e)return e[t];let n=t.split(`.`),r=e;for(let e=0;e0){let t=n.slice(e,n.length).join(`.`);if(t in r){r=r[t];break}}r=r[n[e]];}else r=void 0;return r}var L$2={},ot$1=(e,t,n)=>n&&(t in L$2||(L$2[t]={}),e in L$2[t]||(L$2[t][e]=n),n),st$1=(e,t)=>{if(t==null)return;if(t in L$2&&e in L$2[t])return L$2[t][e];let n=q$2(t);for(let r=0;r(n[e]=it$1.default.all([n[e]||{},...t]),n));}derived([z$2],([e])=>Object.keys(e)),z$2.subscribe(e=>R$2=e);var B$2={};function pt$1(e){B$2[e]=new Set;}function mt$1(e,t){B$2[e].delete(t),B$2[e].size===0&&delete B$2[e];}function V$2(e){return B$2[e]}function ht$1(e){return q$2(e).map(e=>{let t=V$2(e);return [e,t?[...t]:[]]}).filter(([,e])=>e.length>0)}function H$2(e){return e==null?false:q$2(e).some(e=>V$2(e)?.size)}function gt$1(e,t){return Promise.all(t.map(t=>(mt$1(e,t),t().then(e=>e.default||e)))).then(t=>ft(e,...t))}var U$2={};function _t$1(e){if(!H$2(e))return e in U$2?U$2[e]:Promise.resolve();let t=ht$1(e);return U$2[e]=Promise.all(t.map(([e,t])=>gt$1(e,t))).then(()=>{if(H$2(e))return _t$1(e);delete U$2[e];}),U$2[e]}function vt$1(e,t){V$2(e)||pt$1(e);let n=V$2(e);V$2(e).has(t)||(lt$1(e)||z$2.update(t=>(t[e]={},t)),n.add(t));}var yt$1=Object.getOwnPropertySymbols,bt$1=Object.prototype.hasOwnProperty,xt$1=Object.prototype.propertyIsEnumerable,St$1=(e,t)=>{var n={};for(var r in e)bt$1.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&yt$1)for(var r of yt$1(e))t.indexOf(r)<0&&xt$1.call(e,r)&&(n[r]=e[r]);return n},Ct={number:{scientific:{notation:`scientific`},engineering:{notation:`engineering`},compactLong:{notation:`compact`,compactDisplay:`long`},compactShort:{notation:`compact`,compactDisplay:`short`}},date:{short:{month:`numeric`,day:`numeric`,year:`2-digit`},medium:{month:`short`,day:`numeric`,year:`numeric`},long:{month:`long`,day:`numeric`,year:`numeric`},full:{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}},time:{short:{hour:`numeric`,minute:`numeric`},medium:{hour:`numeric`,minute:`numeric`,second:`numeric`},long:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`},full:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`}}};function wt$1({locale:e,id:t}){console.warn(`[svelte-i18n] The message "${t}" was not found in "${q$2(e).join(`", "`)}".${H$2(J$2())?`
+
+Note: there are at least one loader still registered to this locale that wasn't executed.`:``}`);}var W$2={fallbackLocale:null,loadingDelay:200,formats:Ct,warnOnMissingMessages:true,handleMissingMessage:void 0,ignoreTag:true};function G$2(){return W$2}function Tt$1(e){let t=e,{formats:n}=t,r=St$1(t,[`formats`]),i=e.fallbackLocale;if(e.initialLocale)try{rt$1.resolveLocale(e.initialLocale)&&(i=e.initialLocale);}catch{console.warn(`[svelte-i18n] The initial locale "${e.initialLocale}" is not a valid locale.`);}return r.warnOnMissingMessages&&(delete r.warnOnMissingMessages,r.handleMissingMessage==null?r.handleMissingMessage=wt$1:console.warn(`[svelte-i18n] The "warnOnMissingMessages" option is deprecated. Please use the "handleMissingMessage" option instead.`)),Object.assign(W$2,r,{initialLocale:i}),n&&(`number`in n&&Object.assign(W$2.formats.number,n.number),`date`in n&&Object.assign(W$2.formats.date,n.date),`time`in n&&Object.assign(W$2.formats.time,n.time)),Y$2.set(i)}var Et$1=writable(false),Dt$1=Object.defineProperty,Ot$1=Object.defineProperties,kt$1=Object.getOwnPropertyDescriptors,At=Object.getOwnPropertySymbols,jt$1=Object.prototype.hasOwnProperty,Mt$1=Object.prototype.propertyIsEnumerable,Nt$1=(e,t,n)=>t in e?Dt$1(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n,Pt$1=(e,t)=>{for(var n in t||={})jt$1.call(t,n)&&Nt$1(e,n,t[n]);if(At)for(var n of At(t))Mt$1.call(t,n)&&Nt$1(e,n,t[n]);return e},Ft=(e,t)=>Ot$1(e,kt$1(t)),It,K$2=writable(null);function Lt(e){return e.split(`-`).map((e,t,n)=>n.slice(0,t+1).join(`-`)).reverse()}function q$2(e,t=G$2().fallbackLocale){let n=Lt(e);return t?[...new Set([...n,...Lt(t)])]:n}function J$2(){return It??void 0}K$2.subscribe(e=>{It=e??void 0,typeof window<`u`&&e!=null&&document.documentElement.setAttribute(`lang`,e);});var Y$2=Ft(Pt$1({},K$2),{set:e=>{if(e&&dt$1(e)&&H$2(e)){let{loadingDelay:t}=G$2(),n;return typeof window<`u`&&J$2()!=null&&t?n=window.setTimeout(()=>Et$1.set(true),t):Et$1.set(true),_t$1(e).then(()=>{K$2.set(e);}).finally(()=>{clearTimeout(n),Et$1.set(false);})}return K$2.set(e)}}),Rt=()=>typeof window>`u`?null:window.navigator.language||window.navigator.languages[0],X$1=e=>{let t=Object.create(null);return n=>{let r=JSON.stringify(n);return r in t?t[r]:t[r]=e(n)}},zt=Object.defineProperty,Z$1=Object.getOwnPropertySymbols,Bt=Object.prototype.hasOwnProperty,Vt=Object.prototype.propertyIsEnumerable,Ht=(e,t,n)=>t in e?zt(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n,Ut=(e,t)=>{for(var n in t||={})Bt.call(t,n)&&Ht(e,n,t[n]);if(Z$1)for(var n of Z$1(t))Vt.call(t,n)&&Ht(e,n,t[n]);return e},Q$1=(e,t)=>{var n={};for(var r in e)Bt.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Z$1)for(var r of Z$1(e))t.indexOf(r)<0&&Vt.call(e,r)&&(n[r]=e[r]);return n},$$1=(e,t)=>{let{formats:n}=G$2();if(e in n&&t in n[e])return n[e][t];throw Error(`[svelte-i18n] Unknown "${t}" ${e} format.`)},Wt=X$1(e=>{var t=e,{locale:n,format:r}=t,i=Q$1(t,[`locale`,`format`]);if(n==null)throw Error(`[svelte-i18n] A "locale" must be set to format numbers`);return r&&(i=$$1(`number`,r)),new Intl.NumberFormat(n,i)}),Gt=X$1(e=>{var t=e,{locale:n,format:r}=t,i=Q$1(t,[`locale`,`format`]);if(n==null)throw Error(`[svelte-i18n] A "locale" must be set to format dates`);return r?i=$$1(`date`,r):Object.keys(i).length===0&&(i=$$1(`date`,`short`)),new Intl.DateTimeFormat(n,i)}),Kt=X$1(e=>{var t=e,{locale:n,format:r}=t,i=Q$1(t,[`locale`,`format`]);if(n==null)throw Error(`[svelte-i18n] A "locale" must be set to format time values`);return r?i=$$1(`time`,r):Object.keys(i).length===0&&(i=$$1(`time`,`short`)),new Intl.DateTimeFormat(n,i)}),qt=(e={})=>{var t=e,{locale:n=J$2()}=t,r=Q$1(t,[`locale`]);return Wt(Ut({locale:n},r))},Jt=(e={})=>{var t=e,{locale:n=J$2()}=t,r=Q$1(t,[`locale`]);return Gt(Ut({locale:n},r))},Yt=(e={})=>{var t=e,{locale:n=J$2()}=t,r=Q$1(t,[`locale`]);return Kt(Ut({locale:n},r))},Xt=X$1((e,t=J$2())=>new rt$1(e,t,G$2().formats,{ignoreTag:G$2().ignoreTag})),Zt=(e,t={})=>{var n;let r=t;typeof e==`object`&&(r=e,e=r.id);let{values:i,locale:a=J$2(),default:o}=r;if(a==null)throw Error(`[svelte-i18n] Cannot format a message without first setting the initial locale.`);let s=st$1(e,a);if(!s)s=(n=G$2()).handleMissingMessage?.call(n,{locale:a,id:e,defaultValue:o})??o??e;else if(typeof s!=`string`)return console.warn(`[svelte-i18n] Message with id "${e}" must be of type "string", found: "${typeof s}". Gettin its value through the "$format" method is deprecated; use the "json" method instead.`),s;if(!i)return s;let c=s;try{c=Xt(s,a).format(i);}catch(t){t instanceof Error&&console.warn(`[svelte-i18n] Message "${e}" has syntax error:`,t.message);}return c},Qt=(e,t)=>Yt(t).format(e),$t=(e,t)=>Jt(t).format(e),en=(e,t)=>qt(t).format(e),tn=(e,t=J$2())=>st$1(e,t),nn=derived([Y$2,z$2],()=>Zt);derived([Y$2],()=>Qt),derived([Y$2],()=>$t),derived([Y$2],()=>en),derived([Y$2,z$2],()=>tn);
+
+var t$3=writable(null);
+
+var e$3=Object.prototype.hasOwnProperty;function t$2(e,t,r){for(r of e.keys())if(n$4(r,t))return r}function n$4(r,i){var a,o,s;if(r===i)return true;if(r&&i&&(a=r.constructor)===i.constructor){if(a===Date)return r.getTime()===i.getTime();if(a===RegExp)return r.toString()===i.toString();if(a===Array){if((o=r.length)===i.length)for(;o--&&n$4(r[o],i[o]););return o===-1}if(a===Set){if(r.size!==i.size)return false;for(o of r)if(s=o,s&&typeof s==`object`&&(s=t$2(i,s),!s)||!i.has(s))return false;return true}if(a===Map){if(r.size!==i.size)return false;for(o of r)if(s=o[0],s&&typeof s==`object`&&(s=t$2(i,s),!s)||!n$4(o[1],i.get(s)))return false;return true}if(a===ArrayBuffer)r=new Uint8Array(r),i=new Uint8Array(i);else if(a===DataView){if((o=r.byteLength)===i.byteLength)for(;o--&&r.getInt8(o)===i.getInt8(o););return o===-1}if(ArrayBuffer.isView(r)){if((o=r.byteLength)===i.byteLength)for(;o--&&r[o]===i[o];);return o===-1}if(!a||typeof r==`object`){for(a in o=0,r)if(e$3.call(r,a)&&++o&&!e$3.call(i,a)||!(a in i)||!n$4(r[a],i[a]))return false;return Object.keys(i).length===o}}return r!==r&&i!==i}
+
+var n$3=[{color:`red`,primary:600,secondary:100},{color:`green`,primary:600,secondary:100},{color:`blue`,primary:600,secondary:100},{color:`yellow`,primary:500,secondary:100},{color:`purple`,primary:600,secondary:100},{color:`teal`,primary:600,secondary:100},{color:`orange`,primary:600,secondary:100},{color:`cyan`,primary:600,secondary:100},{color:`lime`,primary:500,secondary:100},{color:`pink`,primary:600,secondary:100}],r$2={inherit:`inherit`,current:`currentColor`,transparent:`transparent`,black:`#000`,white:`#fff`,slate:{50:`#f8fafc`,100:`#f1f5f9`,200:`#e2e8f0`,300:`#cbd5e1`,400:`#94a3b8`,500:`#64748b`,600:`#475569`,700:`#334155`,800:`#1e293b`,900:`#0f172a`,950:`#020617`},gray:{50:`#f9fafb`,100:`#f3f4f6`,200:`#e5e7eb`,300:`#d1d5db`,400:`#9ca3af`,500:`#6b7280`,600:`#4b5563`,700:`#374151`,800:`#1f2937`,900:`#111827`,950:`#030712`},zinc:{50:`#fafafa`,100:`#f4f4f5`,200:`#e4e4e7`,300:`#d4d4d8`,400:`#a1a1aa`,500:`#71717a`,600:`#52525b`,700:`#3f3f46`,800:`#27272a`,900:`#18181b`,950:`#09090b`},neutral:{50:`#fafafa`,100:`#f5f5f5`,200:`#e5e5e5`,300:`#d4d4d4`,400:`#a3a3a3`,500:`#737373`,600:`#525252`,700:`#404040`,800:`#262626`,900:`#171717`,950:`#0a0a0a`},stone:{50:`#fafaf9`,100:`#f5f5f4`,200:`#e7e5e4`,300:`#d6d3d1`,400:`#a8a29e`,500:`#78716c`,600:`#57534e`,700:`#44403c`,800:`#292524`,900:`#1c1917`,950:`#0c0a09`},red:{50:`#fef2f2`,100:`#fee2e2`,200:`#fecaca`,300:`#fca5a5`,400:`#f87171`,500:`#ef4444`,600:`#dc2626`,700:`#b91c1c`,800:`#991b1b`,900:`#7f1d1d`,950:`#450a0a`},orange:{50:`#fff7ed`,100:`#ffedd5`,200:`#fed7aa`,300:`#fdba74`,400:`#fb923c`,500:`#f97316`,600:`#ea580c`,700:`#c2410c`,800:`#9a3412`,900:`#7c2d12`,950:`#431407`},amber:{50:`#fffbeb`,100:`#fef3c7`,200:`#fde68a`,300:`#fcd34d`,400:`#fbbf24`,500:`#f59e0b`,600:`#d97706`,700:`#b45309`,800:`#92400e`,900:`#78350f`,950:`#451a03`},yellow:{50:`#fefce8`,100:`#fef9c3`,200:`#fef08a`,300:`#fde047`,400:`#facc15`,500:`#eab308`,600:`#ca8a04`,700:`#a16207`,800:`#854d0e`,900:`#713f12`,950:`#422006`},lime:{50:`#f7fee7`,100:`#ecfccb`,200:`#d9f99d`,300:`#bef264`,400:`#a3e635`,500:`#84cc16`,600:`#65a30d`,700:`#4d7c0f`,800:`#3f6212`,900:`#365314`,950:`#1a2e05`},green:{50:`#f0fdf4`,100:`#dcfce7`,200:`#bbf7d0`,300:`#86efac`,400:`#4ade80`,500:`#22c55e`,600:`#16a34a`,700:`#15803d`,800:`#166534`,900:`#14532d`,950:`#052e16`},emerald:{50:`#ecfdf5`,100:`#d1fae5`,200:`#a7f3d0`,300:`#6ee7b7`,400:`#34d399`,500:`#10b981`,600:`#059669`,700:`#047857`,800:`#065f46`,900:`#064e3b`,950:`#022c22`},teal:{50:`#f0fdfa`,100:`#ccfbf1`,200:`#99f6e4`,300:`#5eead4`,400:`#2dd4bf`,500:`#14b8a6`,600:`#0d9488`,700:`#0f766e`,800:`#115e59`,900:`#134e4a`,950:`#042f2e`},cyan:{50:`#ecfeff`,100:`#cffafe`,200:`#a5f3fc`,300:`#67e8f9`,400:`#22d3ee`,500:`#06b6d4`,600:`#0891b2`,700:`#0e7490`,800:`#155e75`,900:`#164e63`,950:`#083344`},sky:{50:`#f0f9ff`,100:`#e0f2fe`,200:`#bae6fd`,300:`#7dd3fc`,400:`#38bdf8`,500:`#0ea5e9`,600:`#0284c7`,700:`#0369a1`,800:`#075985`,900:`#0c4a6e`,950:`#082f49`},blue:{50:`#eff6ff`,100:`#dbeafe`,200:`#bfdbfe`,300:`#93c5fd`,400:`#60a5fa`,500:`#3b82f6`,600:`#2563eb`,700:`#1d4ed8`,800:`#1e40af`,900:`#1e3a8a`,950:`#172554`},indigo:{50:`#eef2ff`,100:`#e0e7ff`,200:`#c7d2fe`,300:`#a5b4fc`,400:`#818cf8`,500:`#6366f1`,600:`#4f46e5`,700:`#4338ca`,800:`#3730a3`,900:`#312e81`,950:`#1e1b4b`},violet:{50:`#f5f3ff`,100:`#ede9fe`,200:`#ddd6fe`,300:`#c4b5fd`,400:`#a78bfa`,500:`#8b5cf6`,600:`#7c3aed`,700:`#6d28d9`,800:`#5b21b6`,900:`#4c1d95`,950:`#2e1065`},purple:{50:`#faf5ff`,100:`#f3e8ff`,200:`#e9d5ff`,300:`#d8b4fe`,400:`#c084fc`,500:`#a855f7`,600:`#9333ea`,700:`#7e22ce`,800:`#6b21a8`,900:`#581c87`,950:`#3b0764`},fuchsia:{50:`#fdf4ff`,100:`#fae8ff`,200:`#f5d0fe`,300:`#f0abfc`,400:`#e879f9`,500:`#d946ef`,600:`#c026d3`,700:`#a21caf`,800:`#86198f`,900:`#701a75`,950:`#4a044e`},pink:{50:`#fdf2f8`,100:`#fce7f3`,200:`#fbcfe8`,300:`#f9a8d4`,400:`#f472b6`,500:`#ec4899`,600:`#db2777`,700:`#be185d`,800:`#9d174d`,900:`#831843`,950:`#500724`},rose:{50:`#fff1f2`,100:`#ffe4e6`,200:`#fecdd3`,300:`#fda4af`,400:`#fb7185`,500:`#f43f5e`,600:`#e11d48`,700:`#be123c`,800:`#9f1239`,900:`#881337`,950:`#4c0519`}};n$3.reduce((e,{color:t,primary:n,secondary:i})=>({...e,[t]:{primary:r$2[t][n],secondary:r$2[t][i]}}),{});function i$2(e,t,n){let r=n??(typeof window<`u`?window.location.href:void 0),i=r?new URL(e||`/`,r):new URL(e),a=r?new URL(r):null,o=i.pathname.replace(/\/$/,``),s=t.startsWith(`/`)?t:`/${t}`,c=n!==void 0||typeof window<`u`&&window.gradio_config!==void 0,l=a&&i.hostname===a.hostname&&c?a.origin:i.origin;return new URL(`${o}${s}`,l)}var a$3=`__i18n__`,o$4=[`label`,`info`,`placeholder`,`description`,`title`,`value`],s$3=class s extends Error{constructor(e){super(e),this.name=`ShareError`;}};async function c$3(e,t){if(window.__gradio_space__==null)throw new s$3(`Must be on Spaces to share.`);let n,r,i;{let t;if(typeof e==`object`&&e.url)t=e.url;else if(typeof e==`string`)t=e;else throw Error(`Invalid data format for URL type`);let a=await fetch(t);n=await a.blob(),r=a.headers.get(`content-type`)||``,i=a.headers.get(`content-disposition`)||``;}let a=new File([n],i,{type:r}),o=await fetch(`https://huggingface.co/uploads`,{method:`POST`,body:a,headers:{"Content-Type":a.type,"X-Requested-With":`XMLHttpRequest`}});if(!o.ok)throw o.headers.get(`content-type`)?.includes(`application/json`)?new s$3(`Upload failed: ${(await o.json()).error}`):new s$3(`Upload failed.`);return await o.text()}var u$3=e=>{Promise.resolve(e.play()).catch(e=>{e?.name===`AbortError`||e?.name===`NotAllowedError`||console.warn(`play() was rejected:`,e);});},d$4=e=>{let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.round(e)%60,i=`${n<10?`0`:``}${n}`,a=`${r<10?`0`:``}${r}`;return t>0?`${t}:${i}:${a}`:`${n}:${a}`},f$4=`elem_id.elem_classes.visible.interactive.server_fns.server.id.target.theme_mode.version.root.autoscroll.max_file_size.formatter.client.load_component.scale.min_width.theme.padding.loading_status.label.show_label.validation_error.show_progress.api_prefix.container.attached_events.register_component.unregister_component.dispatcher`.split(`.`);function p$4(e){return typeof e==`string`&&e.includes(`__i18n__`)}function m$4(e,t){let n=e.indexOf(a$3);if(n===-1)return e;let r=n+8,i=e.indexOf(`}`,r)+1;if(i===0)return e;try{let a=JSON.parse(e.slice(r,i));if(a?.key){let r=t(a.key),o=r===a.key?a.key:r;return e.slice(0,n)+o+e.slice(i)}}catch{}return e}var h$4=class h{load_component;shared={};props={};i18n=e=>e;i18n_store;_i18n_from_store;translatable_props={};dispatcher;last_update=null;shared_props=f$4;mounted=false;old_value;register_component;unregister_component;set_data_callback;get_data_callback;registered_id=null;last_shared_props;last_props;constructor(t,n){for(let e in t.shared_props)this.shared[e]=t.shared_props[e];for(let e in t.props)e!==`i18n_store`&&(this.props[e]=t.props[e]);if(n)for(let e in n)this.props[e]===void 0&&(this.props[e]=n[e]);this.i18n=this.props.i18n??(e=>e),this.i18n_store=t.props.i18n_store,this._i18n_from_store=this.i18n_store?fromStore(this.i18n_store):void 0;for(let e of o$4)this.shared[e]=this._translate_and_store(`shared`,e,t.shared_props[e]),this.props[e]=this._translate_and_store(`props`,e,t.props[e]);this.load_component=this.shared.load_component,this.register_component=this.shared.register_component||(()=>{}),this.unregister_component=this.shared.unregister_component||(()=>{}),this.dispatcher=this.shared.dispatcher||(()=>{}),this.set_data_callback=this.set_data.bind(this),this.get_data_callback=this.get_data.bind(this),this.register_component(this.shared.id,this.set_data_callback,this.get_data_callback),this.registered_id=this.shared.id,this.last_shared_props=t.shared_props,this.last_props=t.props;}_is_i18n_managed(e,t){let n=this.translatable_props[e];return n?t===n?true:(delete this.translatable_props[e],false):false}_translate_and_store(e,t,n){if(typeof n!=`string`)return n;let r=this.i18n(n);return r!==n&&(this.translatable_props[`${e}.${t}`]=n),r}live_i18n=e=>(this._i18n_from_store?.current,this.i18n(e));dispatch(e,t){this.dispatcher(this.shared.id,e,t);}async get_data(){return snapshot(this.props)}update(e){this.set_data(e);}set_data(e){for(let t in e){let n=e[t],r=p$4(n)?this._translate_and_store(this.shared_props.includes(t)?`shared`:`props`,t,n):n;if(this.shared_props.includes(t)){let e=t;this.shared[e]=r;continue}this.props[t]=r;}}watch_for_change(){}},g$4=e=>typeof e==`number`?e+`px`:e;
+
+var e$2=`host`,t$1=`queue/data`,n$2=`queue/join`,r$1=`upload`,i$1=`login`,a$2=`config`,o$3=`info`,s$2=`runtime`,c$2=`sleeptime`,l$2=`heartbeat`,u$2=`component_server`,d$3=`reset`,f$3=`cancel`,p$3=`app_id`,m$3=`This application is currently busy. Please try again. `,h$3=`Connection errored out. `,g$3=`Could not resolve app config. `,ee=`Could not get space status. `,te=`Could not get API info. `,_$3=`Space metadata could not be loaded. `,v$3=`Invalid URL. A full URL path is required.`,y$3=`Not authorized to access this space. `,b$3=`Invalid credentials. Could not login. `,x$2="Could not access this app (received a 401 response). If it is a private Hugging Face Space, pass a valid Hugging Face token to the `token` option of `Client.connect`. You can generate a token at https://huggingface.co/settings/tokens.",S$2=(e,t)=>`Space "${e}" could not be accessed (received a ${t} response from the Hugging Face API). Check that the Space name is spelled correctly and that the Space exists. If the Space is private, pass a valid Hugging Face token to the \`token\` option of \`Client.connect\`. You can generate a token at https://huggingface.co/settings/tokens.`,re="No API information is available for this app. This can happen when the app's `/info` endpoint cannot be reached, or when the app is running a legacy version of Gradio that is not supported by this client. ",ie=`This app appears to be running a legacy version of Gradio (3.x or earlier) that communicates over WebSockets, which is not supported by this version of @gradio/client. Please upgrade the app to a newer version of Gradio, or connect to it with @gradio/client version 0.x.`,C$2=`File system access is only available in Node.js environments`,ae=`Root URL not found in client config`,oe=`Error uploading file`;async function se(e,t,n){try{return (await(await fetch(`https://huggingface.co/api/spaces/${e}/jwt`,{headers:{Authorization:`Bearer ${t}`,...n?{Cookie:n}:{}}})).json()).token||!1}catch{return false}}function w$2(e){e.hf_token&&!e.token&&(e.token=e.hf_token,console.warn("The `hf_token` option has been renamed to `token`. Support for `hf_token` will be removed in a future version of @gradio/client."));}function T$2(e){let t={};return e.forEach(({api_name:e,id:n})=>{e&&(t[e]=n);}),t}function E$2(e,t,n=false){let r=new URL(t),i=new URL(e,r),a=i.hostname.endsWith(`.colab-user-runtimes.internal`)||i.hostname.endsWith(`.codatalab-user-runtimes.internal`);return n||a?new URL(new URL(e,r).pathname,r).toString().replace(/\/$/,``):i.hostname===r.hostname?(i.protocol=r.protocol,i.host=r.host,i.toString().replace(/\/$/,``)):e}async function ce(e,t=true){let n=this.options.token?{Authorization:`Bearer ${this.options.token}`}:{};if(typeof window<`u`&&window.gradio_config&&location.origin!==`http://localhost:9876`){if(t&&window.gradio_config.current_page&&(e=e.substring(0,e.lastIndexOf(`/`))),window.gradio_config.dev_mode||typeof window<`u`&&window?.BUILD_MODE===`dev`){let t=new URL(M$1(e,a$2));this.deep_link&&t.searchParams.set(`deep_link`,this.deep_link),this.page!==null&&t.searchParams.set(`page`,this.page);let r=await D$1(await this.fetch(t,{headers:n,credentials:this.options.credentials??`same-origin`}),!!this.options.auth);r.root=e||r.root,window.gradio_config={...r,current_page:window.gradio_config.current_page};}let r={...window.gradio_config};return r.root=E$2(r.root,location.href,r.is_colab),r}else if(e){let t=new URL(M$1(e,a$2));this.deep_link&&t.searchParams.set(`deep_link`,this.deep_link),this.page!==null&&t.searchParams.set(`page`,this.page);let r=await D$1(await this.fetch(t,{headers:n,credentials:this.options.credentials??`same-origin`}),!!this.options.auth);return r.root||=e,r}throw Error(g$3)}async function D$1(e,t){if(e?.status===401&&!t){let t=null;try{t=await e.json();}catch{throw Error(x$2)}let n=t?.detail?.auth_message;throw Error(n||`Login credentials are required to access this space.`)}else if(e?.status===401&&t)throw Error(b$3);if(e?.status===200){let t=await e.json();return t.dependencies?.forEach((e,t)=>{e.id===void 0&&(e.id=t);}),t}else if(e?.status===401)throw Error(y$3);throw Error(`${g$3}(received status ${e?.status} when fetching the app config)`)}async function le(){let{http_protocol:e,host:t}=await j$1(this.app_reference,this.options.token);try{if(this.options.auth){let n=await ue(e,t,this.options.auth,this.fetch,this.options.token,this.options.credentials);n&&this.set_cookies(n);}}catch(e){throw Error(e.message)}}async function ue(e,t,n,r,a,o){let s=new FormData;s.append(`username`,n?.[0]),s.append(`password`,n?.[1]);let c={};a&&(c.Authorization=`Bearer ${a}`);let l=await r(`${e}//${t}/${i$1}`,{headers:c,method:`POST`,body:s,credentials:o??`same-origin`});if(l.status===200)return l.headers.get(`set-cookie`);throw l.status===401?Error(b$3):Error(_$3)}function O$1(e){if(e.startsWith(`http`)){let{protocol:t,host:n,pathname:r}=new URL(e);return {ws_protocol:t===`https:`?`wss`:`ws`,http_protocol:t,host:n+(r===`/`?``:r)}}return {ws_protocol:`wss`,http_protocol:`https:`,host:new URL(e).host}}var de=e=>{let t=[];return e.split(/,(?=\s*[^\s=;]+=[^\s=;]+)/).forEach(e=>{let[n,r]=e.split(`;`)[0].split(`=`);n&&r&&t.push(`${n.trim()}=${r.trim()}`);}),t},k$1=/^[a-zA-Z0-9_\-\.]+\/[a-zA-Z0-9_\-\.]+$/,A$1=/.*hf\.space\/{0,1}.*$/;async function j$1(t,n){let r={};n&&(r.Authorization=`Bearer ${n}`);let i=t.trim().replace(/\/$/,``);if(k$1.test(i)){let t;try{t=await fetch(`https://huggingface.co/api/spaces/${i}/${e$2}`,{headers:r});}catch{throw Error(_$3)}if(t.status===401||t.status===404)throw Error(S$2(i,t.status));let n;try{n=(await t.json()).host;}catch{throw Error(_$3)}if(!n)throw Error(_$3);return {space_id:i,...O$1(n)}}if(A$1.test(i)){let{ws_protocol:e,http_protocol:t,host:n}=O$1(i);return {space_id:n.split(`/`)[0].replace(`.hf.space`,``),ws_protocol:e,http_protocol:t,host:n}}return {space_id:false,...O$1(i)}}var M$1=(...e)=>{try{return e.reduce((e,t)=>(e=e.replace(/\/+$/,``),t=t.replace(/^\/+/,``),new URL(t,e+`/`).toString()))}catch{throw Error(v$3)}};function fe(e,t,n){let r={named_endpoints:{},unnamed_endpoints:{}};return Object.keys(e).forEach(i=>{(i===`named_endpoints`||i===`unnamed_endpoints`)&&(r[i]={},Object.entries(e[i]).forEach(([e,a])=>{let o=a?.parameters??[],s=a?.returns??[],c=t.dependencies.find(t=>t.api_name===e||t.api_name===e.replace(`/`,``))?.id||n[e.replace(`/`,``)]||-1,l=c===-1?void 0:t.dependencies.find(e=>e.id==c),u=c===-1?{generator:false,cancel:false}:l?.types;if(l&&Array.isArray(l.inputs)&&l.inputs.length!==o.length){let e=l.inputs.map(e=>t.components.find(t=>t.id===e)?.type);try{e.forEach((e,t)=>{e===`state`&&o.splice(t,0,{component:`state`,example:null,parameter_default:null,parameter_has_default:!0,parameter_name:null,hidden:!0});});}catch(e){console.error(e);}}let d=(e,t,n,r)=>({...e,description:P$1(e?.type,n),type:N$1(e?.type,t,n,r)||``});r[i][e]={parameters:o.map(e=>d(e,e?.component,e?.serializer,`parameter`)),returns:s.map(e=>d(e,e?.component,e?.serializer,`return`)),type:u,...a?.oauth_token?{oauth_token:a.oauth_token}:{}};}));}),r}function N$1(e,t,n,r){if(t===`Api`)return e.type;switch(e?.type){case `string`:return `string`;case `boolean`:return `boolean`;case `number`:return `number`}if(n===`JSONSerializable`||n===`StringSerializable`)return `any`;if(n===`ListStringSerializable`)return `string[]`;if(t===`Image`)return r===`parameter`?`Blob | File | Buffer`:`string`;if(n===`FileSerializable`)return e?.type===`array`?r===`parameter`?`(Blob | File | Buffer)[]`:`{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}[]`:r===`parameter`?`Blob | File | Buffer`:`{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}`;if(n===`GallerySerializable`)return r===`parameter`?`[(Blob | File | Buffer), (string | null)][]`:`[{ name: string; data: string; size?: number; is_file?: boolean; orig_name?: string}, (string | null))][]`}function P$1(e,t){return t===`GallerySerializable`?`array of [file, label] tuples`:t===`ListStringSerializable`?`array of strings`:t===`FileSerializable`?`array of files or single file`:e?.description}function pe(e,t){switch(e.msg){case `send_data`:return {type:`data`};case `send_hash`:return {type:`hash`};case `queue_full`:return {type:`update`,status:{queue:true,message:m$3,stage:`error`,code:e.code,success:e.success}};case `heartbeat`:return {type:`heartbeat`};case `unexpected_error`:return {type:`unexpected_error`,status:{queue:true,message:e.message,session_not_found:e.session_not_found,stage:`error`,success:false}};case `broken_connection`:return {type:`broken_connection`,status:{queue:true,message:e.message,stage:`error`,success:false}};case `estimation`:return {type:`update`,status:{queue:true,stage:t||`pending`,code:e.code,size:e.queue_size,position:e.rank,eta:e.rank_eta,success:e.success}};case `progress`:return {type:`update`,status:{queue:true,stage:`pending`,code:e.code,progress_data:e.progress_data,success:e.success}};case `log`:return {type:`log`,data:e};case `process_generating`:return {type:`generating`,status:{queue:true,message:e.success?null:e.output.error,stage:e.success?`generating`:`error`,code:e.code,progress_data:e.progress_data,eta:e.average_duration,changed_state_ids:e.success?e.output.changed_state_ids:void 0},data:e.success?e.output:null};case `process_streaming`:return {type:`streaming`,status:{queue:true,message:e.output.error,stage:`streaming`,time_limit:e.time_limit,code:e.code,progress_data:e.progress_data,changed_state_ids:e.output.changed_state_ids,eta:e.eta},data:e.output};case `process_completed`:return `error`in e.output?{type:`update`,status:{queue:true,title:e.output.title??`Error`,message:e.output.error??`An error occurred`,visible:e.output.visible,duration:e.output.duration,stage:`error`,code:e.code,success:e.success}}:{type:`complete`,status:{queue:true,message:e.success?void 0:e.output.error,stage:e.success?`complete`:`error`,code:e.code,progress_data:e.progress_data,changed_state_ids:e.success?e.output.changed_state_ids:void 0,used_cache:e.used_cache,cache_duration:e.cache_duration,avg_time:e.avg_time},data:e.success?e.output:null};case `process_starts`:return {type:`update`,status:{queue:true,stage:`pending`,code:e.code,size:e.rank,position:0,success:e.success,eta:e.eta},original_msg:`process_starts`}}return {type:`none`,status:{stage:`error`,queue:true}}}var me=(e=[],t)=>{let n=t?t.parameters:[];if(Array.isArray(e))return t&&n.length>0&&e.length>n.length&&console.warn(`Too many arguments provided for the endpoint.`),e;let r=[],i=Object.keys(e);return n.forEach((t,n)=>{if(e.hasOwnProperty(t.parameter_name))r[n]=e[t.parameter_name];else if(t.parameter_has_default)r[n]=t.parameter_default;else throw Error(`No value provided for required parameter: ${t.parameter_name}`)}),i.forEach(e=>{if(!n.some(t=>t.parameter_name===e))throw Error(`Parameter \`${e}\` is not a valid keyword argument. Please refer to the API for usage.`)}),r.forEach((e,t)=>{if(e===void 0&&!n[t].parameter_has_default)throw Error(`No value provided for required parameter: ${n[t].parameter_name}`)}),r};async function F$1(){if(this.api_info)return this.api_info;let{token:e}=this.options,{config:t}=this,n={};if(e&&(n.Authorization=`Bearer ${e}`),t)try{let e,r;if(typeof window<`u`&&window.gradio_api_info)r=window.gradio_api_info;else {let i=new URL(M$1(t.root,this.api_prefix,o$3));if(this.page!==null&&i.searchParams.set(`page`,this.page),e=await this.fetch(i,{headers:n,credentials:this.options.credentials??`same-origin`}),!e.ok)throw Error(h$3);r=await e.json();}return `api`in r&&(r=r.api),r.named_endpoints[`/predict`]&&!r.unnamed_endpoints[0]&&(r.unnamed_endpoints[0]=r.named_endpoints[`/predict`]),fe(r,t,this.api_map)}catch(e){throw Error(`Could not get API info. `+e.message)}}async function I$1(e,t,n){let i={};this?.options?.token&&(i.Authorization=`Bearer ${this.options.token}`);let a=1e3,o=[],s;for(let c=0;c{u.append(`files`,e);});try{let t=n?`${e}${this.api_prefix}/${r$1}?upload_id=${n}`:`${e}${this.api_prefix}/${r$1}`;s=await this.fetch(t,{method:`POST`,body:u,headers:i,credentials:this.options.credentials??`same-origin`});}catch(e){throw Error(h$3+e.message)}if(!s.ok){let e=await s.text();return {error:`HTTP ${s.status}: ${e}`}}let d=await s.json();d&&o.push(...d);}return {files:o}}var L$1={si:{radix:1e3,unit:[`b`,`kb`,`Mb`,`Gb`,`Tb`,`Pb`,`Eb`,`Zb`,`Yb`]},iec:{radix:1024,unit:[`b`,`Kib`,`Mib`,`Gib`,`Tib`,`Pib`,`Eib`,`Zib`,`Yib`]},jedec:{radix:1024,unit:[`b`,`Kb`,`Mb`,`Gb`,`Tb`,`Pb`,`Eb`,`Zb`,`Yb`]}};function R$1(e,t=1,n=`jedec`){e=Math.abs(e);let{radix:r,unit:i}=L$1[n]||L$1.jedec,a=0;for(;e>=r;)e/=r,++a;return `${e.toFixed(t)} ${i[a]}`}async function he(e,t,n,r){let i=(Array.isArray(e)?e:[e]).map(e=>e.blob),a=i.filter(e=>e.size>(r??1/0));if(a.length)throw Error(`File(s) exceed the maximum allowed size of ${R$1(r||1/0)}: ${a.map(e=>`"${e.name}"`).join(`, `)}`);return await Promise.all(await this.upload_files(t,i,n).then(async n=>{if(n.error)throw Error(n.error);return n.files?n.files.map((n,r)=>{let i=n.split(`/`).map(e=>encodeURIComponent(e)).join(`/`);return new B$1({...e[r],path:n,url:`${t}${this.api_prefix}/file=${i}`})}):[]}))}async function z$1(e,t){return e.map(e=>new B$1({path:e.name,orig_name:e.name,blob:e,size:e.size,mime_type:e.type,is_stream:t}))}var B$1=class B{path;url;orig_name;size;blob;is_stream;mime_type;alt_text;b64;meta={_type:`gradio.FileData`};constructor({path:e,url:t,orig_name:n,size:r,blob:i,is_stream:a,mime_type:o,alt_text:s,b64:c}){this.path=e,this.url=t,this.orig_name=n,this.size=r,this.blob=t?void 0:i,this.is_stream=a,this.mime_type=o,this.alt_text=s,this.b64=c;}},V$1=class V{type;command;meta;fileData;constructor(e,t){this.type=`command`,this.command=e,this.meta=t;}};typeof process<`u`&&process.versions&&process.versions.node;function ge(e,t,n){for(;n.length>1;){let t=n.shift();if(typeof t==`string`||typeof t==`number`)e=e[t];else throw Error(`Invalid key type`)}let r=n.shift();if(typeof r==`string`||typeof r==`number`)e[r]=t;else throw Error(`Invalid key type`)}async function H$1(e,t=void 0,n=[],r=false,i=void 0){if(Array.isArray(e)){let a=[];return await Promise.all(e.map(async(o,s)=>{let c=n.slice();c.push(String(s));let l=await H$1(e[s],r?i?.parameters[s]?.component||void 0:t,c,false,i);a=a.concat(l);})),a}else if(globalThis.Buffer&&e instanceof globalThis.Buffer||e instanceof Blob)return [{path:n,blob:e instanceof Blob?e:new Blob([e]),type:t}];else if(typeof e==`object`&&e){let t=[];for(let r of Object.keys(e)){let a=[...n,r],o=e[r];t=t.concat(await H$1(o,void 0,a,false,i));}return t}return []}function _e(e,t){let n=t?.dependencies?.find(t=>t.id==e)?.queue;return n==null?!t.enable_queue:!n}function ve(e,t){return new Promise((n,r)=>{let i=new MessageChannel;i.port1.onmessage=(({data:e})=>{i.port1.close(),n(e);}),window.parent.postMessage(e,t,[i.port2]);})}function U$1(e,t,n,r,i=false){if(r===`input`&&!i)throw Error(`Invalid code path. Cannot skip state inputs for input.`);if(r===`output`&&i)return e;let a=[],o=0,s=r===`input`?t.inputs:t.outputs;for(let t=0;te.id===r)?.type===`state`){if(i)if(e.length===s.length){let t=e[o];a.push(t),o++;}else a.push(null);else {o++;continue}continue}else {let t=e[o];a.push(t),o++;}}return a}var ye=[`/file=`,`/file/`,`/stream/`,`/proxy=`];function be(e,t,n,r){if(!r||typeof e!=`object`||!e)return;let i=r,a=new URL(t),o=a.pathname.replace(/\/+$/,``),s=n?`/${n.replace(/^\/+|\/+$/g,``)}`:``,c=new Set([`${o}${s}`,s]);s||(c.add(`${o}/gradio_api`),c.add(`/gradio_api`));function l(e){if(typeof e!=`object`||!e)return;let t=e;if(t.meta?._type===`gradio.FileData`&&typeof t.url==`string`){let e=new URL(t.url,`${a.toString().replace(/\/$/,``)}/`),n=[...c].some(t=>ye.some(n=>e.pathname.startsWith(`${t}${n}`)));(e.protocol===`http:`||e.protocol===`https:`)&&e.origin===a.origin&&n&&(e.searchParams.set(`__sign`,i),t.url=e.toString());}for(let e of Object.values(t))l(e);}l(e);}function W$1(e,t){for(let n of e.components||[])be(n.props?.value,e.root,e.api_prefix||``,t);}async function xe(e,t,n){let r=this;await G$1(r,t);let i=await H$1(t,void 0,[],true,n);return (await Promise.all(i.map(async({path:t,blob:n,type:i})=>{if(!n)return {path:t,type:i};let a=await r.upload_files(e,[n]);return {path:t,file_url:a.files&&a.files[0],type:i,name:typeof File<`u`&&n instanceof File?n?.name:void 0}}))).forEach(({path:e,file_url:n,type:r,name:i})=>{r===`Gallery`?ge(t,n,e):n&&ge(t,new B$1({path:n,orig_name:i}),e);}),t}async function G$1(e,t){if(!(e.config?.root||e.config?.root_url))throw Error(ae);await K$1(e,t);}async function K$1(e,t,n=[]){for(let r in t)t[r]instanceof V$1?await q$1(e,t,r):typeof t[r]==`object`&&t[r]!==null&&await K$1(e,t[r],[...n,r]);}async function q$1(e,t,n){let r=t[n],i=e.config?.root||e.config?.root_url;if(!i)throw Error(ae);try{let a,o;if(typeof process<`u`&&process.versions&&process.versions.node){let e=await import('fs/promises');o=(await import('path')).resolve(process.cwd(),r.meta.path),a=await e.readFile(o);}else throw Error(C$2);let s=new Blob([a],{type:`application/octet-stream`}),c=await e.upload_files(i,[s]),l=c.files&&c.files[0];l&&(t[n]=new B$1({path:l,orig_name:r.meta.name||``}));}catch(e){console.error(oe,e);}}async function Se(e,t,n){let r={"Content-Type":`application/json`};this.options.token&&(r.Authorization=`Bearer ${this.options.token}`);try{var i=await this.fetch(e,{method:`POST`,body:JSON.stringify(t),headers:{...r,...n},credentials:this.options.credentials??`same-origin`});}catch{return [{error:h$3},500]}let a,o;try{a=await i.json(),o=i.status;}catch(e){a={error:`Could not parse server response: ${e}`},o=500;}return [a,o]}async function Ce(e,t={}){let n=false,r=false;if(!this.config)throw Error(`Could not resolve app config`);if(typeof e==`number`)this.config.dependencies.find(t=>t.id==e);else {let t=e.replace(/^\//,``);this.config.dependencies.find(e=>e.id==this.api_map[t]);}let i=this.submit(e,t,null,null,true),a;for await(let e of i){if(e.type===`data`&&(n=true,a=e,r))return a;if(e.type===`status`){if(e.stage===`error`){let{message:t,...n}=e,r=Error((typeof t==`string`?t:t&&JSON.stringify(t))||`An unknown error occurred while making a prediction.`);throw Object.assign(r,n),r}if(e.stage===`complete`&&(r=true,n))return a}}return a}async function J$1(e,t,n){let r=t===`subdomain`?`https://huggingface.co/api/spaces/by-subdomain/${e}`:`https://huggingface.co/api/spaces/${e}`,i,a;try{if(i=await fetch(r),a=i.status,a!==200)throw Error();i=await i.json();}catch{n({status:`error`,load_status:`error`,message:ee,detail:`NOT_FOUND`});return}if(!i||a!==200)return;let{runtime:{stage:o},id:s}=i;switch(o){case `STOPPED`:case `SLEEPING`:n({status:`sleeping`,load_status:`pending`,message:`Space is asleep. Waking it up...`,detail:o}),setTimeout(()=>{J$1(e,t,n);},1e3);break;case `PAUSED`:n({status:`paused`,load_status:`error`,message:`This space has been paused by the author. If you would like to try this demo, consider duplicating the space.`,detail:o,discussions_enabled:await Ee(s)});break;case `RUNNING`:case `RUNNING_BUILDING`:n({status:`running`,load_status:`complete`,message:`Space is running.`,detail:o});break;case `BUILDING`:n({status:`building`,load_status:`pending`,message:`Space is building...`,detail:o}),setTimeout(()=>{J$1(e,t,n);},1e3);break;case `APP_STARTING`:n({status:`starting`,load_status:`pending`,message:`Space is starting...`,detail:o}),setTimeout(()=>{J$1(e,t,n);},1e3);break;default:n({status:`space_error`,load_status:`error`,message:`This space is experiencing an issue.`,detail:o,discussions_enabled:await Ee(s)});break}}var we=async(e,t)=>{let n=0;return new Promise(r=>{J$1(e,k$1.test(e)?`space_name`:`subdomain`,i=>{t(i),i.status===`running`||i.status===`error`||i.status===`paused`||i.status===`space_error`?r():(i.status===`sleeping`||i.status===`building`)&&(n<12?(n++,setTimeout(()=>{we(e,t).then(r);},5e3)):r());});})},Te=/^(?=[^]*\b[dD]iscussions{0,1}\b)(?=[^]*\b[dD]isabled\b)[^]*$/;async function Ee(e){try{let t=await fetch(`https://huggingface.co/api/spaces/${e}/discussions`,{method:`HEAD`}),n=t.headers.get(`x-error-message`);return !(!t.ok||n&&Te.test(n))}catch{return false}}async function De(e,t){let n={};t&&(n.Authorization=`Bearer ${t}`);try{let t=await fetch(`https://huggingface.co/api/spaces/${e}/${s$2}`,{headers:n});if(t.status!==200)throw Error(`Space hardware could not be obtained.`);let{hardware:r}=await t.json();return r.current}catch(e){throw Error(e.message)}}async function Oe(e,t,n){let r={};n&&(r.Authorization=`Bearer ${n}`);let i={seconds:t};try{let t=await fetch(`https://huggingface.co/api/spaces/${e}/${c$2}`,{method:`POST`,headers:{"Content-Type":`application/json`,...r},body:JSON.stringify(i)});if(t.status!==200)throw Error(`Could not set sleep timeout on duplicated Space. Please visit *ADD HF LINK TO SETTINGS* to set a timeout manually to reduce billing charges.`);return await t.json()}catch(e){throw Error(e.message)}}var ke=[`cpu-basic`,`cpu-upgrade`,`cpu-xl`,`t4-small`,`t4-medium`,`a10g-small`,`a10g-large`,`a10g-largex2`,`a10g-largex4`,`a100-large`,`zero-a10g`,`h100`,`h100x8`];async function Ae(e,t){w$2(t);let{token:n,private:r,hardware:i,timeout:a,auth:o}=t;if(i&&!ke.includes(i))throw Error(`Invalid hardware type provided. Valid types are: ${ke.map(e=>`"${e}"`).join(`,`)}.`);let{http_protocol:s,host:c}=await j$1(e,n),l=null;if(o){let e=await ue(s,c,o,fetch,void 0,t.credentials);e&&(l=de(e));}let u={Authorization:`Bearer ${n}`,"Content-Type":`application/json`,...l?{Cookie:l.join(`; `)}:{}},d=(await(await fetch(`https://huggingface.co/api/whoami-v2`,{headers:u})).json()).name,f=e.split(`/`)[1],p={repository:`${d}/${f}`};r&&(p.private=true);let m;try{i||(m=await De(e,n));}catch(e){throw Error(_$3+e.message)}p.hardware=i||m||`cpu-basic`;try{let r=await fetch(`https://huggingface.co/api/spaces/${e}/duplicate`,{method:`POST`,headers:u,body:JSON.stringify(p)});if(r.status===409)try{return await Pt.connect(`${d}/${f}`,t)}catch(e){throw console.error(`Failed to connect Client instance:`,e),e}else if(r.status!==200)throw Error(r.statusText);let i=await r.json();return await Oe(`${d}/${f}`,a||300,n),await Pt.connect(je(i.url),t)}catch(e){throw Error(e)}}function je(e){let t=e.match(/https:\/\/huggingface.co\/spaces\/([^/]+\/[^/]+)/);if(t)return t[1]}var Me=`supports-zerogpu-headers`,Ne=false;function Pe(){return typeof window<`u`&&typeof document<`u`&&typeof window.addEventListener==`function`}function Fe(e){return e.includes(`.dev.`)?`https://moon-${e.split(`.`)[1]}.dev.spaces.huggingface.tech`:e.endsWith(`.hf.space`)?`https://huggingface.co`:null}function Ie(){if(!Pe()||Ne)return;window.addEventListener(`message`,e=>{e.data===Me&&(window.supports_zerogpu_headers=true);}),Ne=true;let e=Fe(window.location.hostname);e&&window.parent!==window&&window.parent.postMessage(Me,e);}var Le=class extends TransformStream{#e=``;constructor(e={allowCR:false}){super({transform:(t,n)=>{for(t=this.#e+t;;){let r=t.indexOf(`
+`),i=e.allowCR?t.indexOf(`\r`):-1;if(i!==-1&&i!==t.length-1&&(r===-1||r-1>i)){n.enqueue(t.slice(0,i)),t=t.slice(i+1);continue}if(r===-1)break;let a=t[r-1]===`\r`?r-1:r;n.enqueue(t.slice(0,a)),t=t.slice(r+1);}this.#e=t;},flush:t=>{if(this.#e===``)return;let n=e.allowCR&&this.#e.endsWith(`\r`)?this.#e.slice(0,-1):this.#e;t.enqueue(n);}});}};function Re(e){let t=new TextDecoderStream,n=new Le({allowCR:true});return e.pipeThrough(t).pipeThrough(n)}function ze(e){let t=/[:]\s*/.exec(e),n=t&&t.index;if(n)return [e.substring(0,n),e.substring(n+t[0].length)]}function Be(e,t,n){e.get(t)||e.set(t,n);}async function*Ve(e,t){if(!e.body)return;let n=Re(e.body),r,i=n.getReader(),a;for(;;){if(t&&t.aborted)return i.cancel();if(r=await i.read(),r.done)return;if(!r.value){a&&(yield a),a=void 0;continue}let[e,n]=ze(r.value)||[];e===`data`?(a||={},a[e]=a[e]?a[e]+`
+`+n:n):e===`event`?(a||={},a[e]=n):e===`id`?(a||={},a[e]=String(+n)===n?+n:n):e===`retry`&&(a||={},a[e]=+n||void 0);}}async function He(e,t){let n=new Request(e,t);Be(n.headers,`Accept`,`text/event-stream`),Be(n.headers,`Content-Type`,`application/json`);let r=await fetch(n);if(!r.ok)throw r;return Ve(r,n.signal)}async function Ue(){let{event_callbacks:e,unclosed_events:n,pending_stream_messages:r,stream_status:i,config:a,jwt:o}=this,s=this;if(!a)throw Error(`Could not resolve app config`);i.open=true;let c=null,l=new URLSearchParams({session_hash:this.session_hash}).toString(),u=new URL(`${a.root}${this.api_prefix}/${t$1}?${l}`);if(o&&u.searchParams.set(`__sign`,o),c=this.stream(u),!c){console.warn(`Cannot connect to SSE endpoint: `+u.toString());return}c.onmessage=async function(t){let o=JSON.parse(t.data);if(o.msg===`close_stream`){We(i,s.abort_controller);return}let c=o.event_id;if(!c)await Promise.all(Object.keys(e).map(t=>e[t](o)));else if(e[c]&&a){o.msg===`process_completed`&&[`sse`,`sse_v1`,`sse_v2`,`sse_v2.1`,`sse_v3`].includes(a.protocol)&&n.delete(c);let t=e[c];typeof window<`u`&&typeof document<`u`&&document.visibilityState!==`hidden`?setTimeout(t,0,o):t(o);}else r[c]||(r[c]=[]),r[c].push(o);},c.onerror=async function(t){console.error(t),await Promise.all(Object.keys(e).map(t=>e[t]({msg:`broken_connection`,message:h$3})));};}function We(e,t){e&&(e.open=false,t?.abort());}function Ge(e,t,n){e[t]?n.data.forEach((r,i)=>{let a=Ke(i{e[t][r]=n;}));}function Ke(e,t){return t.forEach(([t,n,r])=>{e=qe(e,n,t,r);}),e}function qe(e,t,n,r){if(t.length===0){if(n===`replace`)return r;if(n===`append`)return e+r;throw Error(`Unsupported action: ${n}`)}let i=e;for(let e=0;e{console.warn(`Method not implemented.`);},onerror:null,onmessage:null,onopen:null,readyState:0,url:e.toString(),withCredentials:false,CONNECTING:0,OPEN:1,CLOSED:2,addEventListener:()=>{throw Error(`Method not implemented.`)},dispatchEvent:()=>{throw Error(`Method not implemented.`)},removeEventListener:()=>{throw Error(`Method not implemented.`)}};return He(e,t).then(async e=>{n.readyState=n.OPEN;try{for await(let t of e)n.onmessage&&n.onmessage(t);n.readyState=n.CLOSED;}catch(e){n.onerror&&n.onerror(e),n.readyState=n.CLOSED;}}).catch(e=>{console.error(e),n.onerror&&n.onerror(e),n.readyState=n.CLOSED;}),n}var Ye=`gradio:run-history:`,Y$1=`${Ye}v2:`,Xe=`${Ye}replay:v2:`,Ze=`${Ye}destination:v1:`,Qe=100,$e=8;function X(e,t){try{return e()}catch(e){return console.warn(`Could not update the run history.`,e),t}}function et(e,t=`/gradio_api`){return `${e.replace(/\/+$/,``)}${t}/runs`}function Z(e){if(typeof window>`u`)return null;let t=e?.app_id;if(t==null||t===``)return null;try{return window.localStorage?`${Y$1}${t}${e?.username?`:user:${encodeURIComponent(e.username)}`:``}`:null}catch{return null}}function tt(e){let t=Z(e);return t?t.replace(Y$1,Xe):null}function nt(e){let t=Z(e);return t?t.replace(Y$1,Ze):null}function rt(e){let t=nt(e);if(!t)return {type:`browser`};try{let e=JSON.parse(window.localStorage.getItem(t)||`null`);return typeof e?.bucket_id==`string`?e.type===`bucket`?{type:`bucket`,bucket_id:e.bucket_id}:{type:`browser`,bucket_id:e.bucket_id}:{type:`browser`}}catch{return {type:`browser`}}}function it(e){try{let t=JSON.parse(window.localStorage.getItem(e)||`[]`);return Array.isArray(t)&&t.length&&Date.parse(t[0]?.started_at)||0}catch{return 0}}function at(e){let t=Object.keys(window.localStorage).filter(e=>e.startsWith(Ye)),n=[...t.filter(e=>!e.startsWith(Y$1)&&!e.startsWith(Xe)&&!e.startsWith(Ze)),...t.filter(t=>t.startsWith(Y$1)&&t!==e).sort((e,t)=>it(t)-it(e)).slice($e-1)];for(let e of n)try{window.localStorage.removeItem(e),window.sessionStorage.removeItem(e.replace(Y$1,Xe));}catch{}}function ot(){return typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function Q(e){let t=new WeakSet;try{return JSON.parse(JSON.stringify(e,(e,n)=>{if(typeof n==`bigint`)return n.toString();if(typeof n==`object`&&n){if(t.has(n))return `[Circular]`;t.add(n);}return n}))}catch{return `[Unserializable value]`}}function st(e){let t=Z(e);if(!t)return [];try{let e=JSON.parse(window.localStorage.getItem(t)||`[]`);return Array.isArray(e)?e:[]}catch{return []}}function ct(e,t){let n=Z(e);if(!n)return;let r=t.slice(0,Qe),i=false;for(;r.length>0;)try{window.localStorage.setItem(n,JSON.stringify(r));return}catch{if(!i){i=true,at(n);continue}r=r.slice(0,-1);}try{window.localStorage.removeItem(n);}catch{}}function lt(e){let t=Z(e);if(t){try{window.localStorage.removeItem(t);}catch{}dt();}}var ut=`gradio:run-history-change`;function dt(){if(!(typeof window>`u`))try{window.dispatchEvent(new Event(ut));}catch{}}function pt(e){let t=tt(e);if(!t)return null;try{let e=window.sessionStorage.getItem(t);return window.sessionStorage.removeItem(t),e?JSON.parse(e):null}catch{return null}}function mt(e,t){let n=e.dependencies.find(e=>e.id===t.fn_index||typeof e.api_name==`string`&&`/${e.api_name.replace(/^\//,``)}`===t.api_name);if(!n)return false;let r=Array.isArray(t.inputs)?t.inputs:Object.values(t.inputs??{}),i=Array.isArray(t.outputs)?t.outputs:t.outputs===null||t.outputs===void 0?[]:[t.outputs],a=(t,n)=>{for(let[r,i]of t.entries()){let t=e.components.find(e=>e.id===i);!t||r>=n.length||t.type!==`state`&&(t.props.value=n[r]);}};return a(n.inputs,r),a(n.outputs,i),true}function ht(e){let t=pt(e);return t?mt(e,t):false}function gt(e){if(rt(e).type===`bucket`)return null;let t=Z(e);if(!t)return null;at(t);let n={id:ot(),endpoint:e.endpoint,api_name:e.api_name,fn_index:e.fn_index,page:`${window.location.pathname}${window.location.search}`,inputs:Q(e.inputs),outputs:null,...e.input_components?{input_components:Q(e.input_components)}:{},...e.output_components?{output_components:Q(e.output_components)}:{},status:`running`,started_at:new Date().toISOString()};return ct(e,[n,...st(e)]),dt(),n.id}function _t(e,t,n){if(!t)return;let r=st(e),i=r.find(e=>e.id===t);i&&(i.inputs=Q(n),ct(e,r));}function vt(e,t,n){if(!t)return;let r=st(e),i=r.find(e=>e.id===t);if(!i)return;let a=false;if(n.type===`data`)i.outputs=Q(n.data),$.set(t,i.outputs);else if(n.type===`status`&&n.original_msg===`process_starts`)xt(i,n.time);else if(n.type===`status`&&(n.stage===`generating`||n.stage===`streaming`))i.streamed=true;else if(n.type===`status`&&n.stage===`complete`)i.status=`completed`,St(i,n),a=true;else if(n.type===`status`&&n.stage===`error`)i.status=`failed`,i.error=typeof n.message==`string`?n.message:JSON.stringify(n.message||`Unknown error`),St(i,n),a=true;else return;if(a)$.has(t)&&(i.outputs=$.get(t)),$.delete(t),bt.delete(t);else if(i.streamed){if(Date.now()-(bt.get(t)??0)=0?t.cache_duration*1e3:null)??Math.max(0,n.getTime()-Date.parse(e.process_started_at||e.started_at));}function wt(e){return X(()=>rt(e),{type:`browser`})}function Tt(e){X(()=>lt(e),void 0);}function Et(e){return X(()=>ht(e),false)}function Dt(e){return X(()=>gt(e),null)}function Ot(e,t,n){X(()=>_t(e,t,n),void 0);}function kt(e,t,n){X(()=>vt(e,t,n),void 0);}function jt(e,r={},i,a,o,s){try{let{token:c}=this.options,{fetch:l,app_reference:u,config:p,session_hash:g,api_info:ee,api_map:te,stream_status:_,pending_stream_messages:v,pending_diff_streams:y,event_callbacks:b,unclosed_events:ne,post_data:x,options:S,api_prefix:C}=this,ae=s||{"x-gradio-user":`api`},oe=this;if(!ee)throw Error(re);if(!p)throw Error(`Could not resolve app config`);let se=p.root,{fn_index:w,endpoint_info:T,dependency:E}=Nt(ee,e,te,p),ce=me(r,T),D=p.protocol??`ws`;if(D===`ws`)throw Error(ie);let le=typeof E.api_name==`string`?`/${E.api_name}`:e,ue=typeof E.api_name==`string`?`/${E.api_name}`:`Function ${w}`,O=e=>{let t=p.components.find(t=>t.id===e);return t?{type:t.type,component_class_id:t.component_class_id,props:t.props}:null},de=E.api_visibility===`public`,k=p.run_history!==!1&&this.options.record_history!==!1,A={app_id:p.app_id,username:p.username},j=wt(A),M={...ae,...k&&j.type===`bucket`?{"x-gradio-history-bucket":j.bucket_id}:{}},fe=!k||!de?null:Dt({...A,endpoint:le,api_name:ue,fn_index:w,inputs:U$1(ce,E,p.components,`input`,!0),input_components:E.inputs.map(O),output_components:E.outputs.map(O)}),N,P=``,F=typeof e==`number`?`/predict`:e,I,L=null,R=!1,he={},z=typeof window<`u`&&typeof document<`u`?new URLSearchParams(window.location.search).toString():``,B=S?.events?.reduce((e,t)=>(e[t]=!0,e),{})||{};function V(e){kt(A,fe,e),(e.type===`data`||e.type===`render`)&&be(e.data,se,C,oe.jwt),(o||B[e.type])&&J(e);}async function ge(){let e={},t={};e={event_id:L},t={event_id:L,session_hash:g,fn_index:w};try{if(!p)throw Error(`Could not resolve app config`);`event_id`in t&&await l(`${p.root}${C}/${f$3}`,{headers:{"Content-Type":`application/json`},method:`POST`,body:JSON.stringify(t)}),await l(`${p.root}${C}/${d$3}`,{headers:{"Content-Type":`application/json`},method:`POST`,body:JSON.stringify(e)});}catch{console.warn("The `/reset` endpoint could not be called. Subsequent endpoint results may be unreliable.");}}let H=async e=>{await this._resolve_heartbeat(e);};async function ye(e){if(!p)return;let t=e.render_id;p.components=[...p.components.filter(e=>e.props.rendered_in!==t),...e.components],p.dependencies=[...p.dependencies.filter(e=>e.rendered_in!==t),...e.dependencies];let n=p.components.some(e=>e.type===`state`),r=p.dependencies.some(e=>e.targets.some(e=>e[1]===`unload`));p.connect_heartbeat=n||r,await H(p),V({type:`render`,data:e,endpoint:F,fn_index:w});}let W=this.handle_blob(p.root,ce,T).then(async e=>{let r=U$1(e,E,p.components,`input`,!0);if(Ot(A,fe,r||[]),I={data:r||[],event_data:i,fn_index:w,trigger_id:a,...S.oauth_token&&T?.oauth_token?{oauth_token:S.oauth_token}:{}},_e(w,p))V({type:`status`,endpoint:F,stage:`pending`,queue:!1,fn_index:w,time:new Date}),x(`${p.root}${C}/run${F.startsWith(`/`)?F:`/${F}`}${z?`?`+z:``}`,{...I,session_hash:g},M).then(async([e,t])=>{let n=e.data;if(t==200)V({type:`data`,endpoint:F,fn_index:w,data:U$1(n,E,p.components,`output`,S.with_null_state),time:new Date,event_data:i,trigger_id:a}),e.render_config&&await ye(e.render_config),V({type:`status`,endpoint:F,fn_index:w,stage:`complete`,eta:e.average_duration,queue:!1,time:new Date});else {let t=e?.error===h$3;V({type:`status`,stage:`error`,endpoint:F,fn_index:w,message:e.error,broken:t,queue:!1,time:new Date});}}).catch(e=>{V({type:`status`,stage:`error`,message:e.message,endpoint:F,fn_index:w,queue:!1,time:new Date});});else if(D==`sse`){V({type:`status`,stage:`pending`,queue:!0,endpoint:F,fn_index:w,time:new Date});var o=new URLSearchParams({fn_index:w.toString(),session_hash:g}).toString();let e=new URL(`${p.root}${C}/${t$1}?${z?z+`&`:``}${o}`);if(this.jwt&&e.searchParams.set(`__sign`,this.jwt),N=this.stream(e),!N)return Promise.reject(Error(`Cannot connect to SSE endpoint: `+e.toString()));N.onmessage=async function(e){let{type:t,status:n,data:r}=pe(JSON.parse(e.data),he[w]);if(t===`update`&&n&&!R)V({type:`status`,endpoint:F,fn_index:w,time:new Date,...n}),n.stage===`error`&&(N?.close(),q());else if(t===`data`){let[e,t]=await x(`${p.root}${C}/queue/data`,{...I,session_hash:g,event_id:L},M);t!==200&&(V({type:`status`,stage:`error`,message:h$3,queue:!0,endpoint:F,fn_index:w,time:new Date}),N?.close(),q());}else t===`complete`?R=n:t===`log`?V({type:`log`,title:r.title,log:r.log,level:r.level,endpoint:F,duration:r.duration,visible:r.visible,fn_index:w}):(t===`generating`||t===`streaming`)&&V({type:`status`,time:new Date,...n,stage:n?.stage,queue:!0,endpoint:F,fn_index:w});r&&(V({type:`data`,time:new Date,data:U$1(r.data,E,p.components,`output`,S.with_null_state),endpoint:F,fn_index:w,event_data:i,trigger_id:a}),R&&(V({type:`status`,time:new Date,...R,stage:n?.stage,queue:!0,endpoint:F,fn_index:w}),N?.close(),q()));};}else if(D==`sse_v1`||D==`sse_v2`||D==`sse_v2.1`||D==`sse_v3`){V({type:`status`,stage:`pending`,queue:!0,endpoint:F,fn_index:w,time:new Date});let e=``;typeof window<`u`&&typeof document<`u`&&(e=window?.location?.hostname);let t=Fe(e);return (typeof window<`u`&&typeof document<`u`&&window.parent!=window&&t&&window.supports_zerogpu_headers?ve(`zerogpu-headers`,t):Promise.resolve(null)).then(e=>{let t={...M,...e||{}};return x(`${p.root}${C}/${n$2}?${z}`,{...I,session_hash:g},t)}).then(async([e,t])=>{if(e.event_id&&(P=e.event_id),t===503)V({type:`status`,stage:`error`,message:m$3,queue:!0,endpoint:F,fn_index:w,time:new Date,visible:!0}),q();else if(t===422)V({type:`status`,stage:`error`,message:e.detail,queue:!0,endpoint:F,fn_index:w,code:`validation_error`,time:new Date,visible:!0}),q();else if(t!==200){let t=e?.error===h$3;V({type:`status`,stage:`error`,broken:t,message:t?h$3:e.detail||e.error,queue:!0,endpoint:F,fn_index:w,time:new Date,visible:!0}),q();}else {L=e.event_id,P=L;let t=async function(e){try{let{type:t,status:n,data:r,original_msg:i}=pe(e,he[w]);if(t==`heartbeat`)return;if(t===`update`&&n&&!R)V({type:`status`,endpoint:F,fn_index:w,time:new Date,original_msg:i,...n});else if(t===`complete`)R=n;else if(t==`unexpected_error`||t==`broken_connection`){console.error(`Unexpected error`,n?.message);let e=t===`broken_connection`;V({type:`status`,stage:`error`,message:n?.message||`An Unexpected Error Occurred!`,queue:!0,endpoint:F,broken:e,session_not_found:n?.session_not_found,fn_index:w,time:new Date});}else if(t===`log`){V({type:`log`,title:r.title,log:r.log,level:r.level,endpoint:F,duration:r.duration,visible:r.visible,fn_index:w});return}else (t===`generating`||t===`streaming`)&&(V({type:`status`,time:new Date,...n,stage:n?.stage,queue:!0,endpoint:F,fn_index:w}),r&&E.connection!==`stream`&&[`sse_v2`,`sse_v2.1`,`sse_v3`].includes(D)&&Ge(y,L,r));r&&(V({type:`data`,time:new Date,data:U$1(r.data,E,p.components,`output`,S.with_null_state),endpoint:F,fn_index:w}),r.render_config&&await ye(r.render_config),R&&(V({type:`status`,time:new Date,...R,stage:n?.stage,queue:!0,endpoint:F,fn_index:w}),q())),(n?.stage===`complete`||n?.stage===`error`)&&(b[L]&&delete b[L],L in y&&delete y[L],q());}catch(e){console.error(`Unexpected client exception`,e),V({type:`status`,stage:`error`,message:`An Unexpected Error Occurred!`,queue:!0,endpoint:F,fn_index:w,time:new Date}),[`sse_v2`,`sse_v2.1`,`sse_v3`].includes(D)&&(We(_,oe.abort_controller),_.open=!1,q());}};L in v&&(v[L].forEach(e=>t(e)),delete v[L]),b[L]=t,ne.add(L),_.open||await this.open_stream();}})}});W.catch(e=>{V({type:`status`,stage:`error`,message:e instanceof Error?e.message:String(e),queue:!_e(w,p),endpoint:F,fn_index:w,time:new Date}),q();});let xe=!1,G=[],K=[];function q(){for(xe=!0;K.length>0;)K.shift()({value:void 0,done:!0});}function Se(e){K.length>0?K.shift()(e):G.push(e);}function Ce(e){Se(Mt(e)),q();}function J(e){Se({value:e,done:!1});}function we(){return G.length>0?Promise.resolve(G.shift()):xe?Promise.resolve({value:void 0,done:!0}):new Promise(e=>K.push(e))}let Te={[Symbol.asyncIterator]:()=>Te,next:we,throw:async e=>(Ce(e),we()),return:async()=>(q(),{value:void 0,done:!0}),cancel:ge,send_chunk:e=>{this.post_data(`${p.root}${C}/stream/${P}`,{...e,session_hash:this.session_hash});},close_stream:()=>{this.post_data(`${p.root}${C}/stream/${P}/close`,{}),q();},event_id:()=>P,wait_for_id:async()=>(await W,L)};return Te}catch(e){throw console.error(`Submit function encountered an error:`,e),e}}function Mt(e){return {then:(t,n)=>n(e)}}function Nt(e,t,n,r){let i,a,o;if(typeof t==`number`)i=t,a=e.unnamed_endpoints[i],o=r.dependencies.find(e=>e.id==t);else {let s=t.replace(/^\//,``);i=n[s],a=e.named_endpoints[t.trim()]??e.named_endpoints[`/${s}`],o=r.dependencies.find(e=>e.id==n[s]);}if(typeof i!=`number`||!o){let e=r.dependencies.filter(e=>e.api_name).map(e=>`"/${e.api_name}"`).join(`, `);throw Error(`No endpoint matching ${JSON.stringify(t)} was found. `+(e?`Valid named endpoints are: ${e}. `:`This app exposes no named endpoints. `)+`An fn_index (number) of an existing dependency can also be used.`)}return {fn_index:i,endpoint_info:a,dependency:o}}var Pt=class{app_reference;options;deep_link=null;page=null;config;api_prefix=``;api_info;api_map={};session_hash=Math.random().toString(36).substring(2);jwt=false;last_status={};cookies=null;stream_status={open:false};closed=false;pending_stream_messages={};pending_diff_streams={};event_callbacks={};unclosed_events=new Set;heartbeat_event=null;abort_controller=null;stream_instance=null;current_payload;get_url_config(e=null){if(!this.config)throw Error(g$3);e===null&&(e=window.location.href);let t=e=>e.replace(/^\/+|\/+$/g,``),n=t(new URL(this.config.root).pathname),r=t(new URL(e).pathname),i;return i=r.startsWith(n)?t(r.substring(n.length)):``,this.get_page_config(i)}get_page_config(e){if(!this.config)throw Error(g$3);let t=this.config;return e in t.page||(e=``),{...t,current_page:e,layout:t.page[e].layout,components:t.components.filter(n=>t.page[e].components.includes(n.id)),dependencies:this.config.dependencies.filter(n=>t.page[e].dependencies.includes(n.id))}}fetch(e,t){let n=new Headers(t?.headers||{});return this&&this.cookies&&n.append(`Cookie`,this.cookies),this&&this.options.headers&&new Headers(this.options.headers).forEach((e,t)=>{n.append(t,e);}),fetch(e,{...t,headers:n})}stream(e){let t=new Headers;return this&&this.cookies&&t.append(`Cookie`,this.cookies),this&&this.options.headers&&new Headers(this.options.headers).forEach((e,n)=>{t.append(n,e);}),this&&this.options.token&&t.append(`Authorization`,`Bearer ${this.options.token}`),this.abort_controller=new AbortController,this.stream_instance=Je(e.toString(),{credentials:this.options.credentials??`same-origin`,headers:t,signal:this.abort_controller.signal}),this.stream_instance}view_api;upload_files;upload;handle_blob;post_data;submit;predict;open_stream;resolve_config;resolve_cookies;constructor(e,t={events:[`data`]}){this.app_reference=e,this.deep_link=t.query_params?.deep_link||null,this.page=t.query_params?.page??null,t.events||=[`data`],w$2(t),this.options=t,this.current_payload={},t.cookies&&(this.cookies=t.cookies),this.view_api=F$1.bind(this),this.upload_files=I$1.bind(this),this.handle_blob=xe.bind(this),this.post_data=Se.bind(this),this.submit=jt.bind(this),this.predict=Ce.bind(this),this.open_stream=Ue.bind(this),this.resolve_config=ce.bind(this),this.resolve_cookies=le.bind(this),this.upload=he.bind(this),this.fetch=this.fetch.bind(this),this.handle_space_success=this.handle_space_success.bind(this),this.stream=this.stream.bind(this);}async init(){Ie(),this.options.auth&&await this.resolve_cookies(),await this._resolve_config().then(e=>e?.config&&this._resolve_heartbeat(e.config));try{this.api_info=await this.view_api();}catch(e){console.error(e.message);}this.api_map=T$2(this.config?.dependencies||[]);}async _resolve_heartbeat(e){if(this.config=e,this.api_prefix=e.api_prefix||``,e.space_id&&this.options.token&&(this.jwt=await se(e.space_id,this.options.token,this.cookies)),W$1(this.config,this.jwt),this.config&&this.config.connect_heartbeat){let e=new URL(`${this.config.root}${this.api_prefix}/${l$2}/${this.session_hash}`);this.jwt&&e.searchParams.set(`__sign`,this.jwt),this.heartbeat_event||=this.stream(e);}}static async connect(e,t={events:[`data`]}){let n=new this(e,t);return t.session_hash&&(n.session_hash=t.session_hash),await n.init(),n}async reconnect(){let e=new URL(`${this.config.root}${this.api_prefix}/${p$3}`),t;try{let n=await this.fetch(e);if(!n.ok)throw Error();t=(await n.json()).app_id;}catch{return `broken`}return t===this.config.app_id?`connected`:`changed`}close(){this.closed=true,We(this.stream_status,this.abort_controller);}async refresh(){if(!this.config)throw Error(g$3);let e=await this.resolve_config(this.config.root,false);if(!e)throw Error(g$3);this.config=e,this.api_prefix=e.api_prefix||``,this.api_map=T$2(e.dependencies||[]),W$1(this.config,this.jwt);try{this.api_info=await this.view_api();}catch(e){console.error(te+e.message);}return this.get_url_config()}set_current_payload(e){this.current_payload=e;}static async duplicate(e,t={events:[`data`]}){return Ae(e,t)}async _resolve_config(){let{http_protocol:e,host:t,space_id:n}=await j$1(this.app_reference,this.options.token),{status_callback:r}=this.options;n&&r&&await we(n,r);let i;try{let n=`${e}//${t}`;if(i=await this.resolve_config(n),!i)throw Error(g$3);return this.config_success(i)}catch(e){if(n&&r)J$1(n,k$1.test(n)?`space_name`:`subdomain`,this.handle_space_success);else throw r&&r({status:`error`,message:`Could not load this space.`,load_status:`error`,detail:`NOT_FOUND`}),e instanceof Error?e:Error(String(e))}}async config_success(e){if(this.config=e,this.api_prefix=e.api_prefix||``,e.run_history===false&&Tt({app_id:e.app_id,username:e.username}),this.config.auth_required)return this.prepare_return_obj();try{this.api_info=await this.view_api();}catch(e){console.error(te+e.message);}return this.prepare_return_obj()}async handle_space_success(e){if(!this)throw Error(g$3);let{status_callback:t}=this.options;if(t&&t(e),e.status===`running`)try{if(this.config=await this._resolve_config(),this.api_prefix=this?.config?.api_prefix||``,!this.config)throw Error(g$3);return await this.config_success(this.config)}catch(e){throw t&&t({status:`error`,message:`Could not load this space.`,load_status:`error`,detail:`NOT_FOUND`}),e}}async component_server(e,t,n){if(!this.config)throw Error(g$3);let r={},{token:i}=this.options,{session_hash:a}=this;i&&(r.Authorization=`Bearer ${this.options.token}`);let o,s=this.config.components.find(t=>t.id===e);o=s?.props?.root_url?s.props.root_url:this.config.root;let c;if(typeof n==`object`&&n&&`binary`in n){let r=n;c=new FormData;for(let e in r.data)e!==`binary`&&c.append(e,r.data[e]);c.set(`component_id`,e.toString()),c.set(`fn_name`,t),c.set(`session_hash`,a);}else c=JSON.stringify({data:n,component_id:e,fn_name:t,session_hash:a}),r[`Content-Type`]=`application/json`;i&&(r.Authorization=`Bearer ${i}`);try{let e=await this.fetch(`${o}${this.api_prefix}/${u$2}/`,{method:`POST`,body:c,headers:r,credentials:this.options.credentials??`same-origin`});if(!e.ok)throw Error(`Could not connect to component server: `+e.statusText);let t=await e.json();return be(t,this.config.root,this.config.api_prefix||``,this.jwt),t}catch(e){console.warn(e);}}set_cookies(e){this.cookies=de(e).join(`; `);}prepare_return_obj(){return {config:this.config,predict:this.predict,submit:this.submit,view_api:this.view_api,component_server:this.component_server}}};
+
+var e$1=`English`,t={annotated_image:`Annotated Image`},n$1={allow_recording_access:`Please allow access to the microphone for recording.`,audio:`Audio`,drop_to_upload:`Drop an audio file here to upload`,record_from_microphone:`Record from microphone`,stop_recording:`Stop recording`,no_device_support:`Media devices could not be accessed. Check that you are running on a secure origin (https) or localhost (or you have passed a valid SSL certificate to ssl_verify), and you have allowed browser access to your device.`,stop:`Stop`,resume:`Resume`,record:`Record`,no_microphone:`No microphone found`,pause:`Pause`,play:`Play`,waiting:`Waiting`},r={connection_can_break:`On mobile, the connection can break if this tab is unfocused or the device sleeps, losing your position in queue.`,long_requests_queue:`There is a long queue of requests pending. Duplicate this Space to skip.`,lost_connection:`Lost connection due to leaving page. Rejoining queue...`,waiting_for_inputs:`Waiting for file(s) to finish uploading, please retry.`},i={edit:`Edit`,retry:`Retry`,undo:`Undo`,submit:`Submit`,cancel:`Cancel`,like:`Like`,dislike:`Dislike`,clear:`Clear`,complete:`Complete`,copy_message:`Copy message`,copied_message:`Copied message`},a$1={new_chat:`New chat`,message_placeholder:`Type a message...`,additional_inputs:`Additional inputs`,chatbot:`Chatbot`,conversation:`Conversation`},o$2={checkbox:`Checkbox`,checkbox_group:`Checkbox Group`},s$1={code:`Code`},c$1={color_picker:`Color Picker`},l$1={built_with:`built with`,built_with_gradio:`Built with Gradio`,clear:`Clear`,download:`Download`,download_all:`Download All`,edit:`Edit`,empty:`Empty`,error:`Error`,hosted_on:`Hosted on`,loading:`Loading`,logo:`logo`,or:`or`,remove:`Remove`,runs:`Runs`,runs_description:`View runs saved in this browser`,back_to_app:`App`,back_to_app_description:`Return to the app`,settings:`Settings`,share:`Share`,submit:`Submit`,undo:`Undo`,no_devices:`No devices found`,language:`Language`,display_theme:`Display Theme`,pwa:`Progressive Web App`,progress:`Progress`,record:`Record`,stop_recording:`Stop Recording`,screen_studio:`Screen Studio`,share_gradio_tab:`[Sharing] Gradio Tab`,run:`Run`},u$1={incorrect_format:`Incorrect format, only CSV and TSV files are supported`,new_column:`Add column`,new_row:`New row`,add_row_above:`Add row above`,add_row_below:`Add row below`,delete_row:`Delete row`,delete_column:`Delete column`,add_column_left:`Add column to the left`,add_column_right:`Add column to the right`,sort_column:`Sort column`,sort_ascending:`Sort ascending`,sort_descending:`Sort descending`,drop_to_upload:`Drop CSV or TSV files here to import data into dataframe`,clear_sort:`Clear sort`,filter:`Filter`,clear_filter:`Clear filters`},d$2={dropdown:`Dropdown`},f$2={build_error:`there is a build error`,config_error:`there is a config error`,contact_page_author:`Please contact the author of the page to let them know.`,no_app_file:`there is no app file`,runtime_error:`there is a runtime error`,space_not_working:`"Space isn't working because" {0}`,space_paused:`the space is paused`,use_via_api:`Use via API`,use_via_api_or_mcp:`Use via API or MCP`},p$2={uploading:`Uploading...`},m$2={highlighted_text:`Highlighted Text`},h$2={allow_webcam_access:`Please allow access to the webcam for recording.`,brush_color:`Brush color`,brush_radius:`Brush radius`,image:`Image`,remove_image:`Remove Image`,select_brush_color:`Select brush color`,start_drawing:`Start drawing`,use_brush:`Use brush`,drop_to_upload:`Drop an image file here to upload`},g$2={add_layer:`Add Layer`,brush:`Brush`,brush_size:`Brush Size`,clear_canvas:`Clear canvas`,color:`Color`,confirm_crop:`Confirm crop`,crop:`Crop`,erase:`Erase`,eraser_size:`Eraser Size`,fit_to_screen:`Fit to screen`,layer:`Layer`,layers:`Layers`,pan:`Pan`,paste:`Paste`,redo:`Redo`,resize:`Resize`,save_changes:`Save changes`,select_draw_tool:`select the draw tool to start`,show_layers:`Show Layers`,upload:`Upload`,upload_image:`Upload an image`,webcam:`Webcam`,zoom_in:`Zoom in`,zoom_out:`Zoom out`},_$2={label:`Label`},v$2={enable_cookies:`If you are visiting a HuggingFace Space in Incognito mode, you must enable third party cookies.`,incorrect_credentials:`Incorrect Credentials`,username:`username`,password:`password`,login:`Login`},y$2={number:`Number`},b$2={plot:`Plot`},x$1={radio:`Radio`},S$1={slider:`Slider`},C$1={queue_position:`In queue: {position} of {size}`},w$1={click_to_upload:`Click to Upload`,drop_audio:`Drop Audio Here`,drop_csv:`Drop CSV Here`,drop_file:`Drop File Here`,drop_image:`Drop Image Here`,drop_video:`Drop Video Here`,drop_gallery:`Drop Media Here`,paste_clipboard:`Paste from Clipboard`},T$1={drop_to_upload:`Drop a video file here to upload`},E$1={_name:e$1,"3D_model":{"3d_model":`3D Model`,drop_to_upload:`Drop a 3D model (.obj, .glb, .stl, .gltf, .splat, or .ply) file here to upload`},annotated_image:t,audio:n$1,blocks:r,chatbot:i,chat_interface:a$1,checkbox:o$2,code:s$1,color_picker:c$1,common:l$1,dataframe:u$1,dropdown:d$2,errors:f$2,file:p$2,highlighted_text:m$2,image:h$2,image_editor:g$2,label:_$2,login:v$2,number:y$2,plot:b$2,radio:x$1,slider:S$1,status:C$1,upload_text:w$1,video:T$1};
+
+var o$1={ar:`جاري التحميل`,ca:`S'està carregant`,ckb:`بارکردن`,de:`Laden`,en:`Loading`,es:`Cargando`,et:`Laen`,eu:`Kargatzen`,fa:`در حال بارگذاری`,fi:`Ladataan`,fr:`Chargement`,he:`טוען`,hi:`लोड हो रहा है`,ja:`読み込み中`,ko:`로딩 중`,lt:`Kraunama`,nb:`Laster`,nl:`Laden`,pl:`Ładowanie`,"pt-BR":`Carregando`,pt:`A carregar`,ro:`Se încarcă`,ru:`Загрузка`,sv:`Laddar`,ta:`ஏற்றுகிறது`,th:`กำลังโหลด`,tr:`Yükleniyor`,uk:`Завантаження`,ur:`لوڈ ہو رہا ہے`,uz:`Yuklanmoqda`,"zh-CN":`加载中`,"zh-TW":`載入中`},s={ar:`العربية`,ca:`Català`,ckb:`کوردی`,de:`Deutsch`,en:`English`,es:`Español`,et:`eesti keel`,eu:`Euskara`,fa:`فارسی`,fi:`Suomi`,fr:`Français`,he:`עברית`,hi:`हिंदी`,ja:`日本語`,ko:`한국어`,lt:`Lietuvių`,nb:`Norsk bokmål`,nl:`Nederlands`,pl:`Polski`,"pt-BR":`Português do Brasil`,pt:`Português`,ro:`Română`,ru:`Русский`,sv:`Svenska`,ta:`தமிழ்`,th:`ภาษาไทย`,tr:`Türkçe`,uk:`Українська`,ur:`اردو`,uz:`O'zbek`,"zh-CN":`简体中文`,"zh-TW":`繁體中文`},c=Object.assign({"./lang/ar.json":()=>import('./ar-lzUv_oXY.js'),"./lang/ca.json":()=>import('./ca-BRJTA-dw.js'),"./lang/ckb.json":()=>import('./ckb-DD3xg0YZ.js'),"./lang/de.json":()=>import('./de-po_0yBio.js'),"./lang/en.json":()=>import('./en-LQrEpl55.js'),"./lang/es.json":()=>import('./es-DLVZ-3Ia.js'),"./lang/et.json":()=>import('./et-DCYTVzwt.js'),"./lang/eu.json":()=>import('./eu-CqrBzqzQ.js'),"./lang/fa.json":()=>import('./fa-DMiCfGG9.js'),"./lang/fi.json":()=>import('./fi-C2SqCbtb.js'),"./lang/fr.json":()=>import('./fr-P4t-_2WM.js'),"./lang/he.json":()=>import('./he-BNiI3GIo.js'),"./lang/hi.json":()=>import('./hi-D6MGPCC4.js'),"./lang/id.json":()=>import('./id-D3kkgSLb.js'),"./lang/ja.json":()=>import('./ja-CDp6u8TC.js'),"./lang/ko.json":()=>import('./ko-Cg-ybHWY.js'),"./lang/lt.json":()=>import('./lt-iyswSoSn.js'),"./lang/nb.json":()=>import('./nb-CzKkXHTp.js'),"./lang/nl.json":()=>import('./nl-CmFwg1xq.js'),"./lang/pl.json":()=>import('./pl-CcwEAYQp.js'),"./lang/pt-BR.json":()=>import('./pt-BR-BiTgdZx1.js'),"./lang/pt.json":()=>import('./pt-BRG6qxj-.js'),"./lang/ro.json":()=>import('./ro-C1SCYq6l.js'),"./lang/ru.json":()=>import('./ru-DYrsxDNX.js'),"./lang/sv.json":()=>import('./sv-TfExP9tZ.js'),"./lang/ta.json":()=>import('./ta-BxrvSRtq.js'),"./lang/th.json":()=>import('./th-dlvPr8G_.js'),"./lang/tr.json":()=>import('./tr-COceg9eL.js'),"./lang/uk.json":()=>import('./uk-DpIjs8x1.js'),"./lang/ur.json":()=>import('./ur-TMighcUO.js'),"./lang/uz.json":()=>import('./uz-CGtdGj7X.js'),"./lang/zh-CN.json":()=>import('./zh-CN-icE_T0Fk.js'),"./lang/zh-TW.json":()=>import('./zh-TW-CtkCvl07.js')});function l(e){return e&&typeof e==`object`&&e.__type__===`translation_metadata`&&typeof e.key==`string`}function u(){return {...Object.fromEntries(Object.entries(c).map(([e,t])=>[e.split(`/`).pop().split(`.`)[0],{type:`lazy`,data:t}])),en:{type:`static`,data:E$1}}}var d$1=u(),f$1=Object.keys(d$1),p$1=Object.entries(d$1).map(([e])=>[s[e]||e,e]),m$1=false,h$1;function g$1(e){let t=e.split(`,`).map(e=>e.includes(`;`)?e.split(`;`).slice(0,2):[e,1]);t.sort((e,t)=>parseFloat(t[1])-parseFloat(e[1]));for(let[e,n]of t)if(f$1.includes(e))return e;return null}async function _$1(n,r){if(m$1&&!(m$1&&n!==h$1))return;let i=n??h$1??{};n!==void 0&&(h$1=n),b$1({processed_langs:d$1,custom_translations:i});let a=null,o=Rt();if(a=r?g$1(r):o&&f$1.includes(o)?o:null,!a){let e=o?.split(`-`)[0];a=e&&f$1.includes(e)?e:`en`;}await Tt$1({fallbackLocale:`en`,initialLocale:a}),m$1=true;}function v$1(e){Y$2.set(e);}function y$1(e,t,n=`en`){return e&&t.includes(e)?e:n}function b$1(e){if(e){try{for(let t in e.custom_translations)ft(t,e.custom_translations[t]);for(let t in e.processed_langs)t===`en`&&e.processed_langs[t].type===`static`?ft(t,E$1):e.processed_langs[t].type===`lazy`&&vt$1(t,e.processed_langs[t].data);}catch(e){console.error(`Error loading translations:`,e);}for(let e in o$1)ft(e,{common:{loading:o$1[e]}});}}
+
+var d=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='10'%20height='10'%20fill='none'%3e%3cpath%20fill='%23FF3270'%20d='M1.93%206.03v2.04h2.04V6.03H1.93Z'/%3e%3cpath%20fill='%23861FFF'%20d='M6.03%206.03v2.04h2.04V6.03H6.03Z'/%3e%3cpath%20fill='%23097EFF'%20d='M1.93%201.93v2.04h2.04V1.93H1.93Z'/%3e%3cpath%20fill='%23000'%20fill-rule='evenodd'%20d='M.5%201.4c0-.5.4-.9.9-.9h3.1a.9.9%200%200%201%20.87.67A2.44%202.44%200%200%201%209.5%202.95c0%20.65-.25%201.24-.67%201.68.39.1.67.46.67.88v3.08c0%20.5-.4.91-.9.91H1.4a.9.9%200%200%201-.9-.9V1.4Zm1.43.53v2.04h2.04V1.93H1.93Zm0%206.14V6.03h2.04v2.04H1.93Zm4.1%200V6.03h2.04v2.04H6.03Zm0-5.12a1.02%201.02%200%201%201%202.04%200%201.02%201.02%200%200%201-2.04%200Z'%20clip-rule='evenodd'/%3e%3cpath%20fill='%23FFD702'%20d='M7.05%201.93a1.02%201.02%200%201%200%200%202.04%201.02%201.02%200%200%200%200-2.04Z'/%3e%3c/svg%3e`;function f(n,r){n.component(n=>{var i;let{wrapper:a=void 0,version:o,initial_height:s,fill_width:c,is_embed:l,space:f,display:p,info:m,loaded:h,pages:g=[],current_page:_=``,root:v,components:y=[],children:b}=r,x=y.find(e=>e.type===`navbar`),S=x?{visible:x.props.visible,main_page_name:x.props.main_page_name,value:x.props.value}:null;S&&t$3.set(S);let C=derived$1(()=>store_get(i??={},`$navbar_config`,t$3)?{visible:store_get(i??={},`$navbar_config`,t$3).visible??true,main_page_name:store_get(i??={},`$navbar_config`,t$3).main_page_name??`Home`,value:store_get(i??={},`$navbar_config`,t$3).value??null}:S),w=derived$1(()=>g.length>1&&(C()===null||C().visible!==false));function T(e){let t=e.split(`?`)[0].split(`#`)[0];return t=t.replace(/^\/+|\/+$/g,``),t}function E(e,t){return e.startsWith(`http://`)||e.startsWith(`https://`)?false:T(e)===T(t)}let D=derived$1(()=>{let e=g.filter(([e,t,n],r)=>r===0&&e===``?C()?.main_page_name!==false:n!==false),t=C()&&C().main_page_name!==false&&C().main_page_name!==`Home`?e.map(([e,t,n],r)=>r===0&&e===``&&t===`Home`?[e,C().main_page_name]:[e,t]):e.map(([e,t])=>[e,t]);if(C()?.value&&C().value.length>0){let e=new Set(t.map(([e])=>e)),n=C().value.map(([e,t])=>[t,e]).filter(([t])=>!e.has(t));return [...t,...n]}return t});if(n.push(``),w()){n.push(``),n.push(`
`);let e=ensure_array_like(D());for(let t=0,r=e.length;t${escape_html(i)}`);}n.push(`
`);}else n.push(``);n.push(`
`),b?.(n),n.push(`
`),p&&f&&m?(n.push(``),n.push(`
${escape_html(f)} ${escape_html(store_get(i??={},`$_`,nn)(`common.built_with`))} Gradio . ${escape_html(store_get(i??={},`$_`,nn)(`common.hosted_on`))} Spaces `)):n.push(``),n.push(`
`),i&&unsubscribe_stores(i),bind_props(r,{wrapper:a});});}var p=false;typeof window<`u`&&`attachShadow`in Element.prototype&&`adoptedStyleSheets`in Document.prototype&&(p=`adoptedStyleSheets`in document.createElement(`div`).attachShadow({mode:`open`}));function m(e,t){let n=new URL(import.meta.url).origin;var r=e;if(window.location.origin!==n&&(r=new URL(e,n).href),document.querySelector(`link[href='${r}']`))return Promise.resolve();let i=document.createElement(`link`);return i.rel=`stylesheet`,i.href=r,new Promise((e,n)=>{i.addEventListener(`load`,()=>e()),i.addEventListener(`error`,()=>{console.error(`Unable to preload CSS for ${r}`),e();}),t.appendChild(i);})}function h(e,t,n){if(!p)return e;n||=document.createElement(`style`),n.remove();let r=new CSSStyleSheet;r.replaceSync(e);let i=``;e=e.replace(/@import\s+url\((.*?)\);\s*/g,(e,t)=>(i+=`@import url(${t});\n`,``));let a=r.cssRules,o=``,s=`.gradio-container.gradio-container-${t} .contain `;for(let e=0;e`${n?`.dark`:``} ${s} ${e.trim()} `).join(`,`);o+=t.cssText,o+=t.cssText.replace(e,r);}}else if(t instanceof CSSMediaRule){let e=`@media ${t.media.mediaText} {`;for(let n=0;n`${t?`.dark`:``} ${s} ${e.trim()} `).join(`,`);e+=r.cssText.replace(n,i);}}e+=`}`,o+=e;}else if(t instanceof CSSKeyframesRule){o+=`@keyframes ${t.name} {`;for(let e=0;eimport('./Index9-BjBSFbQb.js')},annotatedimage:{component:()=>import('./Index10-CSY1TLqH.js')},audio:{base:()=>import('./StaticAudio2-DCzQnebm.js'),example:()=>import('./Example4-CPeqnMGY.js'),component:()=>import('./audio-6x0XJDiE.js')},box:{component:()=>import('./Index11-DnGDaGVb.js')},browserstate:{component:()=>import('./Index12-CVC6jLOI.js')},button:{component:()=>import('./Index6-DN9ed5uQ.js')},chatbot:{component:()=>import('./Index13-CvVn2QJy.js')},checkbox:{example:()=>import('./Example5-C9L_ZRk-.js'),component:()=>import('./Index15-BKSWhzoN.js')},checkboxgroup:{example:()=>import('./Example6-C_ahg9gA.js'),component:()=>import('./Index16-DibhU1Bv.js')},code:{example:()=>import('./Example8-D5cDetxk.js'),component:()=>import('./Index18-BejGs4be.js')},colorpicker:{example:()=>import('./Example10-Df0uZ9es.js'),component:()=>import('./Index19-DIBOk4no.js')},column:{component:()=>import('./Index8-az1jMkkE.js')},core:{component:()=>import('./core2-BhVwP7hk.js')},dataframe:{example:()=>import('./Example14-D4cO1pqC.js'),component:()=>import('./Index22-C-7L9J9X.js')},dataset:{component:()=>import('./Index23-B-IiFAq9.js')},datetime:{example:()=>import('./Example15-B6Op2MB7.js'),component:()=>import('./Index24-Cqr_qfzx.js')},dialogue:{example:()=>import('./Example18-jIBu6p6K.js'),component:()=>import('./Index25-CIcip6wY.js')},downloadbutton:{component:()=>import('./Index26-D5p8l0Ss.js')},draggable:{component:()=>import('./Index27-B0l5Ff8J.js')},dropdown:{example:()=>import('./Example12-CdXhbVW4.js'),component:()=>import('./Index21-CmgmSVId.js')},file:{example:()=>import('./Example21-BmGXktlg.js'),component:()=>import('./Index30-Bqr9sT0t.js')},fileexplorer:{example:()=>import('./Example22-DQ78Khnv.js'),component:()=>import('./Index31-DoYBBgUs.js')},form:{component:()=>import('./Index2-D1yLLEZf.js')},gallery:{base:()=>import('./Gallery2-B9zPkXkr.js'),example:()=>import('./Example24-DFC-yqoe.js'),component:()=>import('./Index34-CmcdUElM.js')},group:{component:()=>import('./Index35-BnbiZAxF.js')},highlightedtext:{component:()=>import('./Index36-BJiQSby2.js')},html:{base:()=>import('./HTML2-B4p8vVNB.js'),example:()=>import('./Example28-DIIslOY3.js'),component:()=>import('./Index37-DsLXJko-.js')},image:{base:()=>import('./ImagePreview2-BsD-LSSg.js'),example:()=>import('./Example26-BuqNE6au.js'),component:()=>import('./Index33-DpibyOF3.js')},imageeditor:{example:()=>import('./Example29-Dsl4UCm-.js'),component:()=>import('./Index38-BzlCRxRU.js').then(function (n) { return n.am; })},imageslider:{example:()=>import('./Example30-BSx2tM8Y.js'),component:()=>import('./Index39-IQbADfOB.js')},json:{example:()=>import('./Example31-JV1IhvuV.js'),component:()=>import('./Index40-CrJ1j1oP.js')},label:{component:()=>import('./Index41-ChKmlEcM.js')},markdown:{example:()=>import('./Example33-w_l1btl-.js'),component:()=>import('./Index43-CDZD_gpJ.js')},model3d:{base:()=>import('./Model3D2-DGpWvwX2.js'),example:()=>import('./Example35-BlQrbU9y.js'),component:()=>import('./Index44-C5x8EEM-.js')},multimodaltextbox:{example:()=>import('./Example37-BrWetgZP.js'),component:()=>import('./Index45-YLktAlcI.js')},nativeplot:{example:()=>import('./Example38-CwbNGVMR.js'),component:()=>import('./Index46-D0NvphBh.js')},navbar:{base:()=>import('./Index47-DHiSww8r.js'),example:()=>import('./Example39-DdG5Hg7s.js'),component:()=>import('./Index47-DHiSww8r.js')},number:{example:()=>import('./Example40-BMYnaRgG.js'),component:()=>import('./Index48-D__px7lX.js')},paramviewer:{example:()=>import('./Example41-DuJGaNUI.js'),component:()=>import('./Index49-CW1q5KEG.js')},plot:{base:()=>import('./Plot-jm8tvrkk.js'),component:()=>import('./Index50-BPd8BCrN.js')},radio:{example:()=>import('./Example43-BZygSv4t.js'),component:()=>import('./Index51-Dnz-nmzA.js')},row:{component:()=>import('./Index52-C3SioRW7.js')},sidebar:{component:()=>import('./Index53-Sb9V_yx8.js')},slider:{example:()=>import('./Example44-D6KhuGVm.js'),component:()=>import('./Index54-BOE2tAp7.js')},state:{component:()=>import('./Index55-DjYoJxwX.js')},statustracker:{component:()=>import('./statustracker2-BSknapID.js')},tabitem:{component:()=>import('./Index58-CSresUTx.js')},tabs:{component:()=>import('./Index57-DaZznm0r.js')},textbox:{example:()=>import('./Example2-DTQ-PDz2.js'),component:()=>import('./Index4-D7mhUoZF.js')},timer:{component:()=>import('./Index59-BI8puZWT.js')},uploadbutton:{component:()=>import('./Index60-DCoiq9GQ.js')},vibeeditor:{component:()=>import('./Index61-Cozexsn_.js')},video:{base:()=>import('./VideoPreview2-BxsHThJg.js'),example:()=>import('./Example46-DhLvlsO3.js'),component:()=>import('./video2-kMT-zKjZ.js')},workflowcanvas:{component:()=>import('./Index62-Cj_ffNOf.js')},walkthrough:{component:()=>import('./Index57-DaZznm0r.js')},walkthroughstep:{component:()=>import('./Index58-CSresUTx.js')}},_={},v={},y=typeof window<`u`;function b({api_url:e,name:t,id:n,variant:r}){let i=y&&window.__GRADIO__CC__;let a={...g,...i||{}},o=n||t;if(_[`${o}-${r}`])return {component:_[`${o}-${r}`],name:t,runtime:v[`${o}-${r}`]};try{if(!a?.[o]?.[r]&&!a?.[t]?.[r])throw Error();return _[`${o}-${r}`]=(a?.[o]?.[r]||a?.[t]?.[r])(),v[`${o}-${r}`]=y&&window.__GRADIO__CC__RUNTIMES__?.[n]||!1,{name:t,component:_[`${o}-${r}`],runtime:v[`${o}-${r}`]}}catch{if(!o)throw Error(`Component not found: ${t}`);try{let[n,i]=S(e,o,r);return _[`${o}-${r}`]=n,v[`${o}-${r}`]=i,{name:t,component:_[`${o}-${r}`],runtime:v[`${o}-${r}`]}}catch(e){if(r===`example`)return _[`${o}-${r}`]=import('./Example19-BDsl9ayT.js'),{name:t,component:_[`${o}-${r}`],runtime:v[`${o}-${r}`]};throw console.error(`failed to load: ${t}`),console.error(e),e}}}function x(e){return y?new Promise((t,n)=>{let r=document.createElement(`link`);r.rel=`stylesheet`,r.href=e,document.head.appendChild(r),r.onload=()=>t(),r.onerror=()=>n();}):Promise.resolve()}function S(e,t,n){let r=y?`client`:`server`;if(r===`server`)return [import('./Index28-_8cTVJDs.js'),Promise.resolve(false)];let i=`${e}/custom_component/${t}/${r}/${n}/index.js`;return [Promise.all([x(`${e}/custom_component/${t}/${r}/${n}/style.css`),import(i)]).then(([e,t])=>t),import(`${e}/custom_component/${t}/${r}/${n}/svelte_runtime_entry.js`)]}function C(e,t,n,r=`component`){return e===`api`&&(e=`state`),b({api_url:n,name:e,id:t,variant:r})}function w(e){let t=new Set,n=new Set;for(let r of e)r.inputs.forEach(e=>t.add(e)),r.outputs.forEach(e=>n.add(e));return [t,n]}function T(e,t,n,r){let[i,a]=r;return t===false?false:t===true?true:!!(i.has(e)||!a.has(e)&&E(n))}function E(e){return Array.isArray(e)&&e.length===0||e===``||e===0||!e}var D=Object.getPrototypeOf(async function(){}).constructor;function O(t){if(t==null)return ``;let n=String(t),i=get(nn);if(n.includes(`__i18n__`))return m$4(n,i);let a=i(n);return typeof a==`string`&&a!==n?a:n}var k=derived(nn,()=>O),A={walkthrough:`tabs`,walkthroughstep:`tabitem`};function j(e,t){let n=e.api_prefix.startsWith(`/`)?e.api_prefix:`/`+e.api_prefix;return i$2(e.root,n,t).toString()}var M=class{#e;#t;#n;reactive_formatter=e=>e;#r;client;root;root_untracked;#i=new Set;#a=new Set;#o=new Map;#s=new Map;#c=new Map;#l;component_ids;initial_tabs={};components_to_register=new Set;ready;ready_resolve;resolved=false;#u=new Set;constructor(e,t,n,r,i,a,o){this.ready=new Promise(e=>{this.ready_resolve=e;}),this.reactive_formatter=a;let s=j(r);this.#r={...r,api_url:s},this.#e=e,this.#t=t,this.#n=n,this.#l=o,this.root=this.create_node({id:t.id,children:[]},new Map,true);for(let t of e)t.props.visible!=0&&this.components_to_register.add(t.id);this.client=i,this.prepare();let c=e.reduce((e,t)=>(e.set(t.id,t),e),new Map);this.root.children=this.#t.children.map(e=>this.traverse(e,e=>this.create_node(e,c,false,this.reactive_formatter))),this.component_ids=e.map(e=>e.id),this.initial_tabs={},q(this.root,this.initial_tabs),this.postprocess(this.root),this.root_untracked=this.root;}reload(e,t,n,r){this.#t=t,this.#e=e;let i=j(r);this.#r={...r,api_url:i},this.#n=n,this.root=this.create_node({id:t.id,children:[]},new Map,true);for(let t of e)t.props.visible!=0&&this.components_to_register.add(t.id);this.prepare();let a=e.reduce((e,t)=>(e.set(t.id,t),e),new Map);this.root.children=this.#t.children.map(e=>this.traverse(e,e=>this.create_node(e,a,false,this.reactive_formatter))),this.component_ids=e.map(e=>e.id),this.initial_tabs={},q(this.root,this.initial_tabs),this.postprocess(this.root),this.#d(this.root);}register_component(e,t,n){this.#s.set(e,t),this.#o.set(e,n),this.components_to_register.delete(e);let r=this.#c.get(e);r&&(this.#c.delete(e),settled().then(()=>{let t=this.#s.get(e);t&&t(r);})),this.components_to_register.size===0&&!this.resolved&&(this.resolved=true,this.ready_resolve());}unregister_component(e,t){let n=this.#s.get(e);t&&n!==t||(this.#s.delete(e),this.#o.delete(e));}prepare(){let[e,t]=w(this.#n);this.#i=e,this.#a=t;}process(){}postprocess(e){this.root=this.traverse(e,[e=>B(e,this.#r.api_url),e=>H(e,this.components_to_register),e=>G(e,this.initial_tabs),e=>this.find_attached_events(e,this.#n),e=>W(e,this.components_to_register,this.#u)]);}find_attached_events(e,t){let n=t.filter(t=>t.targets.find(([t])=>t===e.id)).map(t=>{let n=t.targets.find(([t])=>t===e.id);return n?n[1]:null}).filter(Boolean);return e.props.shared_props.attached_events=n,e}traverse(e,t){function n(e,t,n){let r=t(e);return `children`in e&&e.children.length>0&&(r.children=e.children?.map(e=>n(e,t))||[]),r}if(Array.isArray(t)){let r=e;for(let e of t)r=n(r,e,this.traverse.bind(this));return r}else return n(e,t,this.traverse.bind(this))}create_node(e,t,n=false,r){let i;if(i=n?{type:`column`,id:e.id,props:{visible:true,root:``,theme_mode:`light`,scale:this.#r.fill_height?1:null},component_class_id:`column`,key:null}:t.get(e.id),!i)throw Error(`Component with ID ${e.id} not found`);r&&(i.props.i18n=r,i.props.i18n_store=k);let a=z(e.id,i.props,[this.#i,this.#a],this.client,this.#r.api_url,{...this.#r,register_component:this.register_component.bind(this),unregister_component:this.unregister_component.bind(this),dispatcher:this.#l.bind(this)}),o=A[i.type]||i.type,s=a.shared_props.visible===false?null:C(i.type,i.component_class_id,this.#r.api_url||``);return {id:e.id,type:o,props:a,children:[],show_progress_on:null,component_class_id:i.component_class_id||i.type,component:a.shared_props.visible===false?null:s?.component||null,runtime:s?.runtime||false,key:i.key,rendered_in:i.rendered_in,documentation:i.documentation,original_visibility:a.shared_props.visible}}rerender(e,t){let n=e.reduce((e,t)=>(e.set(t.id,t),e),new Map),r=this.traverse(t,e=>this.create_node(e,n,false,this.reactive_formatter));q(r,this.initial_tabs);let i=this.traverse(r,e=>G(e,this.initial_tabs)),a=J(this.root,i.id);if(!a)throw Error(`Rerender failed: root node not found in current tree`);a.children=i.children,this.#d(i);}#d(e){let t={};for(let n in e.props.shared_props){if(n===`loading_status`)continue;let r=e.props.shared_props[n];r!==void 0&&(t[n]=r);}for(let n in e.props.props){let r=e.props.props[n];r!==void 0&&(t[n]=r);}if(Object.keys(t).length>0){let n=this.#s.get(e.id);if(n)n(t);else if(e.props.shared_props.visible!==false){let n=this.#c.get(e.id)||{};this.#c.set(e.id,{...n,...t});}}if(e.children)for(let t of e.children)this.#d(t);}async update_state(e,t,r=true){let i=J(this.root,e),a=false;if(r&&!i?.component){await tick();let n=J(this.root,e);n&&`visible`in t&&(n.props.shared_props.visible=t.visible),F(this.root,this.#r.api_url),await tick(),i=J(this.root,e),a=true;}let o=this.#s.get(e);i&&!(`value`in t)&&(await this.#f(e,i),await this.#p(i));let c=i?.props.props.value;if(i&&R(i,t),o)o&&(o(t),i?.type===`tabitem`&&this.#m(e,i));else {let{loading_status:r,visible:a,...o}=t;if(Object.keys(o).length>0){let t=this.#c.get(e)||{};this.#c.set(e,{...t,...o});}`value`in t&&!n$4(c,t.value)&&this.#l(e,`change`,null),i?.type===`tabitem`&&this.#m(e,i);}!r||a||(await tick(),await this.update_visibility(i,t));}async update_visibility(e,t){for(let n of e.children){let e=this.#s.get(n.id);`value`in t||await this.#f(n.id,n),e&&e(t),await this.update_visibility(n,t);}}async#f(e,t){let n=this.#o.get(e);if(!n)return;let r=await n();r&&`value`in r&&R(t,{value:r.value});}async#p(e){for(let t of e.children)await this.#f(t.id,t),await this.#p(t);}#m(e,t){let n=Y(this.root,e);if(!n||n.type!==`tabs`)return;let r=n.props.props.initial_tabs;if(!r)return;let i=r.findIndex(e=>e.component_id===t.id);if(i===-1)return;let a=t.props.props.i18n,o=t.props.shared_props.label,s=t.original_visibility,c=s===void 0?t.props.shared_props.visible:s;r[i]={label:a?a(o):o,id:t.props.props.id,alignment:t.props.props.alignment??`left`,elem_id:t.props.shared_props.elem_id,visible:c===`hidden`?false:c,interactive:t.props.shared_props.interactive,scale:t.props.shared_props.scale||null,component_id:t.id},n.props.props.initial_tabs=[...r];let l=this.#s.get(n.id);l&&l({initial_tabs:n.props.props.initial_tabs});}async get_state(e){let t=this.#o.get(e),n=J(this.root,e);return !t&&!n?null:t?await t():n?Promise.resolve({value:n.props.props.value}):null}async render_previously_invisible_children(e){let t=J(this.root,e);t&&(!this.#u.has(t.id)&&!P(t,this.#u)||(N(t,this.#u,true),F(t,this.#r.api_url),await tick(),await settled(),await new Promise(e=>requestAnimationFrame(e)),this.#d(t)));}};function N(e,t,n=false){if(t.has(e.id)&&(e.props.shared_props={...e.props.shared_props,visible:true}),e.type===`tabs`){let n=e.props.props.initial_tabs,r=e.props.props.selected??n?.[0]?.id;e.children.forEach(e=>{e.type===`tabitem`&&(e.props.props.id===r||e.id===r)&&N(e,t,false);});}else e.type===`accordion`&&e.props.props.open===false&&!n||e.children.forEach(e=>{N(e,t,false);});}function P(e,t){for(let n of e.children)if(t.has(n.id)||P(n,t))return true;return false}function F(e,t){if(e.props.shared_props.visible&&!e.component){let n=C(e.type,e.component_class_id,t);e.component=n.component,e.runtime=n.runtime;}e.children.forEach(e=>F(e,t));}function I(e,t,n){return t?t.reduce((t,r)=>(t[r]=async(...t)=>(t.length===1&&(t=t[0]),await n.component_server(e,r,t)),t),{}):{}}function L(e){let t={},n={};for(let r in e)if(r===`id`||r===`autoscroll`)n[r]=e[r];else if(f$4.includes(r)){let n=r;t[n]=e[r];}else n[r]=e[r];return {shared_props:t,props:n}}function R(e,t){let n=L(t);for(let t in n.shared_props)e.props.shared_props[t]=n.shared_props[t];for(let t in n.props)e.props.props[t]=n.props[t];}function z(e,t,n,r,a,o={}){let{shared_props:s,props:c}=L(t);s.server=I(e,t.server_fns,r);for(let e in o)if(f$4.includes(e)){let t=e;s[t]=o[e];}else c[e]=o[e];return s.client=r,s.id=e,s.interactive=T(e,s.interactive,c.value,n),s.load_component=(e,t,n)=>C(e,n||``,a,t),s.visible=s.visible===void 0?true:s.visible,s.loading_status={},{shared_props:s,props:c}}function B(e,t){if(e.props.shared_props.visible&&!e.component){let n=C(e.type,e.component_class_id,t),r={...e,component:n.component,children:[]};return e.children&&(r.children=e.children.map(e=>B(e,t))),r}else return e}function V(e,t){t.delete(e.id),e.children&&e.children.forEach(e=>V(e,t));}function H(e,t){return e.props.shared_props.visible!==true&&V(e,t),e}function U(e,t){return e.props.shared_props.visible===true&&(t.add(e.id),e.props.shared_props.visible=false),e.children.forEach(e=>{U(e,t);}),e}function W(e,t,n){return e.type===`accordion`&&e.props.props.open===false&&(V(e,t),e.children&&e.children.forEach(e=>{U(e,n);})),e.type===`tabs`&&e.children.forEach(r=>{r.type===`tabitem`&&r.props.props.id!==(e.props.props.selected??e.props.props.initial_tabs[0].id)&&(V(r,t),U(r,n));}),e}function G(e,t){if(e.type===`tabs`&&e.id in t){let n=t[e.id].sort((e,t)=>e.order-t.order);e.props.props.initial_tabs=n;}else e.type===`tabitem`&&(e.props.props.component_id=e.id);return e}function K(e,t,n,r){if(n!==null&&e.type===`tabitem`){n in t||(t[n]=[]),e.props.props.id??(e.props.props.id=e.id);let i=e.props.props.i18n,a=e.props.shared_props.label;t[n].push({label:i?i(a):a,id:e.props.props.id,alignment:e.props.props.alignment??`left`,elem_id:e.props.shared_props.elem_id,visible:e.props.shared_props.visible,interactive:e.props.shared_props.interactive,scale:e.props.shared_props.scale||null,component_id:e.id}),e.props.props.order=r;}e.children&&e.children.forEach((n,r)=>{K(n,t,e.type===`tabs`?e.id:null,e.type===`tabs`?r:null);});}function q(e,t){function n(e){`children`in e&&e.children.length>0&&e.children?.forEach(n=>K(n,t,e.type===`tabs`?e.id:null,null));}return n(e)}function J(e,t){if(e.id===t)return e;if(e.children)for(let n of e.children){let e=J(n,t);if(e)return e}return null}function Y(e,t){if(e.children)for(let n of e.children){if(n.id===t)return e;let r=Y(n,t);if(r)return r}return null}
+
+function e(e,t){let n=e=>e.replace(/^\/+|\/+$/g,``),r=n(new URL(t).pathname),i=n(e);return r?i===r||!i.startsWith(`${r}/`)?``:i.slice(r.length+1):i}
+
+var a=true;async function o({url:a,data:{server:o,port:s,local_dev_mode:c,accept_language:l,root_url:u,mount_path:d,cookie:f,auth_required:p},route:m}){let h,g=e$4&&!c&&u?new URL(d||`/`,u).href:o,_=a.searchParams.get(`deep_link`),v=e(a.pathname,u),y=new Headers;if(e$4?y.append(`x-gradio-server`,new URL(d,location.origin).href):(y.append(`x-gradio-server`,u),f&&y.append(`Cookie`,f)),p)return await _$1(void 0,l),{config:{auth_required:true,auth_message:``,components:[],current_page:``,dependencies:[],layout:{},pages:[],page:{},root:u,space_id:null,analytics_enabled:false,connect_heartbeat:false,css:``,js:``,theme_hash:0,head:``,dev_mode:false,enable_queue:false,show_error:false,fill_height:false,fill_width:false,mode:`blocks`,theme:`default`,title:``,version:``,api_prefix:``,is_space:false,is_colab:false,footer_links:[`gradio`,`settings`],stylesheets:[],protocol:`sse_v3`,username:``},api_url:g,layout:{},app:null};try{h=await Pt.connect(g,{with_null_state:!0,events:[`data`,`log`,`status`,`render`],query_params:{..._?{deep_link:_}:{},page:v},headers:y,cookies:f||void 0});}catch(e){let t=e.message||``,n=``;return t.includes(`Login credentials are required to access this space.`)||(n=t.replace(/^Error:?\s*/,``)),await _$1(void 0,l),{config:{auth_message:n,auth_required:true,components:[],current_page:``,dependencies:[],layout:{},pages:[],page:{},root:u,space_id:null,analytics_enabled:false,connect_heartbeat:false,css:``,js:``,theme_hash:0,head:``,dev_mode:false,enable_queue:false,show_error:false,fill_height:false,fill_width:false,mode:`blocks`,theme:`default`,title:``,version:``,api_prefix:``,is_space:false,is_colab:false,footer_links:[`gradio`,`settings`],stylesheets:[],protocol:`sse_v3`,username:``},api_url:g,layout:{},app:null}}if(!h.config)throw Error(`No config found`);let b=h.get_url_config(a.toString());return e$4&&Et(b),await _$1(h.config?.i18n_translations||void 0,l),{config:b,api_url:g,app:h}}
+
+var _page_ts = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ load: o,
+ ssr: a
+});
+
+async function n({request:n,url:r}){let i=n.headers.get(`x-gradio-server`)||`http://127.0.0.1:7860`,a=n.headers.get(`x-gradio-port`)||`7860`,o=n.headers.get(`x-gradio-local-dev-mode`)||n$5?`true`:void 0,s=n.headers.get(`accept-language`)||`en`,c=n.headers.get(`x-gradio-mounted-path`)||`/`,l=new URL(n.headers.get(`x-gradio-original-url`)||i).origin,u=n.headers.get(`cookie`),d=e(r.pathname,new URL(c,l).href),f=false;try{let e=new URL(`${i}/config`);e.searchParams.set(`page`,d),(await fetch(e,{headers:{...u?{Cookie:u}:{}}})).status===401&&(f=!0);}catch{}return {server:i,root_url:new URL(c,l).href.replace(/\/$/,``),mount_path:c,port:a,local_dev_mode:o,accept_language:s,cookie:u,auth_required:f}}
+
+var _page_server_ts = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ load: n
+});
+
+const index = 2;
+let component_cache;
+const component = async () => component_cache ??= (await import('./_page.svelte-CSxp3HpX.js')).default;
+const universal_id = "src/routes/[...catchall]/+page.ts";
+const server_id = "src/routes/[...catchall]/+page.server.ts";
+const imports = ["_app/immutable/nodes/2.CbxY5u9I.js","_app/immutable/chunks/WS1bLMZz.js","_app/immutable/chunks/Bao9V6Rl.js","_app/immutable/chunks/CR-ctaVJ.js","_app/immutable/chunks/BVNPc5BY.js","_app/immutable/chunks/BbNLVwEh.js","_app/immutable/chunks/CTXhSrQn.js","_app/immutable/chunks/C5-g0Q-M.js","_app/immutable/chunks/Q72kI_gu.js","_app/immutable/chunks/Cd-iT2tl.js","_app/immutable/chunks/BilSyTD5.js","_app/immutable/chunks/BftAVguK.js","_app/immutable/chunks/DPzIVE0U.js","_app/immutable/chunks/CyzU45oA.js","_app/immutable/chunks/Bltizhla.js","_app/immutable/chunks/j4vcKnNL.js","_app/immutable/chunks/D2Tbgc-g.js","_app/immutable/chunks/AL7zGNml.js","_app/immutable/chunks/CocRaucg.js","_app/immutable/chunks/CUg2c9za.js","_app/immutable/chunks/BGkEP4m-.js","_app/immutable/chunks/DetdHcVQ.js","_app/immutable/chunks/Zic-HSfS.js","_app/immutable/chunks/mYB1N5De.js","_app/immutable/chunks/Bocc91eC.js","_app/immutable/chunks/Ci63OoZH.js","_app/immutable/chunks/Kll2twSG.js"];
+const stylesheets = ["_app/immutable/assets/src.B8NTxzPO.css","_app/immutable/assets/Image.Da_XA0w6.css","_app/immutable/assets/ImagePreview.B2sIO-1d.css","_app/immutable/assets/Index.CcsdfK63.css","_app/immutable/assets/statustracker.tf1Xc4uQ.css","_app/immutable/assets/Index.DrCM5gzc.css","_app/immutable/assets/Example.B1swpn2y.css","_app/immutable/assets/Index.Ba0kRe4M.css","_app/immutable/assets/2.KQob_HNY.css","_app/immutable/assets/Index.l0AUS9hi.css","_app/immutable/assets/Index.BgJHsyvf.css","_app/immutable/assets/src.D83ev_a0.css","_app/immutable/assets/audio.B-0Anr4d.css","_app/immutable/assets/markdown-code.BT1p15ti.css","_app/immutable/assets/Index.BhPkOP7y.css","_app/immutable/assets/Example.Cpi22WGa.css","_app/immutable/assets/Example.QWdMqwA5.css","_app/immutable/assets/Index.Bqii6RB8.css","_app/immutable/assets/Index.DOWWMP04.css","_app/immutable/assets/Index.CVpzZbMo.css","_app/immutable/assets/Index.CdrjrUBL.css","_app/immutable/assets/Index.DRCpmDeD.css","_app/immutable/assets/Example.BeU1J4ps.css","_app/immutable/assets/Index.CUQnb8lN.css","_app/immutable/assets/Index.6CKB8ymh.css","_app/immutable/assets/Index.3FqI08xq.css","_app/immutable/assets/Index.CxE3o7oI.css","_app/immutable/assets/Example.DO-WzQxB.css","_app/immutable/assets/Index.EcGL5Mc3.css","_app/immutable/assets/Example.BHd1o9CD.css","_app/immutable/assets/Index.CCSYPShX.css","_app/immutable/assets/Index.DKIzZVIo.css","_app/immutable/assets/Index.CA1QTtuq.css","_app/immutable/assets/Index.BRjACRkD.css","_app/immutable/assets/Index.VzTVYr-q.css","_app/immutable/assets/Example.CqSXPQC0.css","_app/immutable/assets/Index.O9LU53nH.css","_app/immutable/assets/Example.ClCEvrVq.css","_app/immutable/assets/Index.DnmLATw6.css","_app/immutable/assets/JSON.8l7fUyjk.css","_app/immutable/assets/Example.B38sx5Cv.css","_app/immutable/assets/Index.CWf2xCP-.css","_app/immutable/assets/Index.DCRdhmCA.css","_app/immutable/assets/Index.OL5m2Qtu.css","_app/immutable/assets/Index.DgD8sjzA.css","_app/immutable/assets/Example.guFL0Sj1.css","_app/immutable/assets/Index.BHng8pvl.css","_app/immutable/assets/Example.Do5iR6B9.css","_app/immutable/assets/Index.B0q-E7g0.css","_app/immutable/assets/Index.CvOXDAXN.css","_app/immutable/assets/Index.LKTY8Jbn.css","_app/immutable/assets/Index.ptz7y9zw.css","_app/immutable/assets/Example.DSMNiXnn.css","_app/immutable/assets/Index.Cr_YPqE0.css","_app/immutable/assets/Index.CDyOSUJJ.css","_app/immutable/assets/Index.BsaKcsdE.css","_app/immutable/assets/Index.Xhg3Ucw_.css","_app/immutable/assets/Index.C6IXUoUa.css","_app/immutable/assets/video.W3rk8GZx.css","_app/immutable/assets/Index.DpW3V0-J.css","_app/immutable/assets/Example.D2nbjfVb.css","_app/immutable/assets/Index.CWg6ZASC.css","_app/immutable/assets/ApiDocs.COuXNFVt.css","_app/immutable/assets/ApiRecorder.BXM0NqLC.css","_app/immutable/assets/Settings.Y-eMWQsH.css"];
+const fonts = [];
+
+var _2 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ component: component,
+ fonts: fonts,
+ imports: imports,
+ index: index,
+ server: _page_server_ts,
+ server_id: server_id,
+ stylesheets: stylesheets,
+ universal: _page_ts,
+ universal_id: universal_id
+});
+
+export { settled as $, h$2 as A, g$2 as B, _$2 as C, v$2 as D, E$1 as E, y$2 as F, b$2 as G, x$1 as H, C$1 as I, w$1 as J, h$4 as K, tick as L, M, onDestroy as N, z$1 as O, c$3 as P, d$4 as Q, s$3 as R, S$1 as S, T$1 as T, t$4 as U, B$1 as V, u$3 as W, g$4 as X, nn as Y, k as Z, _$1 as _, a$3 as a, et as a0, D as a1, snapshot as a2, _2 as a3, b$1 as b, a$1 as c, i as d, e$1 as e, f, c$1 as g, h, i$2 as i, l$1 as j, u$1 as k, l, m, n$1 as n, o$2 as o, p$1 as p, d$2 as q, r, s$1 as s, t, u, v$1 as v, f$2 as w, p$2 as x, y$1 as y, m$2 as z };
+//# sourceMappingURL=2-CaEpGcoe.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example10-Df0uZ9es.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example10-Df0uZ9es.js
new file mode 100644
index 0000000000000000000000000000000000000000..a41e4eef446a3ddb3a3854d0d47d78a984e7469f
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example10-Df0uZ9es.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { b as attr_style, i as stringify, a as attr_class } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`
`);}
+
+export { t as default };
+//# sourceMappingURL=Example10-Df0uZ9es.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example12-CdXhbVW4.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example12-CdXhbVW4.js
new file mode 100644
index 0000000000000000000000000000000000000000..2d388966965e2c3c535989f30c986fb0d8c9db70
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example12-CdXhbVW4.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false,choices:o}=n,s=(r?Array.isArray(r)?r:[r]:[]).map(e=>o.find(t=>t[1]===e)?.[0]).filter(e=>e!==void 0).join(`, `);t.push(`${escape_html(s)}
`);});}
+
+export { t as default };
+//# sourceMappingURL=Example12-CdXhbVW4.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example14-D4cO1pqC.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example14-D4cO1pqC.js
new file mode 100644
index 0000000000000000000000000000000000000000..4899e6e6c304026142d7019f0f2292ba02db17a0
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example14-D4cO1pqC.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html, h as ensure_array_like, d as derived } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false,index:o}=n,s=derived(()=>Array.isArray(r)),c=derived(()=>s()&&(r.length===0||r[0].length===0));if(s()){if(t.push(``),t.push(``),typeof r==`string`)t.push(``),t.push(`${escape_html(r)}`);else if(c())t.push(``),t.push(`
`);else {t.push(``),t.push(`
`);let n=ensure_array_like(r.slice(0,3));for(let r=0,i=n.length;r`);let a=ensure_array_like(i.slice(0,3));for(let n=0,r=a.length;n${escape_html(r)}`);}t.push(``),i.length>3?(t.push(``),t.push(`… `)):t.push(``),t.push(``);}t.push(`
`),r.length>3?(t.push(``),t.push(`
`)):t.push(``),t.push(``);}t.push(`
`);}else t.push(``);t.push(``);});}
+
+export { t as default };
+//# sourceMappingURL=Example14-D4cO1pqC.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example15-B6Op2MB7.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example15-B6Op2MB7.js
new file mode 100644
index 0000000000000000000000000000000000000000..a5060744e601aca25401fc52901764bc90101fba
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example15-B6Op2MB7.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r}=n;t.push(`${escape_html(r||``)}`);}
+
+export { t as default };
+//# sourceMappingURL=Example15-B6Op2MB7.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example18-jIBu6p6K.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example18-jIBu6p6K.js
new file mode 100644
index 0000000000000000000000000000000000000000..9347ca8edfd46ba02783b15127a0d68b92a9f8bb
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example18-jIBu6p6K.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r)}
`);}
+
+export { t as default };
+//# sourceMappingURL=Example18-jIBu6p6K.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example19-BDsl9ayT.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example19-BDsl9ayT.js
new file mode 100644
index 0000000000000000000000000000000000000000..e4a3ce38861bb68ca78bce0f1dc4a78f4471e154
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example19-BDsl9ayT.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r)}
`);}
+
+export { t as default };
+//# sourceMappingURL=Example19-BDsl9ayT.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example2-DTQ-PDz2.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example2-DTQ-PDz2.js
new file mode 100644
index 0000000000000000000000000000000000000000..17c044135551aa984db3f678e7b73010d22c5032
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example2-DTQ-PDz2.js
@@ -0,0 +1,7 @@
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+
+function n(n,r){n.component(n=>{let{value:i,type:a,selected:o=false}=r;function s(e,t=60){if(!e)return ``;let n=String(e);return n.length<=t?n:n.slice(0,t)+`...`}n.push(`${escape_html(s(i))}
`);});}
+
+export { n as default };
+//# sourceMappingURL=Example2-DTQ-PDz2.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example21-BmGXktlg.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example21-BmGXktlg.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8adc536a4222a6a3b08de4fee3fc5d46ed3771f
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example21-BmGXktlg.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r?Array.isArray(r)?r.join(`, `):r:``)}
`);});}
+
+export { t as default };
+//# sourceMappingURL=Example21-BmGXktlg.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example22-DQ78Khnv.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example22-DQ78Khnv.js
new file mode 100644
index 0000000000000000000000000000000000000000..116a14782ad46ca477afa5eabd2bc6faa641e6f9
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example22-DQ78Khnv.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, h as ensure_array_like, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false}=n;if(t.push(``),r){t.push(``),t.push(``);let n=ensure_array_like(Array.isArray(r)?r.slice(0,3):[r]);for(let r=0,i=n.length;r./${escape_html(i)}`);}t.push(` `),Array.isArray(r)&&r.length>3?(t.push(``),t.push(``)):t.push(``),t.push(``);}else t.push(``);t.push(` `);});}
+
+export { t as default };
+//# sourceMappingURL=Example22-DQ78Khnv.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example24-DFC-yqoe.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example24-DFC-yqoe.js
new file mode 100644
index 0000000000000000000000000000000000000000..52b9717ea7739750c43744f88571a30162c5e66a
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example24-DFC-yqoe.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, h as ensure_array_like, f as attr, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false}=n;if(t.push(``),r&&r.length>0){t.push(``),t.push(`
`);let n=ensure_array_like(r.slice(0,3));for(let r=0,i=n.length;r
`),t.push(` `),i.caption?(t.push(``),t.push(`
${escape_html(i.caption)} `)):t.push(``),t.push(`
`)):`video`in i&&i.video?(t.push(``),t.push(` `),i.caption?(t.push(``),t.push(`${escape_html(i.caption)} `)):t.push(``),t.push(`
`)):t.push(``),t.push(``);}t.push(` `),r.length>3?(t.push(``),t.push(`…
`)):t.push(``),t.push(``);}else t.push(``);t.push(`
`);});}
+
+export { t as default };
+//# sourceMappingURL=Example24-DFC-yqoe.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example26-BuqNE6au.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example26-BuqNE6au.js
new file mode 100644
index 0000000000000000000000000000000000000000..059eff4a26ccd19c93b5de01d15324d739eab194
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example26-BuqNE6au.js
@@ -0,0 +1,8 @@
+import { t } from './Image-BmvGPCEw.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class } from './renderer-RGQlaTg4.js';
+
+function n(n,r){n.component(n=>{let{value:i,type:a,selected:o=false}=r;n.push(``),i?(n.push(``),t(n,{src:i.url,alt:``})):n.push(``),n.push(`
`);});}
+
+export { n as default };
+//# sourceMappingURL=Example26-BuqNE6au.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example28-DIIslOY3.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example28-DIIslOY3.js
new file mode 100644
index 0000000000000000000000000000000000000000..d2a3c726fc92b577d0aad142c9aec55f039bb1a7
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example28-DIIslOY3.js
@@ -0,0 +1,8 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class } from './renderer-RGQlaTg4.js';
+import { h as html } from './html-CfyvkLET.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${html(r)}
`);}
+
+export { t as default };
+//# sourceMappingURL=Example28-DIIslOY3.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example29-Dsl4UCm-.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example29-Dsl4UCm-.js
new file mode 100644
index 0000000000000000000000000000000000000000..63f1c2194e8869d06e97be3d55d2f1fd93960211
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example29-Dsl4UCm-.js
@@ -0,0 +1,13 @@
+import { t } from './Image-BmvGPCEw.js';
+import './2-CaEpGcoe.js';
+import { a as attr_class } from './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import './server-BDON6J25.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+
+function n(n,r){n.component(n=>{let{value:i,type:a,selected:o=false}=r;n.push(``),t(n,{src:i.composite?.url||i.background?.url,alt:``}),n.push(`
`);});}
+
+export { n as default };
+//# sourceMappingURL=Example29-Dsl4UCm-.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example30-BSx2tM8Y.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example30-BSx2tM8Y.js
new file mode 100644
index 0000000000000000000000000000000000000000..83021009fa37c61de77c6cf0864438e029ad5eba
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example30-BSx2tM8Y.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, f as attr } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,samples_dir:i,type:a,selected:o=false}=n;t.push(``);});}
+
+export { t as default };
+//# sourceMappingURL=Example30-BSx2tM8Y.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example31-JV1IhvuV.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example31-JV1IhvuV.js
new file mode 100644
index 0000000000000000000000000000000000000000..e9868165d832aafe3ea0f3daaae83b7e93cd73b6
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example31-JV1IhvuV.js
@@ -0,0 +1,14 @@
+import { c } from './JSON-DNyKgv9H.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class } from './renderer-RGQlaTg4.js';
+import './src3-CHMGbv-A.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './html-CfyvkLET.js';
+
+function n(n,r){let{value:i,theme_mode:a=`system`,type:o,selected:s=false}=r;n.push(``),i?(n.push(``),c(n,{value:i,open:true,theme_mode:a,show_indices:false,label_height:0,interactive:false,show_copy_button:false})):n.push(``),n.push(`
`);}
+
+export { n as default };
+//# sourceMappingURL=Example31-JV1IhvuV.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example32-DzPpKSRc.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example32-DzPpKSRc.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6d6acb6538c51c68e2eb2994a16cffed565af1c
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example32-DzPpKSRc.js
@@ -0,0 +1,8 @@
+import { u as ut } from './markdown-code-l98jAt38.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class } from './renderer-RGQlaTg4.js';
+
+function n(n,r){let{value:i,type:a,selected:o=false,sanitize_html:s,line_breaks:c,latex_delimiters:l}=r;function u(e,t=60){if(!e)return ``;let n=String(e);return n.length<=t?n:n.slice(0,t)+`...`}n.push(``),ut(n,{message:u(i),latex_delimiters:l,sanitize_html:s,line_breaks:c,chatbot:false}),n.push(`
`);}
+
+export { n };
+//# sourceMappingURL=Example32-DzPpKSRc.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example33-w_l1btl-.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example33-w_l1btl-.js
new file mode 100644
index 0000000000000000000000000000000000000000..1cc68e5622c5e5aa8d1b88214e6f242b0c339c9b
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example33-w_l1btl-.js
@@ -0,0 +1,8 @@
+export { n as default } from './Example32-DzPpKSRc.js';
+import './markdown-code-l98jAt38.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import './html-CfyvkLET.js';
+//# sourceMappingURL=Example33-w_l1btl-.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example35-BlQrbU9y.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example35-BlQrbU9y.js
new file mode 100644
index 0000000000000000000000000000000000000000..19e007e66debc3ffb2cac051e45a74598766481e
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example35-BlQrbU9y.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r||``)}
`);}
+
+export { t as default };
+//# sourceMappingURL=Example35-BlQrbU9y.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example36-CbY6vtJO.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example36-CbY6vtJO.js
new file mode 100644
index 0000000000000000000000000000000000000000..60ac9bb527da636a3ca21d83e4198f0a6e39a043
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example36-CbY6vtJO.js
@@ -0,0 +1,10 @@
+import { t } from './Image-BmvGPCEw.js';
+import './2-CaEpGcoe.js';
+import { a as attr_class, e as escape_html, h as ensure_array_like, f as attr } from './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import { _ } from './Video-DaGzb6R2.js';
+
+function r(r,i){r.component(r=>{let{value:a={text:``,files:[]},type:o,selected:s=false}=i;r.push(`${escape_html(a.text?a.text:``)}
`);let c=ensure_array_like(a.files);for(let i=0,a=c.length;i
`),t(r,{src:a.url,alt:``})):a.mime_type&&a.mime_type.includes(`video`)?(r.push(``),_(r,{src:a.url,alt:``,loop:true,is_stream:false})):a.mime_type&&a.mime_type.includes(`audio`)?(r.push(``),r.push(` `)):(r.push(``),r.push(`${escape_html(a.orig_name)}`)),r.push(``);}r.push(` `);});}
+
+export { r };
+//# sourceMappingURL=Example36-CbY6vtJO.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example37-BrWetgZP.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example37-BrWetgZP.js
new file mode 100644
index 0000000000000000000000000000000000000000..ec28af8636f54ffbb604b0bbc3ceb014c36a5638
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example37-BrWetgZP.js
@@ -0,0 +1,11 @@
+export { r as default } from './Example36-CbY6vtJO.js';
+import './Image-BmvGPCEw.js';
+import './async-Cv1-GZGV.js';
+import './renderer-RGQlaTg4.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './Video-DaGzb6R2.js';
+import './hls-Bb04mlfj.js';
+//# sourceMappingURL=Example37-BrWetgZP.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example38-CwbNGVMR.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example38-CwbNGVMR.js
new file mode 100644
index 0000000000000000000000000000000000000000..8f16af0a1b49fa013413c68b7088da8509dbb717
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example38-CwbNGVMR.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{title:r,x:i,y:a}=n;r?(t.push(``),t.push(`${escape_html(r)}`)):(t.push(``),t.push(`${escape_html(i)} x ${escape_html(a)}`)),t.push(``);}
+
+export { t as default };
+//# sourceMappingURL=Example38-CwbNGVMR.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example39-DdG5Hg7s.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example39-DdG5Hg7s.js
new file mode 100644
index 0000000000000000000000000000000000000000..2073eac667ab2494c8de28f330bcb20484012c8b
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example39-DdG5Hg7s.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r={visible:true,home_page_title:`Home`}}=n;t.push(`Navbar config: visible=${escape_html(r.visible)}, home_page_title="${escape_html(r.home_page_title)}"
`);});}
+
+export { t as default };
+//# sourceMappingURL=Example39-DdG5Hg7s.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example4-CPeqnMGY.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example4-CPeqnMGY.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee375d7ee0e3c606d6f152d6f450217414439dda
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example4-CPeqnMGY.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r||``)}
`);}
+
+export { t as default };
+//# sourceMappingURL=Example4-CPeqnMGY.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example40-BMYnaRgG.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example40-BMYnaRgG.js
new file mode 100644
index 0000000000000000000000000000000000000000..fcb29fd132d233aafe51023ff129e3e78b7bbe94
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example40-BMYnaRgG.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r===null?``:r)}
`);}
+
+export { t as default };
+//# sourceMappingURL=Example40-BMYnaRgG.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example41-DuJGaNUI.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example41-DuJGaNUI.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f3b6d9fe5928479563e1bad3624fed373530a6b
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example41-DuJGaNUI.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(JSON.stringify(r,null,2))} `);}
+
+export { t as default };
+//# sourceMappingURL=Example41-DuJGaNUI.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example43-BZygSv4t.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example43-BZygSv4t.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ea455cc889731cfdad3cea9c8b4bc1372491542
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example43-BZygSv4t.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html, d as derived } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false,choices:o}=n,s=derived(()=>{if(r===null)return ``;let e=o.find(e=>e[1]===r);return e?e[0]:``});t.push(`${escape_html(s())}
`);});}
+
+export { t as default };
+//# sourceMappingURL=Example43-BZygSv4t.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example44-D6KhuGVm.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example44-D6KhuGVm.js
new file mode 100644
index 0000000000000000000000000000000000000000..f534b63c1e5b4d14b8a30009d686efbca5d98c35
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example44-D6KhuGVm.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r)}
`);}
+
+export { t as default };
+//# sourceMappingURL=Example44-D6KhuGVm.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example45-Dzj1ZoJn.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example45-Dzj1ZoJn.js
new file mode 100644
index 0000000000000000000000000000000000000000..f306bf714226463654ad5e3b253b834f4ebbf72b
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example45-Dzj1ZoJn.js
@@ -0,0 +1,9 @@
+import './2-CaEpGcoe.js';
+import { _ } from './Video-DaGzb6R2.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class } from './renderer-RGQlaTg4.js';
+
+function r(r,i){r.component(r=>{let{type:a,selected:o=false,value:s=null,loop:c}=i,l;async function u(){l&&(l.muted=true,l.playsInline=true,l.controls=false,l.setAttribute(`muted`,``),await l.play(),l.pause());}let d=true,f;function p(r){s?(r.push(``),(r.push(``),r.push(``),_(r,{muted:true,playsinline:true,onloadeddata:u,onmouseover:()=>l?.play(),onmouseout:()=>l?.pause(),src:s?.url,is_stream:false,loop:c,get node(){return l},set node(e){l=e,d=false;}}),r.push(`
`)),r.push(``)):r.push(``),r.push(``);}do d=true,f=r.copy(),p(f);while(!d);r.subsume(f);});}
+
+export { r };
+//# sourceMappingURL=Example45-Dzj1ZoJn.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example46-DhLvlsO3.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example46-DhLvlsO3.js
new file mode 100644
index 0000000000000000000000000000000000000000..06995a43a8502bd6b9e870ea89ee604a51ce6ebc
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example46-DhLvlsO3.js
@@ -0,0 +1,10 @@
+export { r as default } from './Example45-Dzj1ZoJn.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import './Video-DaGzb6R2.js';
+import './hls-Bb04mlfj.js';
+//# sourceMappingURL=Example46-DhLvlsO3.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example5-C9L_ZRk-.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example5-C9L_ZRk-.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9f4de6cf702489c71683c2e4c69c91f5216dcc4
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example5-C9L_ZRk-.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false}=n;t.push(`${escape_html(r===null?``:r.toLocaleString())}
`);});}
+
+export { t as default };
+//# sourceMappingURL=Example5-C9L_ZRk-.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example6-C_ahg9gA.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example6-C_ahg9gA.js
new file mode 100644
index 0000000000000000000000000000000000000000..b54567790288e103f003a9050178f80117c29046
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example6-C_ahg9gA.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html, d as derived } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{value:r,type:i,selected:a=false,choices:o}=n,s=derived(()=>r.map(e=>o.find(t=>t[1]===e)?.[0]).filter(e=>e!==void 0).join(`, `));t.push(`${escape_html(s())}
`);});}
+
+export { t as default };
+//# sourceMappingURL=Example6-C_ahg9gA.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example8-D5cDetxk.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example8-D5cDetxk.js
new file mode 100644
index 0000000000000000000000000000000000000000..e0606eafa590d24eafa3c91338e0b436e36d233f
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Example8-D5cDetxk.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { a as attr_class, e as escape_html } from './renderer-RGQlaTg4.js';
+
+function t(t,n){let{value:r,type:i,selected:a=false}=n;function o(e,t=60){if(!e)return ``;let n=String(e);return n.length<=t?n:n.slice(0,t)+`...`}t.push(`${escape_html(o(r))} `);}
+
+export { t as default };
+//# sourceMappingURL=Example8-D5cDetxk.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Gallery-Bs-9ISRx.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Gallery-Bs-9ISRx.js
new file mode 100644
index 0000000000000000000000000000000000000000..13a9ca44cb15adb8a93f8e7960336b15ad455b9f
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Gallery-Bs-9ISRx.js
@@ -0,0 +1,12 @@
+import { V as B, P as c } from './2-CaEpGcoe.js';
+import { h, H, v, V as Ve, _, i as ie$1, a as He, I as Ie, m as ee, f as fe, G as ae, Y, Z, X, U } from './src3-CHMGbv-A.js';
+import { t } from './Image-BmvGPCEw.js';
+import './async-Cv1-GZGV.js';
+import { c as bind_props, a as attr_class, b as attr_style, e as escape_html, h as ensure_array_like, f as attr, i as stringify, d as derived } from './renderer-RGQlaTg4.js';
+import { _ as _$2, g } from './src4-CSEtSstC.js';
+import { _ as _$1 } from './Video-DaGzb6R2.js';
+
+async function ie(t){return t?`${(await Promise.all(t.map(async([t,n])=>t===null||!t.url?``:await c(t.url)))).map(e=>`
`).join(``)}
`:``}async function y(e,n,r=`uploaded_file`){let i=e.type.split(`/`)[1]||`png`,a=new File([e],`${r}.${i}`);return (await n([new B({path:a.name,orig_name:a.name,blob:a,size:a.size,mime_type:a.type,is_stream:false})])??[]).filter(e=>e!==null)}function b(e,t$1){e.component(e=>{let{show_label:y=true,label:b,value:x=void 0,columns:ae$1=[2],rows:oe=void 0,height:S=`auto`,preview:se,allow_preview:C=true,object_fit:ce=`cover`,show_share_button:le=false,show_download_button:w=false,show_download_all_button:T=false,i18n:E,selected_index:D=void 0,interactive:O,_fetch:k,show_fullscreen_button:ue=true,fullscreen:de=false,root:fe$1=``,file_types:pe=[`image`,`video`],sources:A,max_file_size:me=null,upload:j,stream_handler:M,fit_columns:N=true,buttons:P=null,oncustom_button_click:F=null,onpreview_open:he=()=>{},onchange:ge=()=>{},onclear:I=()=>{},onselect:_e=e=>{},onshare:L=e=>{},onerror:R=e=>{},onpreview_close:z=()=>{},onfullscreen:ve=e=>{},ondelete:ye=()=>{},onupload:be=()=>{},onsource_change:B=()=>{}}=t$1,V=null,H$1=false,U$1=derived(()=>x==null?null:x.map(e=>`video`in e?{video:e.video,caption:e.caption}:`image`in e?{image:e.image,caption:e.caption}:{}));function xe(e,t,n){if(e&&t&&n){let n=e.length;return Array.isArray(t)?t.map(e=>Math.min(e,n)):Math.min(t,n)}else return t}let Se=derived(()=>xe(U$1(),ae$1,N));D==null&&se&&x?.length&&(D=0);async function Ce(e,t){let n;try{n=await k(e);}catch(t){if(t instanceof TypeError){window.open(e,`_blank`,`noreferrer`);return}throw t}let r=await n.blob(),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,a.click(),URL.revokeObjectURL(i);}let we=new Uint32Array(Array.from({length:256},(e,t)=>{let n=t;for(let e=0;e<8;e++)n=n&1?3988292384^n>>>1:n>>>1;return n>>>0}));function Te(e){let t=4294967295;for(let n of e)t=we[(t^n)&255]^t>>>8;return (t^4294967295)>>>0}function W(e,t,n){e.setUint16(t,n,true);}function G(e,t,n){e.setUint32(t,n,true);}function K(e){return new Uint8Array(e)}function Ee(e,t,n){let r=(e.orig_name||e.path||t).split(/[/\\]/).pop()||t,i=n.get(r)??0;if(n.set(r,i+1),i===0)return r;let a=r.lastIndexOf(`.`),o=a>0?r.slice(0,a):r,s=a>0?r.slice(a):``;return `${o}-${i+1}${s}`}function q(e){let t=new TextEncoder,n=[],r=[],i=2048,a=0;for(let o of e){let e=t.encode(o.name),s=Te(o.data),c=K(30+e.length),l=new DataView(c.buffer);G(l,0,67324752),W(l,4,20),W(l,6,i),W(l,8,0),W(l,10,0),W(l,12,33),G(l,14,s),G(l,18,o.data.length),G(l,22,o.data.length),W(l,26,e.length),W(l,28,0),c.set(e,30),n.push(c,o.data);let u=K(46+e.length),d=new DataView(u.buffer);G(d,0,33639248),W(d,4,20),W(d,6,20),W(d,8,i),W(d,10,0),W(d,12,0),W(d,14,33),G(d,16,s),G(d,20,o.data.length),G(d,24,o.data.length),W(d,28,e.length),W(d,30,0),W(d,32,0),W(d,34,0),W(d,36,0),G(d,38,0),G(d,42,a),u.set(e,46),r.push(u),a+=c.length+o.data.length;}let o=a,s=r.reduce((e,t)=>e+t.length,0),c=K(22),l=new DataView(c.buffer);G(l,0,101010256),W(l,4,0),W(l,6,0),W(l,8,e.length),W(l,10,e.length),G(l,12,s),G(l,16,o),W(l,20,0);let u=new Uint8Array(o+s+c.length),d=0;for(let e of [...n,...r,c])u.set(e,d),d+=e.length;return u}async function De(e,t){let n;try{n=await k(e);}catch(t){return t instanceof TypeError&&window.open(e,`_blank`,`noreferrer`),null}return n.ok?{name:t,data:new Uint8Array(await n.arrayBuffer())}:null}async function Oe(e){let t=new Map,n=(await Promise.all(e.flatMap((e,n)=>{let r=`image`in e?e.image:e.video,i=`image`in e?`image-${n+1}`:`video-${n+1}`;if(!r.url)return [];let a=Ee(r,i,t);return [De(r.url,a)]}))).filter(e=>e!==null);if(n.length===0)return;let r=q(n),i=URL.createObjectURL(new Blob([r.buffer],{type:`application/zip`})),a=document.createElement(`a`);a.href=i,a.download=`gallery.zip`,a.click(),URL.revokeObjectURL(i);}function J(){U$1()&&Oe(U$1());}let Y$1=derived(()=>D!=null&&U$1()!=null?U$1()[D]:null);let Z$1=false,Q=true,$;function ke(e){if(y?(e.push(``),h(e,{show_label:y,Icon:H,label:b||`Gallery`})):e.push(``),e.push(` `),x==null||U$1()==null||U$1().length===0)e.push(``),v(e,{unpadded_box:true,size:`large`,children:e=>{H(e);}});else {if(e.push(``),e.push(``),Y$1()&&C){e.push(``),e.push(`
`),Ve(e,{display_top_corner:false,buttons:P,on_custom_button_click:F,children:e=>{w?(e.push(``),_(e,{Icon:ie$1,label:E(`common.download`),onclick:()=>{let e=`image`in Y$1()?Y$1()?.image:Y$1()?.video;if(e==null)return;let{url:t,orig_name:n}=e;t&&Ce(t,n??`image`);}})):e.push(``),e.push(` `),ue?(e.push(``),He(e,{fullscreen:de,onclick:e=>ve({detail:e})})):e.push(``),e.push(` `),le?(e.push(``),e.push(``),Ie(e,{i18n:E,onshare:e=>{L({detail:e});},onerror:e=>{R({detail:e});},value:U$1(),formatter:ie}),e.push(`
`)):e.push(``),e.push(` `),(e.push(``),_(e,{Icon:ee,label:`Close`,onclick:()=>{D=null,z();}})),e.push(``);}}),e.push(` `),`image`in Y$1()?(e.push(``),t(e,{restProps:{alt:Y$1().caption||``,title:Y$1().caption||null,class:Y$1().caption&&`with-caption`,loading:`lazy`},src:Y$1().image.url,data_testid:`detailed-image`})):(e.push(``),_$1(e,{src:Y$1().video.url,"data-testid":`detailed-video`,alt:Y$1().caption||``,loading:`lazy`,loop:false,is_stream:false,muted:false,controls:true})),e.push(` `),Y$1()?.caption?(e.push(``),e.push(`${escape_html(Y$1().caption)} `)):e.push(``),e.push(` `);let t$1=ensure_array_like(U$1());for(let n=0,r=t$1.length;n`),`image`in r?(e.push(``),t(e,{src:r.image.url,restProps:{title:r.caption||null,alt:``,class:`with-caption`,loading:`lazy`},data_testid:`thumbnail ${n+1}`})):(e.push(``),fe(e),e.push(` `),_$1(e,{src:r.video.url,title:r.caption||null,is_stream:false,"data-testid":`thumbnail `+(n+1),alt:``,loading:`lazy`,loop:false}),e.push(``)),e.push(``);}e.push(`
`);}else e.push(``);e.push(`
`),O&&D===null?(e.push(``),_$2(e,{i18n:E,onclear:()=>{x=[],B(`upload`),I();},children:e=>{T?(e.push(``),_(e,{Icon:ae,label:E(`common.download_all`),onclick:J})):e.push(``),e.push(` `),j&&M?(e.push(``),_(e,{Icon:Y,label:E(`upload_text.click_to_upload`),children:e=>{g(e,{icon_upload:true,onload:e=>be(e),filetype:pe,file_count:`multiple`,max_file_size:me,root:fe$1,onerror:e=>R(e),stream_handler:M,upload:j,get upload_promise(){return V},set upload_promise(e){V=e,Q=false;},get uploading(){return Z$1},set uploading(e){Z$1=e,Q=false;}});}})):e.push(``),e.push(` `),A.includes(`webcam`)?(e.push(``),_(e,{Icon:Z,label:E(`common.webcam`),onclick:()=>{B(`webcam`);}})):e.push(``),e.push(` `),A.includes(`webcam-video`)?(e.push(``),_(e,{Icon:X,label:E(`common.video`),onclick:()=>{B(`webcam-video`);}})):e.push(``),e.push(` `),A.includes(`clipboard`)?(e.push(``),_(e,{label:E(`upload_text.paste_clipboard`),onclick:()=>{B(`clipboard`);},Icon:U})):e.push(``),e.push(``);}})):T&&!(Y$1()&&C)?(e.push(``),Ve(e,{children:e=>{_(e,{Icon:ae,label:E(`common.download_all`),onclick:J});}})):e.push(``),e.push(`
`);let t$1=ensure_array_like(U$1());for(let n=0,r=t$1.length;n
`),`image`in r?(e.push(``),t(e,{alt:r.caption||``,src:typeof r.image==`string`?r.image:r.image.url,loading:`lazy`})):(e.push(``),fe(e),e.push(` `),_$1(e,{src:r.video.url,title:r.caption||null,is_stream:false,"data-testid":`thumbnail `+(n+1),alt:``,loading:`lazy`,loop:false}),e.push(``)),e.push(` `),r.caption?(e.push(``),e.push(`${escape_html(r.caption)}
`)):e.push(``),e.push(` `),O?(e.push(``),e.push(``),ee(e),e.push(` `)):e.push(``),e.push(``);}e.push(`
`);}e.push(``);}do Q=true,$=e.copy(),ke($);while(!Q);e.subsume($),bind_props(t$1,{value:x,selected_index:D});});}
+
+export { b, y };
+//# sourceMappingURL=Gallery-Bs-9ISRx.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Gallery2-B9zPkXkr.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Gallery2-B9zPkXkr.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce595c984fe85fa2fba72582237d6169a676ad46
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Gallery2-B9zPkXkr.js
@@ -0,0 +1,14 @@
+export { b as default } from './Gallery-Bs-9ISRx.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import './src3-CHMGbv-A.js';
+import './html-CfyvkLET.js';
+import './Image-BmvGPCEw.js';
+import './src4-CSEtSstC.js';
+import './Video-DaGzb6R2.js';
+import './hls-Bb04mlfj.js';
+//# sourceMappingURL=Gallery2-B9zPkXkr.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/HTML-C5FT_DD6.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/HTML-C5FT_DD6.js
new file mode 100644
index 0000000000000000000000000000000000000000..a81e84ae9555c8d5ca96c0e88921f58bd8938181
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/HTML-C5FT_DD6.js
@@ -0,0 +1,8505 @@
+import { a2 as snapshot, N as onDestroy } from './2-CaEpGcoe.js';
+import './async-Cv1-GZGV.js';
+import { f as attr, a as attr_class, i as stringify, j as clsx, d as derived, at as to_array } from './renderer-RGQlaTg4.js';
+import require$$2 from 'fs';
+
+function commonjsRequire(path) {
+ throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
+}
+
+var handlebars = {exports: {}};
+
+var handlebars_runtime = {exports: {}};
+
+var base$1 = {};
+
+var utils = {};
+
+var hasRequiredUtils;
+
+function requireUtils () {
+ if (hasRequiredUtils) return utils;
+ hasRequiredUtils = 1;
+
+ utils.__esModule = true;
+ utils.extend = extend;
+ utils.indexOf = indexOf;
+ utils.escapeExpression = escapeExpression;
+ utils.isEmpty = isEmpty;
+ utils.createFrame = createFrame;
+ utils.blockParams = blockParams;
+ utils.appendContextPath = appendContextPath;
+ var escape = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '`': '`',
+ '=': '='
+ };
+
+ var badChars = /[&<>"'`=]/g,
+ possible = /[&<>"'`=]/;
+
+ function escapeChar(chr) {
+ return escape[chr];
+ }
+
+ function extend(obj /* , ...source */) {
+ for (var i = 1; i < arguments.length; i++) {
+ for (var key in arguments[i]) {
+ if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
+ obj[key] = arguments[i][key];
+ }
+ }
+ }
+
+ return obj;
+ }
+
+ var toString = Object.prototype.toString;
+
+ utils.toString = toString;
+ // Sourced from lodash
+ // https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
+ /* eslint-disable func-style */
+ var isFunction = function isFunction(value) {
+ return typeof value === 'function';
+ };
+ // fallback for older versions of Chrome and Safari
+ /* istanbul ignore next */
+ if (isFunction(/x/)) {
+ utils.isFunction = isFunction = function (value) {
+ return typeof value === 'function' && toString.call(value) === '[object Function]';
+ };
+ }
+ utils.isFunction = isFunction;
+
+ /* eslint-enable func-style */
+
+ /* istanbul ignore next */
+ var isArray = Array.isArray || function (value) {
+ return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;
+ };
+
+ utils.isArray = isArray;
+ // Older IE versions do not directly support indexOf so we must implement our own, sadly.
+
+ function indexOf(array, value) {
+ for (var i = 0, len = array.length; i < len; i++) {
+ if (array[i] === value) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ function escapeExpression(string) {
+ if (typeof string !== 'string') {
+ // don't escape SafeStrings, since they're already safe
+ if (string && string.toHTML) {
+ return string.toHTML();
+ } else if (string == null) {
+ return '';
+ } else if (!string) {
+ return string + '';
+ }
+
+ // Force a string conversion as this will be done by the append regardless and
+ // the regex test will do this transparently behind the scenes, causing issues if
+ // an object's to string has escaped characters in it.
+ string = '' + string;
+ }
+
+ if (!possible.test(string)) {
+ return string;
+ }
+ return string.replace(badChars, escapeChar);
+ }
+
+ function isEmpty(value) {
+ if (!value && value !== 0) {
+ return true;
+ } else if (isArray(value) && value.length === 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function createFrame(object) {
+ var frame = extend({}, object);
+ frame._parent = object;
+ return frame;
+ }
+
+ function blockParams(params, ids) {
+ params.path = ids;
+ return params;
+ }
+
+ function appendContextPath(contextPath, id) {
+ return (contextPath ? contextPath + '.' : '') + id;
+ }
+
+ return utils;
+}
+
+var exception = {exports: {}};
+
+var hasRequiredException;
+
+function requireException () {
+ if (hasRequiredException) return exception.exports;
+ hasRequiredException = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
+
+ function Exception(message, node) {
+ var loc = node && node.loc,
+ line = undefined,
+ endLineNumber = undefined,
+ column = undefined,
+ endColumn = undefined;
+
+ if (loc) {
+ line = loc.start.line;
+ endLineNumber = loc.end.line;
+ column = loc.start.column;
+ endColumn = loc.end.column;
+
+ message += ' - ' + line + ':' + column;
+ }
+
+ var tmp = Error.prototype.constructor.call(this, message);
+
+ // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
+ for (var idx = 0; idx < errorProps.length; idx++) {
+ this[errorProps[idx]] = tmp[errorProps[idx]];
+ }
+
+ /* istanbul ignore else */
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, Exception);
+ }
+
+ try {
+ if (loc) {
+ this.lineNumber = line;
+ this.endLineNumber = endLineNumber;
+
+ // Work around issue under safari where we can't directly set the column value
+ /* istanbul ignore next */
+ if (Object.defineProperty) {
+ Object.defineProperty(this, 'column', {
+ value: column,
+ enumerable: true
+ });
+ Object.defineProperty(this, 'endColumn', {
+ value: endColumn,
+ enumerable: true
+ });
+ } else {
+ this.column = column;
+ this.endColumn = endColumn;
+ }
+ }
+ } catch (nop) {
+ /* Ignore if the browser is very particular */
+ }
+ }
+
+ Exception.prototype = new Error();
+
+ exports['default'] = Exception;
+ module.exports = exports['default'];
+
+ } (exception, exception.exports));
+ return exception.exports;
+}
+
+var helpers$1 = {};
+
+var blockHelperMissing = {exports: {}};
+
+var hasRequiredBlockHelperMissing;
+
+function requireBlockHelperMissing () {
+ if (hasRequiredBlockHelperMissing) return blockHelperMissing.exports;
+ hasRequiredBlockHelperMissing = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+
+ var _utils = requireUtils();
+
+ exports['default'] = function (instance) {
+ instance.registerHelper('blockHelperMissing', function (context, options) {
+ var inverse = options.inverse,
+ fn = options.fn;
+
+ if (context === true) {
+ return fn(this);
+ } else if (context === false || context == null) {
+ return inverse(this);
+ } else if (_utils.isArray(context)) {
+ if (context.length > 0) {
+ if (options.ids) {
+ options.ids = [options.name];
+ }
+
+ return instance.helpers.each(context, options);
+ } else {
+ return inverse(this);
+ }
+ } else {
+ if (options.data && options.ids) {
+ var data = _utils.createFrame(options.data);
+ data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);
+ options = { data: data };
+ }
+
+ return fn(context, options);
+ }
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (blockHelperMissing, blockHelperMissing.exports));
+ return blockHelperMissing.exports;
+}
+
+var each = {exports: {}};
+
+var hasRequiredEach;
+
+function requireEach () {
+ if (hasRequiredEach) return each.exports;
+ hasRequiredEach = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _utils = requireUtils();
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ exports['default'] = function (instance) {
+ instance.registerHelper('each', function (context, options) {
+ if (!options) {
+ throw new _exception2['default']('Must pass iterator to #each');
+ }
+
+ var fn = options.fn,
+ inverse = options.inverse,
+ i = 0,
+ ret = '',
+ data = undefined,
+ contextPath = undefined;
+
+ if (options.data && options.ids) {
+ contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';
+ }
+
+ if (_utils.isFunction(context)) {
+ context = context.call(this);
+ }
+
+ if (options.data) {
+ data = _utils.createFrame(options.data);
+ }
+
+ function execIteration(field, index, last) {
+ if (data) {
+ data.key = field;
+ data.index = index;
+ data.first = index === 0;
+ data.last = !!last;
+
+ if (contextPath) {
+ data.contextPath = contextPath + field;
+ }
+ }
+
+ ret = ret + fn(context[field], {
+ data: data,
+ blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])
+ });
+ }
+
+ if (context && typeof context === 'object') {
+ if (_utils.isArray(context)) {
+ for (var j = context.length; i < j; i++) {
+ if (i in context) {
+ execIteration(i, i, i === context.length - 1);
+ }
+ }
+ } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {
+ var newContext = [];
+ var iterator = context[Symbol.iterator]();
+ for (var it = iterator.next(); !it.done; it = iterator.next()) {
+ newContext.push(it.value);
+ }
+ context = newContext;
+ for (var j = context.length; i < j; i++) {
+ execIteration(i, i, i === context.length - 1);
+ }
+ } else {
+ (function () {
+ var priorKey = undefined;
+
+ Object.keys(context).forEach(function (key) {
+ // We're running the iterations one step out of sync so we can detect
+ // the last iteration without have to scan the object twice and create
+ // an itermediate keys array.
+ if (priorKey !== undefined) {
+ execIteration(priorKey, i - 1);
+ }
+ priorKey = key;
+ i++;
+ });
+ if (priorKey !== undefined) {
+ execIteration(priorKey, i - 1, true);
+ }
+ })();
+ }
+ }
+
+ if (i === 0) {
+ ret = inverse(this);
+ }
+
+ return ret;
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (each, each.exports));
+ return each.exports;
+}
+
+var helperMissing = {exports: {}};
+
+var hasRequiredHelperMissing;
+
+function requireHelperMissing () {
+ if (hasRequiredHelperMissing) return helperMissing.exports;
+ hasRequiredHelperMissing = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ exports['default'] = function (instance) {
+ instance.registerHelper('helperMissing', function () /* [args, ]options */{
+ if (arguments.length === 1) {
+ // A missing field in a {{foo}} construct.
+ return undefined;
+ } else {
+ // Someone is actually trying to call something, blow up.
+ throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"');
+ }
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (helperMissing, helperMissing.exports));
+ return helperMissing.exports;
+}
+
+var _if = {exports: {}};
+
+var hasRequired_if;
+
+function require_if () {
+ if (hasRequired_if) return _if.exports;
+ hasRequired_if = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _utils = requireUtils();
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ exports['default'] = function (instance) {
+ instance.registerHelper('if', function (conditional, options) {
+ if (arguments.length != 2) {
+ throw new _exception2['default']('#if requires exactly one argument');
+ }
+ if (_utils.isFunction(conditional)) {
+ conditional = conditional.call(this);
+ }
+
+ // Default behavior is to render the positive path if the value is truthy and not empty.
+ // The `includeZero` option may be set to treat the condtional as purely not empty based on the
+ // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.
+ if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {
+ return options.inverse(this);
+ } else {
+ return options.fn(this);
+ }
+ });
+
+ instance.registerHelper('unless', function (conditional, options) {
+ if (arguments.length != 2) {
+ throw new _exception2['default']('#unless requires exactly one argument');
+ }
+ return instance.helpers['if'].call(this, conditional, {
+ fn: options.inverse,
+ inverse: options.fn,
+ hash: options.hash
+ });
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (_if, _if.exports));
+ return _if.exports;
+}
+
+var log = {exports: {}};
+
+var hasRequiredLog;
+
+function requireLog () {
+ if (hasRequiredLog) return log.exports;
+ hasRequiredLog = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+
+ exports['default'] = function (instance) {
+ instance.registerHelper('log', function () /* message, options */{
+ var args = [undefined],
+ options = arguments[arguments.length - 1];
+ for (var i = 0; i < arguments.length - 1; i++) {
+ args.push(arguments[i]);
+ }
+
+ var level = 1;
+ if (options.hash.level != null) {
+ level = options.hash.level;
+ } else if (options.data && options.data.level != null) {
+ level = options.data.level;
+ }
+ args[0] = level;
+
+ instance.log.apply(instance, args);
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (log, log.exports));
+ return log.exports;
+}
+
+var lookup = {exports: {}};
+
+var hasRequiredLookup;
+
+function requireLookup () {
+ if (hasRequiredLookup) return lookup.exports;
+ hasRequiredLookup = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+
+ exports['default'] = function (instance) {
+ instance.registerHelper('lookup', function (obj, field, options) {
+ if (!obj) {
+ // Note for 5.0: Change to "obj == null" in 5.0
+ return obj;
+ }
+ return options.lookupProperty(obj, field);
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (lookup, lookup.exports));
+ return lookup.exports;
+}
+
+var _with = {exports: {}};
+
+var hasRequired_with;
+
+function require_with () {
+ if (hasRequired_with) return _with.exports;
+ hasRequired_with = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _utils = requireUtils();
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ exports['default'] = function (instance) {
+ instance.registerHelper('with', function (context, options) {
+ if (arguments.length != 2) {
+ throw new _exception2['default']('#with requires exactly one argument');
+ }
+ if (_utils.isFunction(context)) {
+ context = context.call(this);
+ }
+
+ var fn = options.fn;
+
+ if (!_utils.isEmpty(context)) {
+ var data = options.data;
+ if (options.data && options.ids) {
+ data = _utils.createFrame(options.data);
+ data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);
+ }
+
+ return fn(context, {
+ data: data,
+ blockParams: _utils.blockParams([context], [data && data.contextPath])
+ });
+ } else {
+ return options.inverse(this);
+ }
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (_with, _with.exports));
+ return _with.exports;
+}
+
+var hasRequiredHelpers$1;
+
+function requireHelpers$1 () {
+ if (hasRequiredHelpers$1) return helpers$1;
+ hasRequiredHelpers$1 = 1;
+
+ helpers$1.__esModule = true;
+ helpers$1.registerDefaultHelpers = registerDefaultHelpers;
+ helpers$1.moveHelperToHooks = moveHelperToHooks;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _helpersBlockHelperMissing = requireBlockHelperMissing();
+
+ var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);
+
+ var _helpersEach = requireEach();
+
+ var _helpersEach2 = _interopRequireDefault(_helpersEach);
+
+ var _helpersHelperMissing = requireHelperMissing();
+
+ var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);
+
+ var _helpersIf = require_if();
+
+ var _helpersIf2 = _interopRequireDefault(_helpersIf);
+
+ var _helpersLog = requireLog();
+
+ var _helpersLog2 = _interopRequireDefault(_helpersLog);
+
+ var _helpersLookup = requireLookup();
+
+ var _helpersLookup2 = _interopRequireDefault(_helpersLookup);
+
+ var _helpersWith = require_with();
+
+ var _helpersWith2 = _interopRequireDefault(_helpersWith);
+
+ function registerDefaultHelpers(instance) {
+ _helpersBlockHelperMissing2['default'](instance);
+ _helpersEach2['default'](instance);
+ _helpersHelperMissing2['default'](instance);
+ _helpersIf2['default'](instance);
+ _helpersLog2['default'](instance);
+ _helpersLookup2['default'](instance);
+ _helpersWith2['default'](instance);
+ }
+
+ function moveHelperToHooks(instance, helperName, keepHelper) {
+ if (instance.helpers[helperName]) {
+ instance.hooks[helperName] = instance.helpers[helperName];
+ if (!keepHelper) {
+ // Using delete is slow
+ instance.helpers[helperName] = undefined;
+ }
+ }
+ }
+
+ return helpers$1;
+}
+
+var decorators = {};
+
+var inline = {exports: {}};
+
+var hasRequiredInline;
+
+function requireInline () {
+ if (hasRequiredInline) return inline.exports;
+ hasRequiredInline = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+
+ var _utils = requireUtils();
+
+ exports['default'] = function (instance) {
+ instance.registerDecorator('inline', function (fn, props, container, options) {
+ var ret = fn;
+ if (!props.partials) {
+ props.partials = {};
+ ret = function (context, options) {
+ // Create a new partials stack frame prior to exec.
+ var original = container.partials;
+ container.partials = _utils.extend({}, original, props.partials);
+ var ret = fn(context, options);
+ container.partials = original;
+ return ret;
+ };
+ }
+
+ props.partials[options.args[0]] = options.fn;
+
+ return ret;
+ });
+ };
+
+ module.exports = exports['default'];
+
+ } (inline, inline.exports));
+ return inline.exports;
+}
+
+var hasRequiredDecorators;
+
+function requireDecorators () {
+ if (hasRequiredDecorators) return decorators;
+ hasRequiredDecorators = 1;
+
+ decorators.__esModule = true;
+ decorators.registerDefaultDecorators = registerDefaultDecorators;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _decoratorsInline = requireInline();
+
+ var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
+
+ function registerDefaultDecorators(instance) {
+ _decoratorsInline2['default'](instance);
+ }
+
+ return decorators;
+}
+
+var logger = {exports: {}};
+
+var hasRequiredLogger;
+
+function requireLogger () {
+ if (hasRequiredLogger) return logger.exports;
+ hasRequiredLogger = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+
+ var _utils = requireUtils();
+
+ var logger = {
+ methodMap: ['debug', 'info', 'warn', 'error'],
+ level: 'info',
+
+ // Maps a given level value to the `methodMap` indexes above.
+ lookupLevel: function lookupLevel(level) {
+ if (typeof level === 'string') {
+ var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());
+ if (levelMap >= 0) {
+ level = levelMap;
+ } else {
+ level = parseInt(level, 10);
+ }
+ }
+
+ return level;
+ },
+
+ // Can be overridden in the host environment
+ log: function log(level) {
+ level = logger.lookupLevel(level);
+
+ if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
+ var method = logger.methodMap[level];
+ // eslint-disable-next-line no-console
+ if (!console[method]) {
+ method = 'log';
+ }
+
+ for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ message[_key - 1] = arguments[_key];
+ }
+
+ console[method].apply(console, message); // eslint-disable-line no-console
+ }
+ }
+ };
+
+ exports['default'] = logger;
+ module.exports = exports['default'];
+
+ } (logger, logger.exports));
+ return logger.exports;
+}
+
+var protoAccess = {};
+
+var hasRequiredProtoAccess;
+
+function requireProtoAccess () {
+ if (hasRequiredProtoAccess) return protoAccess;
+ hasRequiredProtoAccess = 1;
+
+ protoAccess.__esModule = true;
+ protoAccess.createProtoAccessControl = createProtoAccessControl;
+ protoAccess.resultIsAllowed = resultIsAllowed;
+ protoAccess.resetLoggedProperties = resetLoggedProperties;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _utils = requireUtils();
+
+ var _logger = requireLogger();
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var loggedProperties = Object.create(null);
+
+ function createProtoAccessControl(runtimeOptions) {
+ // Create an object with "null"-prototype to avoid truthy results on
+ // prototype properties.
+ var propertyWhiteList = Object.create(null);
+ // eslint-disable-next-line no-proto
+ propertyWhiteList['__proto__'] = false;
+ _utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);
+
+ var methodWhiteList = Object.create(null);
+ methodWhiteList['constructor'] = false;
+ methodWhiteList['__defineGetter__'] = false;
+ methodWhiteList['__defineSetter__'] = false;
+ methodWhiteList['__lookupGetter__'] = false;
+ methodWhiteList['__lookupSetter__'] = false;
+ _utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);
+
+ return {
+ properties: {
+ whitelist: propertyWhiteList,
+ defaultValue: runtimeOptions.allowProtoPropertiesByDefault
+ },
+ methods: {
+ whitelist: methodWhiteList,
+ defaultValue: runtimeOptions.allowProtoMethodsByDefault
+ }
+ };
+ }
+
+ function resultIsAllowed(result, protoAccessControl, propertyName) {
+ if (typeof result === 'function') {
+ return checkWhiteList(protoAccessControl.methods, propertyName);
+ } else {
+ return checkWhiteList(protoAccessControl.properties, propertyName);
+ }
+ }
+
+ function checkWhiteList(protoAccessControlForType, propertyName) {
+ if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
+ return protoAccessControlForType.whitelist[propertyName] === true;
+ }
+ if (protoAccessControlForType.defaultValue !== undefined) {
+ return protoAccessControlForType.defaultValue;
+ }
+ logUnexpecedPropertyAccessOnce(propertyName);
+ return false;
+ }
+
+ function logUnexpecedPropertyAccessOnce(propertyName) {
+ if (loggedProperties[propertyName] !== true) {
+ loggedProperties[propertyName] = true;
+ _logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');
+ }
+ }
+
+ function resetLoggedProperties() {
+ Object.keys(loggedProperties).forEach(function (propertyName) {
+ delete loggedProperties[propertyName];
+ });
+ }
+
+ return protoAccess;
+}
+
+var hasRequiredBase$1;
+
+function requireBase$1 () {
+ if (hasRequiredBase$1) return base$1;
+ hasRequiredBase$1 = 1;
+
+ base$1.__esModule = true;
+ base$1.HandlebarsEnvironment = HandlebarsEnvironment;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _utils = requireUtils();
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ var _helpers = requireHelpers$1();
+
+ var _decorators = requireDecorators();
+
+ var _logger = requireLogger();
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _internalProtoAccess = requireProtoAccess();
+
+ var VERSION = '4.7.9';
+ base$1.VERSION = VERSION;
+ var COMPILER_REVISION = 8;
+ base$1.COMPILER_REVISION = COMPILER_REVISION;
+ var LAST_COMPATIBLE_COMPILER_REVISION = 7;
+
+ base$1.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;
+ var REVISION_CHANGES = {
+ 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
+ 2: '== 1.0.0-rc.3',
+ 3: '== 1.0.0-rc.4',
+ 4: '== 1.x.x',
+ 5: '== 2.0.0-alpha.x',
+ 6: '>= 2.0.0-beta.1',
+ 7: '>= 4.0.0 <4.3.0',
+ 8: '>= 4.3.0'
+ };
+
+ base$1.REVISION_CHANGES = REVISION_CHANGES;
+ var objectType = '[object Object]';
+
+ function HandlebarsEnvironment(helpers, partials, decorators) {
+ this.helpers = helpers || {};
+ this.partials = partials || {};
+ this.decorators = decorators || {};
+
+ _helpers.registerDefaultHelpers(this);
+ _decorators.registerDefaultDecorators(this);
+ }
+
+ HandlebarsEnvironment.prototype = {
+ constructor: HandlebarsEnvironment,
+
+ logger: _logger2['default'],
+ log: _logger2['default'].log,
+
+ registerHelper: function registerHelper(name, fn) {
+ if (_utils.toString.call(name) === objectType) {
+ if (fn) {
+ throw new _exception2['default']('Arg not supported with multiple helpers');
+ }
+ _utils.extend(this.helpers, name);
+ } else {
+ this.helpers[name] = fn;
+ }
+ },
+ unregisterHelper: function unregisterHelper(name) {
+ delete this.helpers[name];
+ },
+
+ registerPartial: function registerPartial(name, partial) {
+ if (_utils.toString.call(name) === objectType) {
+ _utils.extend(this.partials, name);
+ } else {
+ if (typeof partial === 'undefined') {
+ throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined');
+ }
+ this.partials[name] = partial;
+ }
+ },
+ unregisterPartial: function unregisterPartial(name) {
+ delete this.partials[name];
+ },
+
+ registerDecorator: function registerDecorator(name, fn) {
+ if (_utils.toString.call(name) === objectType) {
+ if (fn) {
+ throw new _exception2['default']('Arg not supported with multiple decorators');
+ }
+ _utils.extend(this.decorators, name);
+ } else {
+ this.decorators[name] = fn;
+ }
+ },
+ unregisterDecorator: function unregisterDecorator(name) {
+ delete this.decorators[name];
+ },
+ /**
+ * Reset the memory of illegal property accesses that have already been logged.
+ * @deprecated should only be used in handlebars test-cases
+ */
+ resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {
+ _internalProtoAccess.resetLoggedProperties();
+ }
+ };
+
+ var log = _logger2['default'].log;
+
+ base$1.log = log;
+ base$1.createFrame = _utils.createFrame;
+ base$1.logger = _logger2['default'];
+
+ return base$1;
+}
+
+var safeString = {exports: {}};
+
+var hasRequiredSafeString;
+
+function requireSafeString () {
+ if (hasRequiredSafeString) return safeString.exports;
+ hasRequiredSafeString = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ function SafeString(string) {
+ this.string = string;
+ }
+
+ SafeString.prototype.toString = SafeString.prototype.toHTML = function () {
+ return '' + this.string;
+ };
+
+ exports['default'] = SafeString;
+ module.exports = exports['default'];
+
+ } (safeString, safeString.exports));
+ return safeString.exports;
+}
+
+var runtime = {};
+
+var wrapHelper = {};
+
+var hasRequiredWrapHelper;
+
+function requireWrapHelper () {
+ if (hasRequiredWrapHelper) return wrapHelper;
+ hasRequiredWrapHelper = 1;
+
+ wrapHelper.__esModule = true;
+ wrapHelper.wrapHelper = wrapHelper$1;
+
+ function wrapHelper$1(helper, transformOptionsFn) {
+ if (typeof helper !== 'function') {
+ // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639
+ // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.
+ return helper;
+ }
+ var wrapper = function wrapper() /* dynamic arguments */{
+ var options = arguments[arguments.length - 1];
+ arguments[arguments.length - 1] = transformOptionsFn(options);
+ return helper.apply(this, arguments);
+ };
+ return wrapper;
+ }
+
+ return wrapHelper;
+}
+
+var hasRequiredRuntime;
+
+function requireRuntime () {
+ if (hasRequiredRuntime) return runtime;
+ hasRequiredRuntime = 1;
+
+ runtime.__esModule = true;
+ runtime.checkRevision = checkRevision;
+ runtime.template = template;
+ runtime.wrapProgram = wrapProgram;
+ runtime.resolvePartial = resolvePartial;
+ runtime.invokePartial = invokePartial;
+ runtime.noop = noop;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ // istanbul ignore next
+
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
+
+ var _utils = requireUtils();
+
+ var Utils = _interopRequireWildcard(_utils);
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ var _base = requireBase$1();
+
+ var _helpers = requireHelpers$1();
+
+ var _internalWrapHelper = requireWrapHelper();
+
+ var _internalProtoAccess = requireProtoAccess();
+
+ function checkRevision(compilerInfo) {
+ var compilerRevision = compilerInfo && compilerInfo[0] || 1,
+ currentRevision = _base.COMPILER_REVISION;
+
+ if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {
+ return;
+ }
+
+ if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {
+ var runtimeVersions = _base.REVISION_CHANGES[currentRevision],
+ compilerVersions = _base.REVISION_CHANGES[compilerRevision];
+ throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');
+ } else {
+ // Use the embedded version info since the runtime doesn't know about this revision yet
+ throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');
+ }
+ }
+
+ function template(templateSpec, env) {
+ /* istanbul ignore next */
+ if (!env) {
+ throw new _exception2['default']('No environment passed to template');
+ }
+ if (!templateSpec || !templateSpec.main) {
+ throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);
+ }
+
+ templateSpec.main.decorator = templateSpec.main_d;
+
+ // Note: Using env.VM references rather than local var references throughout this section to allow
+ // for external users to override these as pseudo-supported APIs.
+ env.VM.checkRevision(templateSpec.compiler);
+
+ // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)
+ var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;
+
+ function invokePartialWrapper(partial, context, options) {
+ if (options.hash) {
+ context = Utils.extend({}, context, options.hash);
+ if (options.ids) {
+ options.ids[0] = true;
+ }
+ }
+ partial = env.VM.resolvePartial.call(this, partial, context, options);
+
+ options.hooks = this.hooks;
+ options.protoAccessControl = this.protoAccessControl;
+
+ var result = env.VM.invokePartial.call(this, partial, context, options);
+
+ if (result == null && env.compile) {
+ options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
+ result = options.partials[options.name](context, options);
+ }
+ if (result != null) {
+ if (options.indent) {
+ var lines = result.split('\n');
+ for (var i = 0, l = lines.length; i < l; i++) {
+ if (!lines[i] && i + 1 === l) {
+ break;
+ }
+
+ lines[i] = options.indent + lines[i];
+ }
+ result = lines.join('\n');
+ }
+ return result;
+ } else {
+ throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');
+ }
+ }
+
+ // Just add water
+ var container = {
+ strict: function strict(obj, name, loc) {
+ if (!obj || !(name in obj)) {
+ throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
+ loc: loc
+ });
+ }
+ return container.lookupProperty(obj, name);
+ },
+ lookupProperty: function lookupProperty(parent, propertyName) {
+ var result = parent[propertyName];
+ if (result == null) {
+ return result;
+ }
+ if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
+ return result;
+ }
+
+ if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
+ return result;
+ }
+ return undefined;
+ },
+ lookup: function lookup(depths, name) {
+ var len = depths.length;
+ for (var i = 0; i < len; i++) {
+ var result = depths[i] && container.lookupProperty(depths[i], name);
+ if (result != null) {
+ return result;
+ }
+ }
+ },
+ lambda: function lambda(current, context) {
+ return typeof current === 'function' ? current.call(context) : current;
+ },
+
+ escapeExpression: Utils.escapeExpression,
+ invokePartial: invokePartialWrapper,
+
+ fn: function fn(i) {
+ var ret = templateSpec[i];
+ ret.decorator = templateSpec[i + '_d'];
+ return ret;
+ },
+
+ programs: [],
+ program: function program(i, data, declaredBlockParams, blockParams, depths) {
+ var programWrapper = this.programs[i],
+ fn = this.fn(i);
+ if (data || depths || blockParams || declaredBlockParams) {
+ programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);
+ } else if (!programWrapper) {
+ programWrapper = this.programs[i] = wrapProgram(this, i, fn);
+ }
+ return programWrapper;
+ },
+
+ data: function data(value, depth) {
+ while (value && depth--) {
+ value = value._parent;
+ }
+ return value;
+ },
+ mergeIfNeeded: function mergeIfNeeded(param, common) {
+ var obj = param || common;
+
+ if (param && common && param !== common) {
+ obj = Utils.extend({}, common, param);
+ }
+
+ return obj;
+ },
+ // An empty object to use as replacement for null-contexts
+ nullContext: Object.seal({}),
+
+ noop: env.VM.noop,
+ compilerInfo: templateSpec.compiler
+ };
+
+ function ret(context) {
+ var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+ var data = options.data;
+
+ ret._setup(options);
+ if (!options.partial && templateSpec.useData) {
+ data = initData(context, data);
+ }
+ var depths = undefined,
+ blockParams = templateSpec.useBlockParams ? [] : undefined;
+ if (templateSpec.useDepths) {
+ if (options.depths) {
+ depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;
+ } else {
+ depths = [context];
+ }
+ }
+
+ function main(context /*, options*/) {
+ return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
+ }
+
+ main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
+ return main(context, options);
+ }
+
+ ret.isTop = true;
+
+ ret._setup = function (options) {
+ if (!options.partial) {
+ var mergedHelpers = {};
+ addHelpers(mergedHelpers, env.helpers, container);
+ addHelpers(mergedHelpers, options.helpers, container);
+ container.helpers = mergedHelpers;
+
+ if (templateSpec.usePartial) {
+ // Use mergeIfNeeded here to prevent compiling global partials multiple times
+ container.partials = container.mergeIfNeeded(options.partials, env.partials);
+ }
+ if (templateSpec.usePartial || templateSpec.useDecorators) {
+ container.decorators = Utils.extend({}, env.decorators, options.decorators);
+ }
+
+ container.hooks = {};
+ container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
+
+ var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
+ _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
+ _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
+ } else {
+ container.protoAccessControl = options.protoAccessControl; // internal option
+ container.helpers = options.helpers;
+ container.partials = options.partials;
+ container.decorators = options.decorators;
+ container.hooks = options.hooks;
+ }
+ };
+
+ ret._child = function (i, data, blockParams, depths) {
+ if (templateSpec.useBlockParams && !blockParams) {
+ throw new _exception2['default']('must pass block params');
+ }
+ if (templateSpec.useDepths && !depths) {
+ throw new _exception2['default']('must pass parent depths');
+ }
+
+ return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);
+ };
+ return ret;
+ }
+
+ function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {
+ function prog(context) {
+ var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+ var currentDepths = depths;
+ if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {
+ currentDepths = [context].concat(depths);
+ }
+
+ return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);
+ }
+
+ prog = executeDecorators(fn, prog, container, depths, data, blockParams);
+
+ prog.program = i;
+ prog.depth = depths ? depths.length : 0;
+ prog.blockParams = declaredBlockParams || 0;
+ return prog;
+ }
+
+ /**
+ * This is currently part of the official API, therefore implementation details should not be changed.
+ */
+
+ function resolvePartial(partial, context, options) {
+ if (!partial) {
+ if (options.name === '@partial-block') {
+ partial = lookupOwnProperty(options.data, 'partial-block');
+ } else {
+ partial = lookupOwnProperty(options.partials, options.name);
+ }
+ } else if (!partial.call && !options.name) {
+ // This is a dynamic partial that returned a string
+ options.name = partial;
+ partial = lookupOwnProperty(options.partials, partial);
+ }
+ return partial;
+ }
+
+ function invokePartial(partial, context, options) {
+ // Use the current closure context to save the partial-block if this partial
+ var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');
+ options.partial = true;
+ if (options.ids) {
+ options.data.contextPath = options.ids[0] || options.data.contextPath;
+ }
+
+ var partialBlock = undefined;
+ if (options.fn && options.fn !== noop) {
+ (function () {
+ options.data = _base.createFrame(options.data);
+ // Wrapper function to get access to currentPartialBlock from the closure
+ var fn = options.fn;
+ partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {
+ var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+ // Restore the partial-block from the closure for the execution of the block
+ // i.e. the part inside the block of the partial call.
+ options.data = _base.createFrame(options.data);
+ options.data['partial-block'] = currentPartialBlock;
+ return fn(context, options);
+ };
+ if (fn.partials) {
+ options.partials = Utils.extend({}, options.partials, fn.partials);
+ }
+ })();
+ }
+
+ if (partial === undefined && partialBlock) {
+ partial = partialBlock;
+ }
+
+ if (partial === undefined) {
+ throw new _exception2['default']('The partial ' + options.name + ' could not be found');
+ } else if (partial instanceof Function) {
+ return partial(context, options);
+ }
+ }
+
+ function noop() {
+ return '';
+ }
+
+ function lookupOwnProperty(obj, name) {
+ if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {
+ return obj[name];
+ }
+ }
+
+ function initData(context, data) {
+ if (!data || !('root' in data)) {
+ data = data ? _base.createFrame(data) : {};
+ data.root = context;
+ }
+ return data;
+ }
+
+ function executeDecorators(fn, prog, container, depths, data, blockParams) {
+ if (fn.decorator) {
+ var props = {};
+ prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);
+ Utils.extend(prog, props);
+ }
+ return prog;
+ }
+
+ function addHelpers(mergedHelpers, helpers, container) {
+ if (!helpers) return;
+ Object.keys(helpers).forEach(function (helperName) {
+ var helper = helpers[helperName];
+ mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
+ });
+ }
+
+ function passLookupPropertyOption(helper, container) {
+ var lookupProperty = container.lookupProperty;
+ return _internalWrapHelper.wrapHelper(helper, function (options) {
+ options.lookupProperty = lookupProperty;
+ return options;
+ });
+ }
+
+ return runtime;
+}
+
+var noConflict = {exports: {}};
+
+/* global globalThis */
+
+var hasRequiredNoConflict;
+
+function requireNoConflict () {
+ if (hasRequiredNoConflict) return noConflict.exports;
+ hasRequiredNoConflict = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+
+ exports['default'] = function (Handlebars) {
+ /* istanbul ignore next */
+ // https://mathiasbynens.be/notes/globalthis
+ (function () {
+ if (typeof globalThis === 'object') return;
+ Object.prototype.__defineGetter__('__magic__', function () {
+ return this;
+ });
+ __magic__.globalThis = __magic__; // eslint-disable-line no-undef
+ delete Object.prototype.__magic__;
+ })();
+
+ var $Handlebars = globalThis.Handlebars;
+
+ /* istanbul ignore next */
+ Handlebars.noConflict = function () {
+ if (globalThis.Handlebars === Handlebars) {
+ globalThis.Handlebars = $Handlebars;
+ }
+ return Handlebars;
+ };
+ };
+
+ module.exports = exports['default'];
+
+ } (noConflict, noConflict.exports));
+ return noConflict.exports;
+}
+
+var hasRequiredHandlebars_runtime;
+
+function requireHandlebars_runtime () {
+ if (hasRequiredHandlebars_runtime) return handlebars_runtime.exports;
+ hasRequiredHandlebars_runtime = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ // istanbul ignore next
+
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
+
+ var _handlebarsBase = requireBase$1();
+
+ var base = _interopRequireWildcard(_handlebarsBase);
+
+ // Each of these augment the Handlebars object. No need to setup here.
+ // (This is done to easily share code between commonjs and browse envs)
+
+ var _handlebarsSafeString = requireSafeString();
+
+ var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
+
+ var _handlebarsException = requireException();
+
+ var _handlebarsException2 = _interopRequireDefault(_handlebarsException);
+
+ var _handlebarsUtils = requireUtils();
+
+ var Utils = _interopRequireWildcard(_handlebarsUtils);
+
+ var _handlebarsRuntime = requireRuntime();
+
+ var runtime = _interopRequireWildcard(_handlebarsRuntime);
+
+ var _handlebarsNoConflict = requireNoConflict();
+
+ var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
+
+ // For compatibility and usage outside of module systems, make the Handlebars object a namespace
+ function create() {
+ var hb = new base.HandlebarsEnvironment();
+
+ Utils.extend(hb, base);
+ hb.SafeString = _handlebarsSafeString2['default'];
+ hb.Exception = _handlebarsException2['default'];
+ hb.Utils = Utils;
+ hb.escapeExpression = Utils.escapeExpression;
+
+ hb.VM = runtime;
+ hb.template = function (spec) {
+ return runtime.template(spec, hb);
+ };
+
+ return hb;
+ }
+
+ var inst = create();
+ inst.create = create;
+
+ _handlebarsNoConflict2['default'](inst);
+
+ inst['default'] = inst;
+
+ exports['default'] = inst;
+ module.exports = exports['default'];
+
+ } (handlebars_runtime, handlebars_runtime.exports));
+ return handlebars_runtime.exports;
+}
+
+var ast = {exports: {}};
+
+var hasRequiredAst;
+
+function requireAst () {
+ if (hasRequiredAst) return ast.exports;
+ hasRequiredAst = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ var AST = {
+ // Public API used to evaluate derived attributes regarding AST nodes
+ helpers: {
+ // a mustache is definitely a helper if:
+ // * it is an eligible helper, and
+ // * it has at least one parameter or hash segment
+ helperExpression: function helperExpression(node) {
+ return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash);
+ },
+
+ scopedId: function scopedId(path) {
+ return (/^\.|this\b/.test(path.original)
+ );
+ },
+
+ // an ID is simple if it only has one part, and that part is not
+ // `..` or `this`.
+ simpleId: function simpleId(path) {
+ return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth;
+ }
+ }
+ };
+
+ // Must be exported as an object rather than the root of the module as the jison lexer
+ // must modify the object to operate properly.
+ exports['default'] = AST;
+ module.exports = exports['default'];
+
+ } (ast, ast.exports));
+ return ast.exports;
+}
+
+var base = {};
+
+var parser = {exports: {}};
+
+var hasRequiredParser;
+
+function requireParser () {
+ if (hasRequiredParser) return parser.exports;
+ hasRequiredParser = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ var handlebars = (function () {
+ var parser = { trace: function trace() {},
+ yy: {},
+ symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 },
+ terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" },
+ productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]],
+ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
+
+ var $0 = $$.length - 1;
+ switch (yystate) {
+ case 1:
+ return $$[$0 - 1];
+ case 2:
+ this.$ = yy.prepareProgram($$[$0]);
+ break;
+ case 3:
+ this.$ = $$[$0];
+ break;
+ case 4:
+ this.$ = $$[$0];
+ break;
+ case 5:
+ this.$ = $$[$0];
+ break;
+ case 6:
+ this.$ = $$[$0];
+ break;
+ case 7:
+ this.$ = $$[$0];
+ break;
+ case 8:
+ this.$ = $$[$0];
+ break;
+ case 9:
+ this.$ = {
+ type: 'CommentStatement',
+ value: yy.stripComment($$[$0]),
+ strip: yy.stripFlags($$[$0], $$[$0]),
+ loc: yy.locInfo(this._$)
+ };
+
+ break;
+ case 10:
+ this.$ = {
+ type: 'ContentStatement',
+ original: $$[$0],
+ value: $$[$0],
+ loc: yy.locInfo(this._$)
+ };
+
+ break;
+ case 11:
+ this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
+ break;
+ case 12:
+ this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] };
+ break;
+ case 13:
+ this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);
+ break;
+ case 14:
+ this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);
+ break;
+ case 15:
+ this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
+ break;
+ case 16:
+ this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
+ break;
+ case 17:
+ this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
+ break;
+ case 18:
+ this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] };
+ break;
+ case 19:
+ var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),
+ program = yy.prepareProgram([inverse], $$[$0 - 1].loc);
+ program.chained = true;
+
+ this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true };
+
+ break;
+ case 20:
+ this.$ = $$[$0];
+ break;
+ case 21:
+ this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) };
+ break;
+ case 22:
+ this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
+ break;
+ case 23:
+ this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
+ break;
+ case 24:
+ this.$ = {
+ type: 'PartialStatement',
+ name: $$[$0 - 3],
+ params: $$[$0 - 2],
+ hash: $$[$0 - 1],
+ indent: '',
+ strip: yy.stripFlags($$[$0 - 4], $$[$0]),
+ loc: yy.locInfo(this._$)
+ };
+
+ break;
+ case 25:
+ this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
+ break;
+ case 26:
+ this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) };
+ break;
+ case 27:
+ this.$ = $$[$0];
+ break;
+ case 28:
+ this.$ = $$[$0];
+ break;
+ case 29:
+ this.$ = {
+ type: 'SubExpression',
+ path: $$[$0 - 3],
+ params: $$[$0 - 2],
+ hash: $$[$0 - 1],
+ loc: yy.locInfo(this._$)
+ };
+
+ break;
+ case 30:
+ this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) };
+ break;
+ case 31:
+ this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) };
+ break;
+ case 32:
+ this.$ = yy.id($$[$0 - 1]);
+ break;
+ case 33:
+ this.$ = $$[$0];
+ break;
+ case 34:
+ this.$ = $$[$0];
+ break;
+ case 35:
+ this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) };
+ break;
+ case 36:
+ this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) };
+ break;
+ case 37:
+ this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) };
+ break;
+ case 38:
+ this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) };
+ break;
+ case 39:
+ this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) };
+ break;
+ case 40:
+ this.$ = $$[$0];
+ break;
+ case 41:
+ this.$ = $$[$0];
+ break;
+ case 42:
+ this.$ = yy.preparePath(true, $$[$0], this._$);
+ break;
+ case 43:
+ this.$ = yy.preparePath(false, $$[$0], this._$);
+ break;
+ case 44:
+ $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2];
+ break;
+ case 45:
+ this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }];
+ break;
+ case 46:
+ this.$ = [];
+ break;
+ case 47:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 48:
+ this.$ = [];
+ break;
+ case 49:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 50:
+ this.$ = [];
+ break;
+ case 51:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 58:
+ this.$ = [];
+ break;
+ case 59:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 64:
+ this.$ = [];
+ break;
+ case 65:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 70:
+ this.$ = [];
+ break;
+ case 71:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 78:
+ this.$ = [];
+ break;
+ case 79:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 82:
+ this.$ = [];
+ break;
+ case 83:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 86:
+ this.$ = [];
+ break;
+ case 87:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 90:
+ this.$ = [];
+ break;
+ case 91:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 94:
+ this.$ = [];
+ break;
+ case 95:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 98:
+ this.$ = [$$[$0]];
+ break;
+ case 99:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ case 100:
+ this.$ = [$$[$0]];
+ break;
+ case 101:
+ $$[$0 - 1].push($$[$0]);
+ break;
+ }
+ },
+ table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }],
+ defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] },
+ parseError: function parseError(str, hash) {
+ throw new Error(str);
+ },
+ parse: function parse(input) {
+ var self = this,
+ stack = [0],
+ vstack = [null],
+ lstack = [],
+ table = this.table,
+ yytext = "",
+ yylineno = 0,
+ yyleng = 0;
+ this.lexer.setInput(input);
+ this.lexer.yy = this.yy;
+ this.yy.lexer = this.lexer;
+ this.yy.parser = this;
+ if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {};
+ var yyloc = this.lexer.yylloc;
+ lstack.push(yyloc);
+ var ranges = this.lexer.options && this.lexer.options.ranges;
+ if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError;
+ function lex() {
+ var token;
+ token = self.lexer.lex() || 1;
+ if (typeof token !== "number") {
+ token = self.symbols_[token] || token;
+ }
+ return token;
+ }
+ var symbol,
+ state,
+ action,
+ r,
+ yyval = {},
+ p,
+ len,
+ newState,
+ expected;
+ while (true) {
+ state = stack[stack.length - 1];
+ if (this.defaultActions[state]) {
+ action = this.defaultActions[state];
+ } else {
+ if (symbol === null || typeof symbol == "undefined") {
+ symbol = lex();
+ }
+ action = table[state] && table[state][symbol];
+ }
+ if (typeof action === "undefined" || !action.length || !action[0]) {
+ var errStr = "";
+ {
+ expected = [];
+ for (p in table[state]) if (this.terminals_[p] && p > 2) {
+ expected.push("'" + this.terminals_[p] + "'");
+ }
+ if (this.lexer.showPosition) {
+ errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
+ } else {
+ errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
+ }
+ this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected });
+ }
+ }
+ if (action[0] instanceof Array && action.length > 1) {
+ throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
+ }
+ switch (action[0]) {
+ case 1:
+ stack.push(symbol);
+ vstack.push(this.lexer.yytext);
+ lstack.push(this.lexer.yylloc);
+ stack.push(action[1]);
+ symbol = null;
+ {
+ yyleng = this.lexer.yyleng;
+ yytext = this.lexer.yytext;
+ yylineno = this.lexer.yylineno;
+ yyloc = this.lexer.yylloc;
+ }
+ break;
+ case 2:
+ len = this.productions_[action[1]][1];
+ yyval.$ = vstack[vstack.length - len];
+ yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column };
+ if (ranges) {
+ yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
+ }
+ r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
+ if (typeof r !== "undefined") {
+ return r;
+ }
+ if (len) {
+ stack = stack.slice(0, -1 * len * 2);
+ vstack = vstack.slice(0, -1 * len);
+ lstack = lstack.slice(0, -1 * len);
+ }
+ stack.push(this.productions_[action[1]][0]);
+ vstack.push(yyval.$);
+ lstack.push(yyval._$);
+ newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+ stack.push(newState);
+ break;
+ case 3:
+ return true;
+ }
+ }
+ return true;
+ }
+ };
+ /* Jison generated lexer */
+ var lexer = (function () {
+ var lexer = { EOF: 1,
+ parseError: function parseError(str, hash) {
+ if (this.yy.parser) {
+ this.yy.parser.parseError(str, hash);
+ } else {
+ throw new Error(str);
+ }
+ },
+ setInput: function setInput(input) {
+ this._input = input;
+ this._more = this._less = this.done = false;
+ this.yylineno = this.yyleng = 0;
+ this.yytext = this.matched = this.match = '';
+ this.conditionStack = ['INITIAL'];
+ this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 };
+ if (this.options.ranges) this.yylloc.range = [0, 0];
+ this.offset = 0;
+ return this;
+ },
+ input: function input() {
+ var ch = this._input[0];
+ this.yytext += ch;
+ this.yyleng++;
+ this.offset++;
+ this.match += ch;
+ this.matched += ch;
+ var lines = ch.match(/(?:\r\n?|\n).*/g);
+ if (lines) {
+ this.yylineno++;
+ this.yylloc.last_line++;
+ } else {
+ this.yylloc.last_column++;
+ }
+ if (this.options.ranges) this.yylloc.range[1]++;
+
+ this._input = this._input.slice(1);
+ return ch;
+ },
+ unput: function unput(ch) {
+ var len = ch.length;
+ var lines = ch.split(/(?:\r\n?|\n)/g);
+
+ this._input = ch + this._input;
+ this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);
+ //this.yyleng -= len;
+ this.offset -= len;
+ var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+ this.match = this.match.substr(0, this.match.length - 1);
+ this.matched = this.matched.substr(0, this.matched.length - 1);
+
+ if (lines.length - 1) this.yylineno -= lines.length - 1;
+ var r = this.yylloc.range;
+
+ this.yylloc = { first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
+ };
+
+ if (this.options.ranges) {
+ this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+ }
+ return this;
+ },
+ more: function more() {
+ this._more = true;
+ return this;
+ },
+ less: function less(n) {
+ this.unput(this.match.slice(n));
+ },
+ pastInput: function pastInput() {
+ var past = this.matched.substr(0, this.matched.length - this.match.length);
+ return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
+ },
+ upcomingInput: function upcomingInput() {
+ var next = this.match;
+ if (next.length < 20) {
+ next += this._input.substr(0, 20 - next.length);
+ }
+ return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+ },
+ showPosition: function showPosition() {
+ var pre = this.pastInput();
+ var c = new Array(pre.length + 1).join("-");
+ return pre + this.upcomingInput() + "\n" + c + "^";
+ },
+ next: function next() {
+ if (this.done) {
+ return this.EOF;
+ }
+ if (!this._input) this.done = true;
+
+ var token, match, tempMatch, index, lines;
+ if (!this._more) {
+ this.yytext = '';
+ this.match = '';
+ }
+ var rules = this._currentRules();
+ for (var i = 0; i < rules.length; i++) {
+ tempMatch = this._input.match(this.rules[rules[i]]);
+ if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+ match = tempMatch;
+ index = i;
+ if (!this.options.flex) break;
+ }
+ }
+ if (match) {
+ lines = match[0].match(/(?:\r\n?|\n).*/g);
+ if (lines) this.yylineno += lines.length;
+ this.yylloc = { first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length };
+ this.yytext += match[0];
+ this.match += match[0];
+ this.matches = match;
+ this.yyleng = this.yytext.length;
+ if (this.options.ranges) {
+ this.yylloc.range = [this.offset, this.offset += this.yyleng];
+ }
+ this._more = false;
+ this._input = this._input.slice(match[0].length);
+ this.matched += match[0];
+ token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);
+ if (this.done && this._input) this.done = false;
+ if (token) return token;else return;
+ }
+ if (this._input === "") {
+ return this.EOF;
+ } else {
+ return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { text: "", token: null, line: this.yylineno });
+ }
+ },
+ lex: function lex() {
+ var r = this.next();
+ if (typeof r !== 'undefined') {
+ return r;
+ } else {
+ return this.lex();
+ }
+ },
+ begin: function begin(condition) {
+ this.conditionStack.push(condition);
+ },
+ popState: function popState() {
+ return this.conditionStack.pop();
+ },
+ _currentRules: function _currentRules() {
+ return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+ },
+ topState: function topState() {
+ return this.conditionStack[this.conditionStack.length - 2];
+ },
+ pushState: function begin(condition) {
+ this.begin(condition);
+ } };
+ lexer.options = {};
+ lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
+
+ function strip(start, end) {
+ return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);
+ }
+ switch ($avoiding_name_collisions) {
+ case 0:
+ if (yy_.yytext.slice(-2) === "\\\\") {
+ strip(0, 1);
+ this.begin("mu");
+ } else if (yy_.yytext.slice(-1) === "\\") {
+ strip(0, 1);
+ this.begin("emu");
+ } else {
+ this.begin("mu");
+ }
+ if (yy_.yytext) return 15;
+
+ break;
+ case 1:
+ return 15;
+ case 2:
+ this.popState();
+ return 15;
+ case 3:
+ this.begin('raw');return 15;
+ case 4:
+ this.popState();
+ // Should be using `this.topState()` below, but it currently
+ // returns the second top instead of the first top. Opened an
+ // issue about it at https://github.com/zaach/jison/issues/291
+ if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {
+ return 15;
+ } else {
+ strip(5, 9);
+ return 'END_RAW_BLOCK';
+ }
+ case 5:
+ return 15;
+ case 6:
+ this.popState();
+ return 14;
+ case 7:
+ return 65;
+ case 8:
+ return 68;
+ case 9:
+ return 19;
+ case 10:
+ this.popState();
+ this.begin('raw');
+ return 23;
+ case 11:
+ return 55;
+ case 12:
+ return 60;
+ case 13:
+ return 29;
+ case 14:
+ return 47;
+ case 15:
+ this.popState();return 44;
+ case 16:
+ this.popState();return 44;
+ case 17:
+ return 34;
+ case 18:
+ return 39;
+ case 19:
+ return 51;
+ case 20:
+ return 48;
+ case 21:
+ this.unput(yy_.yytext);
+ this.popState();
+ this.begin('com');
+
+ break;
+ case 22:
+ this.popState();
+ return 14;
+ case 23:
+ return 48;
+ case 24:
+ return 73;
+ case 25:
+ return 72;
+ case 26:
+ return 72;
+ case 27:
+ return 87;
+ case 28:
+ // ignore whitespace
+ break;
+ case 29:
+ this.popState();return 54;
+ case 30:
+ this.popState();return 33;
+ case 31:
+ yy_.yytext = strip(1, 2).replace(/\\"/g, '"');return 80;
+ case 32:
+ yy_.yytext = strip(1, 2).replace(/\\'/g, "'");return 80;
+ case 33:
+ return 85;
+ case 34:
+ return 82;
+ case 35:
+ return 82;
+ case 36:
+ return 83;
+ case 37:
+ return 84;
+ case 38:
+ return 81;
+ case 39:
+ return 75;
+ case 40:
+ return 77;
+ case 41:
+ return 72;
+ case 42:
+ yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, '$1');return 72;
+ case 43:
+ return 'INVALID';
+ case 44:
+ return 5;
+ }
+ };
+ lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^\/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/];
+ lexer.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } };
+ return lexer;
+ })();
+ parser.lexer = lexer;
+ function Parser() {
+ this.yy = {};
+ }Parser.prototype = parser;parser.Parser = Parser;
+ return new Parser();
+ })();exports["default"] = handlebars;
+ module.exports = exports["default"];
+
+ } (parser, parser.exports));
+ return parser.exports;
+}
+
+var whitespaceControl = {exports: {}};
+
+var visitor = {exports: {}};
+
+var hasRequiredVisitor;
+
+function requireVisitor () {
+ if (hasRequiredVisitor) return visitor.exports;
+ hasRequiredVisitor = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ function Visitor() {
+ this.parents = [];
+ }
+
+ Visitor.prototype = {
+ constructor: Visitor,
+ mutating: false,
+
+ // Visits a given value. If mutating, will replace the value if necessary.
+ acceptKey: function acceptKey(node, name) {
+ var value = this.accept(node[name]);
+ if (this.mutating) {
+ // Hacky sanity check: This may have a few false positives for type for the helper
+ // methods but will generally do the right thing without a lot of overhead.
+ if (value && !Visitor.prototype[value.type]) {
+ throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type);
+ }
+ node[name] = value;
+ }
+ },
+
+ // Performs an accept operation with added sanity check to ensure
+ // required keys are not removed.
+ acceptRequired: function acceptRequired(node, name) {
+ this.acceptKey(node, name);
+
+ if (!node[name]) {
+ throw new _exception2['default'](node.type + ' requires ' + name);
+ }
+ },
+
+ // Traverses a given array. If mutating, empty respnses will be removed
+ // for child elements.
+ acceptArray: function acceptArray(array) {
+ for (var i = 0, l = array.length; i < l; i++) {
+ this.acceptKey(array, i);
+
+ if (!array[i]) {
+ array.splice(i, 1);
+ i--;
+ l--;
+ }
+ }
+ },
+
+ accept: function accept(object) {
+ if (!object) {
+ return;
+ }
+
+ /* istanbul ignore next: Sanity code */
+ if (!this[object.type]) {
+ throw new _exception2['default']('Unknown type: ' + object.type, object);
+ }
+
+ if (this.current) {
+ this.parents.unshift(this.current);
+ }
+ this.current = object;
+
+ var ret = this[object.type](object);
+
+ this.current = this.parents.shift();
+
+ if (!this.mutating || ret) {
+ return ret;
+ } else if (ret !== false) {
+ return object;
+ }
+ },
+
+ Program: function Program(program) {
+ this.acceptArray(program.body);
+ },
+
+ MustacheStatement: visitSubExpression,
+ Decorator: visitSubExpression,
+
+ BlockStatement: visitBlock,
+ DecoratorBlock: visitBlock,
+
+ PartialStatement: visitPartial,
+ PartialBlockStatement: function PartialBlockStatement(partial) {
+ visitPartial.call(this, partial);
+
+ this.acceptKey(partial, 'program');
+ },
+
+ ContentStatement: function ContentStatement() /* content */{},
+ CommentStatement: function CommentStatement() /* comment */{},
+
+ SubExpression: visitSubExpression,
+
+ PathExpression: function PathExpression() /* path */{},
+
+ StringLiteral: function StringLiteral() /* string */{},
+ NumberLiteral: function NumberLiteral() /* number */{},
+ BooleanLiteral: function BooleanLiteral() /* bool */{},
+ UndefinedLiteral: function UndefinedLiteral() /* literal */{},
+ NullLiteral: function NullLiteral() /* literal */{},
+
+ Hash: function Hash(hash) {
+ this.acceptArray(hash.pairs);
+ },
+ HashPair: function HashPair(pair) {
+ this.acceptRequired(pair, 'value');
+ }
+ };
+
+ function visitSubExpression(mustache) {
+ this.acceptRequired(mustache, 'path');
+ this.acceptArray(mustache.params);
+ this.acceptKey(mustache, 'hash');
+ }
+ function visitBlock(block) {
+ visitSubExpression.call(this, block);
+
+ this.acceptKey(block, 'program');
+ this.acceptKey(block, 'inverse');
+ }
+ function visitPartial(partial) {
+ this.acceptRequired(partial, 'name');
+ this.acceptArray(partial.params);
+ this.acceptKey(partial, 'hash');
+ }
+
+ exports['default'] = Visitor;
+ module.exports = exports['default'];
+
+ } (visitor, visitor.exports));
+ return visitor.exports;
+}
+
+var hasRequiredWhitespaceControl;
+
+function requireWhitespaceControl () {
+ if (hasRequiredWhitespaceControl) return whitespaceControl.exports;
+ hasRequiredWhitespaceControl = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _visitor = requireVisitor();
+
+ var _visitor2 = _interopRequireDefault(_visitor);
+
+ function WhitespaceControl() {
+ var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ this.options = options;
+ }
+ WhitespaceControl.prototype = new _visitor2['default']();
+
+ WhitespaceControl.prototype.Program = function (program) {
+ var doStandalone = !this.options.ignoreStandalone;
+
+ var isRoot = !this.isRootSeen;
+ this.isRootSeen = true;
+
+ var body = program.body;
+ for (var i = 0, l = body.length; i < l; i++) {
+ var current = body[i],
+ strip = this.accept(current);
+
+ if (!strip) {
+ continue;
+ }
+
+ var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),
+ _isNextWhitespace = isNextWhitespace(body, i, isRoot),
+ openStandalone = strip.openStandalone && _isPrevWhitespace,
+ closeStandalone = strip.closeStandalone && _isNextWhitespace,
+ inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;
+
+ if (strip.close) {
+ omitRight(body, i, true);
+ }
+ if (strip.open) {
+ omitLeft(body, i, true);
+ }
+
+ if (doStandalone && inlineStandalone) {
+ omitRight(body, i);
+
+ if (omitLeft(body, i)) {
+ // If we are on a standalone node, save the indent info for partials
+ if (current.type === 'PartialStatement') {
+ // Pull out the whitespace from the final line
+ current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1];
+ }
+ }
+ }
+ if (doStandalone && openStandalone) {
+ omitRight((current.program || current.inverse).body);
+
+ // Strip out the previous content node if it's whitespace only
+ omitLeft(body, i);
+ }
+ if (doStandalone && closeStandalone) {
+ // Always strip the next node
+ omitRight(body, i);
+
+ omitLeft((current.inverse || current.program).body);
+ }
+ }
+
+ return program;
+ };
+
+ WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {
+ this.accept(block.program);
+ this.accept(block.inverse);
+
+ // Find the inverse program that is involed with whitespace stripping.
+ var program = block.program || block.inverse,
+ inverse = block.program && block.inverse,
+ firstInverse = inverse,
+ lastInverse = inverse;
+
+ if (inverse && inverse.chained) {
+ firstInverse = inverse.body[0].program;
+
+ // Walk the inverse chain to find the last inverse that is actually in the chain.
+ while (lastInverse.chained) {
+ lastInverse = lastInverse.body[lastInverse.body.length - 1].program;
+ }
+ }
+
+ var strip = {
+ open: block.openStrip.open,
+ close: block.closeStrip.close,
+
+ // Determine the standalone candiacy. Basically flag our content as being possibly standalone
+ // so our parent can determine if we actually are standalone
+ openStandalone: isNextWhitespace(program.body),
+ closeStandalone: isPrevWhitespace((firstInverse || program).body)
+ };
+
+ if (block.openStrip.close) {
+ omitRight(program.body, null, true);
+ }
+
+ if (inverse) {
+ var inverseStrip = block.inverseStrip;
+
+ if (inverseStrip.open) {
+ omitLeft(program.body, null, true);
+ }
+
+ if (inverseStrip.close) {
+ omitRight(firstInverse.body, null, true);
+ }
+ if (block.closeStrip.open) {
+ omitLeft(lastInverse.body, null, true);
+ }
+
+ // Find standalone else statments
+ if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {
+ omitLeft(program.body);
+ omitRight(firstInverse.body);
+ }
+ } else if (block.closeStrip.open) {
+ omitLeft(program.body, null, true);
+ }
+
+ return strip;
+ };
+
+ WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {
+ return mustache.strip;
+ };
+
+ WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {
+ /* istanbul ignore next */
+ var strip = node.strip || {};
+ return {
+ inlineStandalone: true,
+ open: strip.open,
+ close: strip.close
+ };
+ };
+
+ function isPrevWhitespace(body, i, isRoot) {
+ if (i === undefined) {
+ i = body.length;
+ }
+
+ // Nodes that end with newlines are considered whitespace (but are special
+ // cased for strip operations)
+ var prev = body[i - 1],
+ sibling = body[i - 2];
+ if (!prev) {
+ return isRoot;
+ }
+
+ if (prev.type === 'ContentStatement') {
+ return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original);
+ }
+ }
+ function isNextWhitespace(body, i, isRoot) {
+ if (i === undefined) {
+ i = -1;
+ }
+
+ var next = body[i + 1],
+ sibling = body[i + 2];
+ if (!next) {
+ return isRoot;
+ }
+
+ if (next.type === 'ContentStatement') {
+ return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original);
+ }
+ }
+
+ // Marks the node to the right of the position as omitted.
+ // I.e. {{foo}}' ' will mark the ' ' node as omitted.
+ //
+ // If i is undefined, then the first child will be marked as such.
+ //
+ // If mulitple is truthy then all whitespace will be stripped out until non-whitespace
+ // content is met.
+ function omitRight(body, i, multiple) {
+ var current = body[i == null ? 0 : i + 1];
+ if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {
+ return;
+ }
+
+ var original = current.value;
+ current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, '');
+ current.rightStripped = current.value !== original;
+ }
+
+ // Marks the node to the left of the position as omitted.
+ // I.e. ' '{{foo}} will mark the ' ' node as omitted.
+ //
+ // If i is undefined then the last child will be marked as such.
+ //
+ // If mulitple is truthy then all whitespace will be stripped out until non-whitespace
+ // content is met.
+ function omitLeft(body, i, multiple) {
+ var current = body[i == null ? body.length - 1 : i - 1];
+ if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {
+ return;
+ }
+
+ // We omit the last node if it's whitespace only and not preceded by a non-content node.
+ var original = current.value;
+ current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, '');
+ current.leftStripped = current.value !== original;
+ return current.leftStripped;
+ }
+
+ exports['default'] = WhitespaceControl;
+ module.exports = exports['default'];
+
+ } (whitespaceControl, whitespaceControl.exports));
+ return whitespaceControl.exports;
+}
+
+var helpers = {};
+
+var hasRequiredHelpers;
+
+function requireHelpers () {
+ if (hasRequiredHelpers) return helpers;
+ hasRequiredHelpers = 1;
+
+ helpers.__esModule = true;
+ helpers.SourceLocation = SourceLocation;
+ helpers.id = id;
+ helpers.stripFlags = stripFlags;
+ helpers.stripComment = stripComment;
+ helpers.preparePath = preparePath;
+ helpers.prepareMustache = prepareMustache;
+ helpers.prepareRawBlock = prepareRawBlock;
+ helpers.prepareBlock = prepareBlock;
+ helpers.prepareProgram = prepareProgram;
+ helpers.preparePartialBlock = preparePartialBlock;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ function validateClose(open, close) {
+ close = close.path ? close.path.original : close;
+
+ if (open.path.original !== close) {
+ var errorNode = { loc: open.path.loc };
+
+ throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode);
+ }
+ }
+
+ function SourceLocation(source, locInfo) {
+ this.source = source;
+ this.start = {
+ line: locInfo.first_line,
+ column: locInfo.first_column
+ };
+ this.end = {
+ line: locInfo.last_line,
+ column: locInfo.last_column
+ };
+ }
+
+ function id(token) {
+ if (/^\[.*\]$/.test(token)) {
+ return token.substring(1, token.length - 1);
+ } else {
+ return token;
+ }
+ }
+
+ function stripFlags(open, close) {
+ return {
+ open: open.charAt(2) === '~',
+ close: close.charAt(close.length - 3) === '~'
+ };
+ }
+
+ function stripComment(comment) {
+ return comment.replace(/^\{\{~?!-?-?/, '').replace(/-?-?~?\}\}$/, '');
+ }
+
+ function preparePath(data, parts, loc) {
+ loc = this.locInfo(loc);
+
+ var original = data ? '@' : '',
+ dig = [],
+ depth = 0;
+
+ for (var i = 0, l = parts.length; i < l; i++) {
+ var part = parts[i].part,
+
+ // If we have [] syntax then we do not treat path references as operators,
+ // i.e. foo.[this] resolves to approximately context.foo['this']
+ isLiteral = parts[i].original !== part;
+ original += (parts[i].separator || '') + part;
+
+ if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {
+ if (dig.length > 0) {
+ throw new _exception2['default']('Invalid path: ' + original, { loc: loc });
+ } else if (part === '..') {
+ depth++;
+ }
+ } else {
+ dig.push(part);
+ }
+ }
+
+ return {
+ type: 'PathExpression',
+ data: data,
+ depth: depth,
+ parts: dig,
+ original: original,
+ loc: loc
+ };
+ }
+
+ function prepareMustache(path, params, hash, open, strip, locInfo) {
+ // Must use charAt to support IE pre-10
+ var escapeFlag = open.charAt(3) || open.charAt(2),
+ escaped = escapeFlag !== '{' && escapeFlag !== '&';
+
+ var decorator = /\*/.test(open);
+ return {
+ type: decorator ? 'Decorator' : 'MustacheStatement',
+ path: path,
+ params: params,
+ hash: hash,
+ escaped: escaped,
+ strip: strip,
+ loc: this.locInfo(locInfo)
+ };
+ }
+
+ function prepareRawBlock(openRawBlock, contents, close, locInfo) {
+ validateClose(openRawBlock, close);
+
+ locInfo = this.locInfo(locInfo);
+ var program = {
+ type: 'Program',
+ body: contents,
+ strip: {},
+ loc: locInfo
+ };
+
+ return {
+ type: 'BlockStatement',
+ path: openRawBlock.path,
+ params: openRawBlock.params,
+ hash: openRawBlock.hash,
+ program: program,
+ openStrip: {},
+ inverseStrip: {},
+ closeStrip: {},
+ loc: locInfo
+ };
+ }
+
+ function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {
+ if (close && close.path) {
+ validateClose(openBlock, close);
+ }
+
+ var decorator = /\*/.test(openBlock.open);
+
+ program.blockParams = openBlock.blockParams;
+
+ var inverse = undefined,
+ inverseStrip = undefined;
+
+ if (inverseAndProgram) {
+ if (decorator) {
+ throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram);
+ }
+
+ if (inverseAndProgram.chain) {
+ inverseAndProgram.program.body[0].closeStrip = close.strip;
+ }
+
+ inverseStrip = inverseAndProgram.strip;
+ inverse = inverseAndProgram.program;
+ }
+
+ if (inverted) {
+ inverted = inverse;
+ inverse = program;
+ program = inverted;
+ }
+
+ return {
+ type: decorator ? 'DecoratorBlock' : 'BlockStatement',
+ path: openBlock.path,
+ params: openBlock.params,
+ hash: openBlock.hash,
+ program: program,
+ inverse: inverse,
+ openStrip: openBlock.strip,
+ inverseStrip: inverseStrip,
+ closeStrip: close && close.strip,
+ loc: this.locInfo(locInfo)
+ };
+ }
+
+ function prepareProgram(statements, loc) {
+ if (!loc && statements.length) {
+ var firstLoc = statements[0].loc,
+ lastLoc = statements[statements.length - 1].loc;
+
+ /* istanbul ignore else */
+ if (firstLoc && lastLoc) {
+ loc = {
+ source: firstLoc.source,
+ start: {
+ line: firstLoc.start.line,
+ column: firstLoc.start.column
+ },
+ end: {
+ line: lastLoc.end.line,
+ column: lastLoc.end.column
+ }
+ };
+ }
+ }
+
+ return {
+ type: 'Program',
+ body: statements,
+ strip: {},
+ loc: loc
+ };
+ }
+
+ function preparePartialBlock(open, program, close, locInfo) {
+ validateClose(open, close);
+
+ return {
+ type: 'PartialBlockStatement',
+ name: open.path,
+ params: open.params,
+ hash: open.hash,
+ program: program,
+ openStrip: open.strip,
+ closeStrip: close && close.strip,
+ loc: this.locInfo(locInfo)
+ };
+ }
+
+ return helpers;
+}
+
+var hasRequiredBase;
+
+function requireBase () {
+ if (hasRequiredBase) return base;
+ hasRequiredBase = 1;
+
+ base.__esModule = true;
+ base.parseWithoutProcessing = parseWithoutProcessing;
+ base.parse = parse;
+ // istanbul ignore next
+
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }
+
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _parser = requireParser();
+
+ var _parser2 = _interopRequireDefault(_parser);
+
+ var _whitespaceControl = requireWhitespaceControl();
+
+ var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
+
+ var _helpers = requireHelpers();
+
+ var Helpers = _interopRequireWildcard(_helpers);
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ var _utils = requireUtils();
+
+ base.parser = _parser2['default'];
+
+ var yy = {};
+ _utils.extend(yy, Helpers);
+
+ function parseWithoutProcessing(input, options) {
+ // Just return if an already-compiled AST was passed in.
+ if (input.type === 'Program') {
+ // When a pre-parsed AST is passed in, validate all node values to prevent
+ // code injection via type-confused literals.
+ validateInputAst(input);
+ return input;
+ }
+
+ _parser2['default'].yy = yy;
+
+ // Altering the shared object here, but this is ok as parser is a sync operation
+ yy.locInfo = function (locInfo) {
+ return new yy.SourceLocation(options && options.srcName, locInfo);
+ };
+
+ var ast = _parser2['default'].parse(input);
+
+ return ast;
+ }
+
+ function parse(input, options) {
+ var ast = parseWithoutProcessing(input, options);
+ var strip = new _whitespaceControl2['default'](options);
+
+ return strip.accept(ast);
+ }
+
+ function validateInputAst(ast) {
+ validateAstNode(ast);
+ }
+
+ function validateAstNode(node) {
+ if (node == null) {
+ return;
+ }
+
+ if (Array.isArray(node)) {
+ node.forEach(validateAstNode);
+ return;
+ }
+
+ if (typeof node !== 'object') {
+ return;
+ }
+
+ if (node.type === 'PathExpression') {
+ if (!isValidDepth(node.depth)) {
+ throw new _exception2['default']('Invalid AST: PathExpression.depth must be an integer');
+ }
+ if (!Array.isArray(node.parts)) {
+ throw new _exception2['default']('Invalid AST: PathExpression.parts must be an array');
+ }
+ for (var i = 0; i < node.parts.length; i++) {
+ if (typeof node.parts[i] !== 'string') {
+ throw new _exception2['default']('Invalid AST: PathExpression.parts must only contain strings');
+ }
+ }
+ } else if (node.type === 'NumberLiteral') {
+ if (typeof node.value !== 'number' || !isFinite(node.value)) {
+ throw new _exception2['default']('Invalid AST: NumberLiteral.value must be a number');
+ }
+ } else if (node.type === 'BooleanLiteral') {
+ if (typeof node.value !== 'boolean') {
+ throw new _exception2['default']('Invalid AST: BooleanLiteral.value must be a boolean');
+ }
+ }
+
+ Object.keys(node).forEach(function (propertyName) {
+ if (propertyName === 'loc') {
+ return;
+ }
+ validateAstNode(node[propertyName]);
+ });
+ }
+
+ function isValidDepth(depth) {
+ return typeof depth === 'number' && isFinite(depth) && Math.floor(depth) === depth && depth >= 0;
+ }
+
+ return base;
+}
+
+var compiler = {};
+
+/* eslint-disable new-cap */
+
+var hasRequiredCompiler;
+
+function requireCompiler () {
+ if (hasRequiredCompiler) return compiler;
+ hasRequiredCompiler = 1;
+
+ compiler.__esModule = true;
+ compiler.Compiler = Compiler;
+ compiler.precompile = precompile;
+ compiler.compile = compile;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ var _utils = requireUtils();
+
+ var _ast = requireAst();
+
+ var _ast2 = _interopRequireDefault(_ast);
+
+ var slice = [].slice;
+
+ function Compiler() {}
+
+ // the foundHelper register will disambiguate helper lookup from finding a
+ // function in a context. This is necessary for mustache compatibility, which
+ // requires that context functions in blocks are evaluated by blockHelperMissing,
+ // and then proceed as if the resulting value was provided to blockHelperMissing.
+
+ Compiler.prototype = {
+ compiler: Compiler,
+
+ equals: function equals(other) {
+ var len = this.opcodes.length;
+ if (other.opcodes.length !== len) {
+ return false;
+ }
+
+ for (var i = 0; i < len; i++) {
+ var opcode = this.opcodes[i],
+ otherOpcode = other.opcodes[i];
+ if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {
+ return false;
+ }
+ }
+
+ // We know that length is the same between the two arrays because they are directly tied
+ // to the opcode behavior above.
+ len = this.children.length;
+ for (var i = 0; i < len; i++) {
+ if (!this.children[i].equals(other.children[i])) {
+ return false;
+ }
+ }
+
+ return true;
+ },
+
+ guid: 0,
+
+ compile: function compile(program, options) {
+ this.sourceNode = [];
+ this.opcodes = [];
+ this.children = [];
+ this.options = options;
+ this.stringParams = options.stringParams;
+ this.trackIds = options.trackIds;
+
+ options.blockParams = options.blockParams || [];
+
+ options.knownHelpers = _utils.extend(Object.create(null), {
+ helperMissing: true,
+ blockHelperMissing: true,
+ each: true,
+ 'if': true,
+ unless: true,
+ 'with': true,
+ log: true,
+ lookup: true
+ }, options.knownHelpers);
+
+ return this.accept(program);
+ },
+
+ compileProgram: function compileProgram(program) {
+ var childCompiler = new this.compiler(),
+ // eslint-disable-line new-cap
+ result = childCompiler.compile(program, this.options),
+ guid = this.guid++;
+
+ this.usePartial = this.usePartial || result.usePartial;
+
+ this.children[guid] = result;
+ this.useDepths = this.useDepths || result.useDepths;
+
+ return guid;
+ },
+
+ accept: function accept(node) {
+ /* istanbul ignore next: Sanity code */
+ if (!this[node.type]) {
+ throw new _exception2['default']('Unknown type: ' + node.type, node);
+ }
+
+ this.sourceNode.unshift(node);
+ var ret = this[node.type](node);
+ this.sourceNode.shift();
+ return ret;
+ },
+
+ Program: function Program(program) {
+ this.options.blockParams.unshift(program.blockParams);
+
+ var body = program.body,
+ bodyLength = body.length;
+ for (var i = 0; i < bodyLength; i++) {
+ this.accept(body[i]);
+ }
+
+ this.options.blockParams.shift();
+
+ this.isSimple = bodyLength === 1;
+ this.blockParams = program.blockParams ? program.blockParams.length : 0;
+
+ return this;
+ },
+
+ BlockStatement: function BlockStatement(block) {
+ transformLiteralToPath(block);
+
+ var program = block.program,
+ inverse = block.inverse;
+
+ program = program && this.compileProgram(program);
+ inverse = inverse && this.compileProgram(inverse);
+
+ var type = this.classifySexpr(block);
+
+ if (type === 'helper') {
+ this.helperSexpr(block, program, inverse);
+ } else if (type === 'simple') {
+ this.simpleSexpr(block);
+
+ // now that the simple mustache is resolved, we need to
+ // evaluate it by executing `blockHelperMissing`
+ this.opcode('pushProgram', program);
+ this.opcode('pushProgram', inverse);
+ this.opcode('emptyHash');
+ this.opcode('blockValue', block.path.original);
+ } else {
+ this.ambiguousSexpr(block, program, inverse);
+
+ // now that the simple mustache is resolved, we need to
+ // evaluate it by executing `blockHelperMissing`
+ this.opcode('pushProgram', program);
+ this.opcode('pushProgram', inverse);
+ this.opcode('emptyHash');
+ this.opcode('ambiguousBlockValue');
+ }
+
+ this.opcode('append');
+ },
+
+ DecoratorBlock: function DecoratorBlock(decorator) {
+ var program = decorator.program && this.compileProgram(decorator.program);
+ var params = this.setupFullMustacheParams(decorator, program, undefined),
+ path = decorator.path;
+
+ this.useDecorators = true;
+ this.opcode('registerDecorator', params.length, path.original);
+ },
+
+ PartialStatement: function PartialStatement(partial) {
+ this.usePartial = true;
+
+ var program = partial.program;
+ if (program) {
+ program = this.compileProgram(partial.program);
+ }
+
+ var params = partial.params;
+ if (params.length > 1) {
+ throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial);
+ } else if (!params.length) {
+ if (this.options.explicitPartialContext) {
+ this.opcode('pushLiteral', 'undefined');
+ } else {
+ params.push({ type: 'PathExpression', parts: [], depth: 0 });
+ }
+ }
+
+ var partialName = partial.name.original,
+ isDynamic = partial.name.type === 'SubExpression';
+ if (isDynamic) {
+ this.accept(partial.name);
+ }
+
+ this.setupFullMustacheParams(partial, program, undefined, true);
+
+ var indent = partial.indent || '';
+ if (this.options.preventIndent && indent) {
+ this.opcode('appendContent', indent);
+ indent = '';
+ }
+
+ this.opcode('invokePartial', isDynamic, partialName, indent);
+ this.opcode('append');
+ },
+ PartialBlockStatement: function PartialBlockStatement(partialBlock) {
+ this.PartialStatement(partialBlock);
+ },
+
+ MustacheStatement: function MustacheStatement(mustache) {
+ this.SubExpression(mustache);
+
+ if (mustache.escaped && !this.options.noEscape) {
+ this.opcode('appendEscaped');
+ } else {
+ this.opcode('append');
+ }
+ },
+ Decorator: function Decorator(decorator) {
+ this.DecoratorBlock(decorator);
+ },
+
+ ContentStatement: function ContentStatement(content) {
+ if (content.value) {
+ this.opcode('appendContent', content.value);
+ }
+ },
+
+ CommentStatement: function CommentStatement() {},
+
+ SubExpression: function SubExpression(sexpr) {
+ transformLiteralToPath(sexpr);
+ var type = this.classifySexpr(sexpr);
+
+ if (type === 'simple') {
+ this.simpleSexpr(sexpr);
+ } else if (type === 'helper') {
+ this.helperSexpr(sexpr);
+ } else {
+ this.ambiguousSexpr(sexpr);
+ }
+ },
+ ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) {
+ var path = sexpr.path,
+ name = path.parts[0],
+ isBlock = program != null || inverse != null;
+
+ this.opcode('getContext', path.depth);
+
+ this.opcode('pushProgram', program);
+ this.opcode('pushProgram', inverse);
+
+ path.strict = true;
+ this.accept(path);
+
+ this.opcode('invokeAmbiguous', name, isBlock);
+ },
+
+ simpleSexpr: function simpleSexpr(sexpr) {
+ var path = sexpr.path;
+ path.strict = true;
+ this.accept(path);
+ this.opcode('resolvePossibleLambda');
+ },
+
+ helperSexpr: function helperSexpr(sexpr, program, inverse) {
+ var params = this.setupFullMustacheParams(sexpr, program, inverse),
+ path = sexpr.path,
+ name = path.parts[0];
+
+ if (this.options.knownHelpers[name]) {
+ this.opcode('invokeKnownHelper', params.length, name);
+ } else if (this.options.knownHelpersOnly) {
+ throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr);
+ } else {
+ path.strict = true;
+ path.falsy = true;
+
+ this.accept(path);
+ this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path));
+ }
+ },
+
+ PathExpression: function PathExpression(path) {
+ this.addDepth(path.depth);
+ this.opcode('getContext', path.depth);
+
+ var name = path.parts[0],
+ scoped = _ast2['default'].helpers.scopedId(path),
+ blockParamId = !path.depth && !scoped && this.blockParamIndex(name);
+
+ if (blockParamId) {
+ this.opcode('lookupBlockParam', blockParamId, path.parts);
+ } else if (!name) {
+ // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`
+ this.opcode('pushContext');
+ } else if (path.data) {
+ this.options.data = true;
+ this.opcode('lookupData', path.depth, path.parts, path.strict);
+ } else {
+ this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped);
+ }
+ },
+
+ StringLiteral: function StringLiteral(string) {
+ this.opcode('pushString', string.value);
+ },
+
+ NumberLiteral: function NumberLiteral(number) {
+ this.opcode('pushLiteral', number.value);
+ },
+
+ BooleanLiteral: function BooleanLiteral(bool) {
+ this.opcode('pushLiteral', bool.value);
+ },
+
+ UndefinedLiteral: function UndefinedLiteral() {
+ this.opcode('pushLiteral', 'undefined');
+ },
+
+ NullLiteral: function NullLiteral() {
+ this.opcode('pushLiteral', 'null');
+ },
+
+ Hash: function Hash(hash) {
+ var pairs = hash.pairs,
+ i = 0,
+ l = pairs.length;
+
+ this.opcode('pushHash');
+
+ for (; i < l; i++) {
+ this.pushParam(pairs[i].value);
+ }
+ while (i--) {
+ this.opcode('assignToHash', pairs[i].key);
+ }
+ this.opcode('popHash');
+ },
+
+ // HELPERS
+ opcode: function opcode(name) {
+ this.opcodes.push({
+ opcode: name,
+ args: slice.call(arguments, 1),
+ loc: this.sourceNode[0].loc
+ });
+ },
+
+ addDepth: function addDepth(depth) {
+ if (!depth) {
+ return;
+ }
+
+ this.useDepths = true;
+ },
+
+ classifySexpr: function classifySexpr(sexpr) {
+ var isSimple = _ast2['default'].helpers.simpleId(sexpr.path);
+
+ var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);
+
+ // a mustache is an eligible helper if:
+ // * its id is simple (a single part, not `this` or `..`)
+ var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr);
+
+ // if a mustache is an eligible helper but not a definite
+ // helper, it is ambiguous, and will be resolved in a later
+ // pass or at runtime.
+ var isEligible = !isBlockParam && (isHelper || isSimple);
+
+ // if ambiguous, we can possibly resolve the ambiguity now
+ // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.
+ if (isEligible && !isHelper) {
+ var _name = sexpr.path.parts[0],
+ options = this.options;
+ if (options.knownHelpers[_name]) {
+ isHelper = true;
+ } else if (options.knownHelpersOnly) {
+ isEligible = false;
+ }
+ }
+
+ if (isHelper) {
+ return 'helper';
+ } else if (isEligible) {
+ return 'ambiguous';
+ } else {
+ return 'simple';
+ }
+ },
+
+ pushParams: function pushParams(params) {
+ for (var i = 0, l = params.length; i < l; i++) {
+ this.pushParam(params[i]);
+ }
+ },
+
+ pushParam: function pushParam(val) {
+ var value = val.value != null ? val.value : val.original || '';
+
+ if (this.stringParams) {
+ if (value.replace) {
+ value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.');
+ }
+
+ if (val.depth) {
+ this.addDepth(val.depth);
+ }
+ this.opcode('getContext', val.depth || 0);
+ this.opcode('pushStringParam', value, val.type);
+
+ if (val.type === 'SubExpression') {
+ // SubExpressions get evaluated and passed in
+ // in string params mode.
+ this.accept(val);
+ }
+ } else {
+ if (this.trackIds) {
+ var blockParamIndex = undefined;
+ if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) {
+ blockParamIndex = this.blockParamIndex(val.parts[0]);
+ }
+ if (blockParamIndex) {
+ var blockParamChild = val.parts.slice(1).join('.');
+ this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);
+ } else {
+ value = val.original || value;
+ if (value.replace) {
+ value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, '');
+ }
+
+ this.opcode('pushId', val.type, value);
+ }
+ }
+ this.accept(val);
+ }
+ },
+
+ setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) {
+ var params = sexpr.params;
+ this.pushParams(params);
+
+ this.opcode('pushProgram', program);
+ this.opcode('pushProgram', inverse);
+
+ if (sexpr.hash) {
+ this.accept(sexpr.hash);
+ } else {
+ this.opcode('emptyHash', omitEmpty);
+ }
+
+ return params;
+ },
+
+ blockParamIndex: function blockParamIndex(name) {
+ for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) {
+ var blockParams = this.options.blockParams[depth],
+ param = blockParams && _utils.indexOf(blockParams, name);
+ if (blockParams && param >= 0) {
+ return [depth, param];
+ }
+ }
+ }
+ };
+
+ function precompile(input, options, env) {
+ if (input == null || typeof input !== 'string' && input.type !== 'Program') {
+ throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input);
+ }
+
+ options = options || {};
+ if (!('data' in options)) {
+ options.data = true;
+ }
+ if (options.compat) {
+ options.useDepths = true;
+ }
+
+ var ast = env.parse(input, options),
+ environment = new env.Compiler().compile(ast, options);
+ return new env.JavaScriptCompiler().compile(environment, options);
+ }
+
+ function compile(input, options, env) {
+ if (options === undefined) options = {};
+
+ if (input == null || typeof input !== 'string' && input.type !== 'Program') {
+ throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);
+ }
+
+ options = _utils.extend({}, options);
+ if (!('data' in options)) {
+ options.data = true;
+ }
+ if (options.compat) {
+ options.useDepths = true;
+ }
+
+ var compiled = undefined;
+
+ function compileInput() {
+ var ast = env.parse(input, options),
+ environment = new env.Compiler().compile(ast, options),
+ templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);
+ return env.template(templateSpec);
+ }
+
+ // Template is only compiled on first use and cached after that point.
+ function ret(context, execOptions) {
+ if (!compiled) {
+ compiled = compileInput();
+ }
+ return compiled.call(this, context, execOptions);
+ }
+ ret._setup = function (setupOptions) {
+ if (!compiled) {
+ compiled = compileInput();
+ }
+ return compiled._setup(setupOptions);
+ };
+ ret._child = function (i, data, blockParams, depths) {
+ if (!compiled) {
+ compiled = compileInput();
+ }
+ return compiled._child(i, data, blockParams, depths);
+ };
+ return ret;
+ }
+
+ function argEquals(a, b) {
+ if (a === b) {
+ return true;
+ }
+
+ if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) {
+ for (var i = 0; i < a.length; i++) {
+ if (!argEquals(a[i], b[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+
+ function transformLiteralToPath(sexpr) {
+ if (!sexpr.path.parts) {
+ var literal = sexpr.path;
+ // Casting to string here to make false and 0 literal values play nicely with the rest
+ // of the system.
+ sexpr.path = {
+ type: 'PathExpression',
+ data: false,
+ depth: 0,
+ parts: [literal.original + ''],
+ original: literal.original + '',
+ loc: literal.loc
+ };
+ }
+ }
+
+ return compiler;
+}
+
+var javascriptCompiler = {exports: {}};
+
+var codeGen = {exports: {}};
+
+var sourceMap = {};
+
+var sourceMapGenerator = {};
+
+var base64Vlq = {};
+
+var base64 = {};
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredBase64;
+
+function requireBase64 () {
+ if (hasRequiredBase64) return base64;
+ hasRequiredBase64 = 1;
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ base64.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ base64.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+ return base64;
+}
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredBase64Vlq;
+
+function requireBase64Vlq () {
+ if (hasRequiredBase64Vlq) return base64Vlq;
+ hasRequiredBase64Vlq = 1;
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ var base64 = requireBase64();
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ base64Vlq.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ base64Vlq.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+ return base64Vlq;
+}
+
+var util = {};
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredUtil;
+
+function requireUtil () {
+ if (hasRequiredUtil) return util;
+ hasRequiredUtil = 1;
+ (function (exports) {
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port;
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consecutive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ var supportsNullProto = (function () {
+ var obj = Object.create(null);
+ return !('__proto__' in obj);
+ }());
+
+ function identity (s) {
+ return s;
+ }
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return '$' + aStr;
+ }
+
+ return aStr;
+ }
+ exports.toSetString = supportsNullProto ? identity : toSetString;
+
+ function fromSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return aStr.slice(1);
+ }
+
+ return aStr;
+ }
+ exports.fromSetString = supportsNullProto ? identity : fromSetString;
+
+ function isProtoString(s) {
+ if (!s) {
+ return false;
+ }
+
+ var length = s.length;
+
+ if (length < 9 /* "__proto__".length */) {
+ return false;
+ }
+
+ if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 2) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 4) !== 116 /* 't' */ ||
+ s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
+ s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
+ s.charCodeAt(length - 8) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 9) !== 95 /* '_' */) {
+ return false;
+ }
+
+ for (var i = length - 10; i >= 0; i--) {
+ if (s.charCodeAt(i) !== 36 /* '$' */) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 === null) {
+ return 1; // aStr2 !== null
+ }
+
+ if (aStr2 === null) {
+ return -1; // aStr1 !== null
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+
+ /**
+ * Strip any JSON XSSI avoidance prefix from the string (as documented
+ * in the source maps specification), and then parse the string as
+ * JSON.
+ */
+ function parseSourceMapInput(str) {
+ return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
+ }
+ exports.parseSourceMapInput = parseSourceMapInput;
+
+ /**
+ * Compute the URL of a source given the the source root, the source's
+ * URL, and the source map's URL.
+ */
+ function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
+ sourceURL = sourceURL || '';
+
+ if (sourceRoot) {
+ // This follows what Chrome does.
+ if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {
+ sourceRoot += '/';
+ }
+ // The spec says:
+ // Line 4: An optional source root, useful for relocating source
+ // files on a server or removing repeated values in the
+ // “sources” entry. This value is prepended to the individual
+ // entries in the “source” field.
+ sourceURL = sourceRoot + sourceURL;
+ }
+
+ // Historically, SourceMapConsumer did not take the sourceMapURL as
+ // a parameter. This mode is still somewhat supported, which is why
+ // this code block is conditional. However, it's preferable to pass
+ // the source map URL to SourceMapConsumer, so that this function
+ // can implement the source URL resolution algorithm as outlined in
+ // the spec. This block is basically the equivalent of:
+ // new URL(sourceURL, sourceMapURL).toString()
+ // ... except it avoids using URL, which wasn't available in the
+ // older releases of node still supported by this library.
+ //
+ // The spec says:
+ // If the sources are not absolute URLs after prepending of the
+ // “sourceRoot”, the sources are resolved relative to the
+ // SourceMap (like resolving script src in a html document).
+ if (sourceMapURL) {
+ var parsed = urlParse(sourceMapURL);
+ if (!parsed) {
+ throw new Error("sourceMapURL could not be parsed");
+ }
+ if (parsed.path) {
+ // Strip the last path component, but keep the "/".
+ var index = parsed.path.lastIndexOf('/');
+ if (index >= 0) {
+ parsed.path = parsed.path.substring(0, index + 1);
+ }
+ }
+ sourceURL = join(urlGenerate(parsed), sourceURL);
+ }
+
+ return normalize(sourceURL);
+ }
+ exports.computeSourceURL = computeSourceURL;
+ } (util));
+ return util;
+}
+
+var arraySet = {};
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredArraySet;
+
+function requireArraySet () {
+ if (hasRequiredArraySet) return arraySet;
+ hasRequiredArraySet = 1;
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = requireUtil();
+ var has = Object.prototype.hasOwnProperty;
+ var hasNativeMap = typeof Map !== "undefined";
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = hasNativeMap ? new Map() : Object.create(null);
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
+ var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ if (hasNativeMap) {
+ this._set.set(aStr, idx);
+ } else {
+ this._set[sStr] = idx;
+ }
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ if (hasNativeMap) {
+ return this._set.has(aStr);
+ } else {
+ var sStr = util.toSetString(aStr);
+ return has.call(this._set, sStr);
+ }
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ if (hasNativeMap) {
+ var idx = this._set.get(aStr);
+ if (idx >= 0) {
+ return idx;
+ }
+ } else {
+ var sStr = util.toSetString(aStr);
+ if (has.call(this._set, sStr)) {
+ return this._set[sStr];
+ }
+ }
+
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ arraySet.ArraySet = ArraySet;
+ return arraySet;
+}
+
+var mappingList = {};
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredMappingList;
+
+function requireMappingList () {
+ if (hasRequiredMappingList) return mappingList;
+ hasRequiredMappingList = 1;
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = requireUtil();
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ mappingList.MappingList = MappingList;
+ return mappingList;
+}
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredSourceMapGenerator;
+
+function requireSourceMapGenerator () {
+ if (hasRequiredSourceMapGenerator) return sourceMapGenerator;
+ hasRequiredSourceMapGenerator = 1;
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var base64VLQ = requireBase64Vlq();
+ var util = requireUtil();
+ var ArraySet = requireArraySet().ArraySet;
+ var MappingList = requireMappingList().MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var sourceRelative = sourceFile;
+ if (sourceRoot !== null) {
+ sourceRelative = util.relative(sourceRoot, sourceFile);
+ }
+
+ if (!generator._sources.has(sourceRelative)) {
+ generator._sources.add(sourceRelative);
+ }
+
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null) {
+ source = String(source);
+ if (!this._sources.has(source)) {
+ this._sources.add(source);
+ }
+ }
+
+ if (name != null) {
+ name = String(name);
+ if (!this._names.has(name)) {
+ this._names.add(name);
+ }
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = Object.create(null);
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source);
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ // When aOriginal is truthy but has empty values for .line and .column,
+ // it is most likely a programmer error. In this case we throw a very
+ // specific error message to try to guide them the right way.
+ // For example: https://github.com/Polymer/polymer-bundler/pull/519
+ if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
+ throw new Error(
+ 'original.line and original.column are not numbers -- you probably meant to omit ' +
+ 'the original mapping entirely and only map the generated position. If so, pass ' +
+ 'null for the original mapping instead of an object with empty or null values.'
+ );
+ }
+
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var next;
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+ next = '';
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ next += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ next += ',';
+ }
+ }
+
+ next += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ next += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ next += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ next += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ next += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+
+ result += next;
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ sourceMapGenerator.SourceMapGenerator = SourceMapGenerator;
+ return sourceMapGenerator;
+}
+
+var sourceMapConsumer = {};
+
+var binarySearch = {};
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredBinarySearch;
+
+function requireBinarySearch () {
+ if (hasRequiredBinarySearch) return binarySearch;
+ hasRequiredBinarySearch = 1;
+ (function (exports) {
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+ } (binarySearch));
+ return binarySearch;
+}
+
+var quickSort = {};
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredQuickSort;
+
+function requireQuickSort () {
+ if (hasRequiredQuickSort) return quickSort;
+ hasRequiredQuickSort = 1;
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ quickSort.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+ return quickSort;
+}
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredSourceMapConsumer;
+
+function requireSourceMapConsumer () {
+ if (hasRequiredSourceMapConsumer) return sourceMapConsumer;
+ hasRequiredSourceMapConsumer = 1;
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = requireUtil();
+ var binarySearch = requireBinarySearch();
+ var ArraySet = requireArraySet().ArraySet;
+ var base64VLQ = requireBase64Vlq();
+ var quickSort = requireQuickSort().quickSort;
+
+ function SourceMapConsumer(aSourceMap, aSourceMapURL) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = util.parseSourceMapInput(aSourceMap);
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)
+ : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ configurable: true,
+ enumerable: true,
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ configurable: true,
+ enumerable: true,
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source. The line number is 1-based.
+ * - column: Optional. the column number in the original source.
+ * The column number is 0-based.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null. The
+ * line number is 1-based.
+ * - column: The column number in the generated source, or null.
+ * The column number is 0-based.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ needle.source = this._findSourceIndex(needle.source);
+ if (needle.source < 0) {
+ return [];
+ }
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ sourceMapConsumer.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The first parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * The second parameter, if given, is a string whose value is the URL
+ * at which the source map was found. This URL is used to compute the
+ * sources array.
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = util.parseSourceMapInput(aSourceMap);
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ if (sourceRoot) {
+ sourceRoot = util.normalize(sourceRoot);
+ }
+
+ sources = sources
+ .map(String)
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names.map(String), true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this._absoluteSources = this._sources.toArray().map(function (s) {
+ return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
+ });
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this._sourceMapURL = aSourceMapURL;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Utility function to find the index of a source. Returns -1 if not
+ * found.
+ */
+ BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
+ var relativeSource = aSource;
+ if (this.sourceRoot != null) {
+ relativeSource = util.relative(this.sourceRoot, relativeSource);
+ }
+
+ if (this._sources.has(relativeSource)) {
+ return this._sources.indexOf(relativeSource);
+ }
+
+ // Maybe aSource is an absolute URL as returned by |sources|. In
+ // this case we can't simply undo the transform.
+ var i;
+ for (i = 0; i < this._absoluteSources.length; ++i) {
+ if (this._absoluteSources[i] == aSource) {
+ return i;
+ }
+ }
+
+ return -1;
+ };
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @param String aSourceMapURL
+ * The URL at which the source map can be found (optional)
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+ smc._sourceMapURL = aSourceMapURL;
+ smc._absoluteSources = smc._sources.toArray().map(function (s) {
+ return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);
+ });
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._absoluteSources.slice();
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source. The line number
+ * is 1-based.
+ * - column: The column number in the generated source. The column
+ * number is 0-based.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null. The
+ * line number is 1-based.
+ * - column: The column number in the original source, or null. The
+ * column number is 0-based.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ var index = this._findSourceIndex(aSource);
+ if (index >= 0) {
+ return this.sourcesContent[index];
+ }
+
+ var relativeSource = aSource;
+ if (this.sourceRoot != null) {
+ relativeSource = util.relative(this.sourceRoot, relativeSource);
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + relativeSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + relativeSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source. The line number
+ * is 1-based.
+ * - column: The column number in the original source. The column
+ * number is 0-based.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null. The
+ * line number is 1-based.
+ * - column: The column number in the generated source, or null.
+ * The column number is 0-based.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ source = this._findSourceIndex(source);
+ if (source < 0) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ sourceMapConsumer.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The first parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * The second parameter, if given, is a string whose value is the URL
+ * at which the source map was found. This URL is used to compute the
+ * sources array.
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = util.parseSourceMapInput(aSourceMap);
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source. The line number
+ * is 1-based.
+ * - column: The column number in the generated source. The column
+ * number is 0-based.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null. The
+ * line number is 1-based.
+ * - column: The column number in the original source, or null. The
+ * column number is 0-based.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source. The line number
+ * is 1-based.
+ * - column: The column number in the original source. The column
+ * number is 0-based.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null. The
+ * line number is 1-based.
+ * - column: The column number in the generated source, or null.
+ * The column number is 0-based.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = null;
+ if (mapping.name) {
+ name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+ }
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ sourceMapConsumer.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+ return sourceMapConsumer;
+}
+
+var sourceNode = {};
+
+/* -*- Mode: js; js-indent-level: 2; -*- */
+
+var hasRequiredSourceNode;
+
+function requireSourceNode () {
+ if (hasRequiredSourceNode) return sourceNode;
+ hasRequiredSourceNode = 1;
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var SourceMapGenerator = requireSourceMapGenerator().SourceMapGenerator;
+ var util = requireUtil();
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are accessed by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var remainingLinesIndex = 0;
+ var shiftNextLine = function() {
+ var lineContents = getNextLine();
+ // The last line of a file might not have a newline.
+ var newLine = getNextLine() || "";
+ return lineContents + newLine;
+
+ function getNextLine() {
+ return remainingLinesIndex < remainingLines.length ?
+ remainingLines[remainingLinesIndex++] : undefined;
+ }
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[remainingLinesIndex] || '';
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[remainingLinesIndex] || '';
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLinesIndex < remainingLines.length) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.splice(remainingLinesIndex).join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ sourceNode.SourceNode = SourceNode;
+ return sourceNode;
+}
+
+/*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var hasRequiredSourceMap;
+
+function requireSourceMap () {
+ if (hasRequiredSourceMap) return sourceMap;
+ hasRequiredSourceMap = 1;
+ sourceMap.SourceMapGenerator = requireSourceMapGenerator().SourceMapGenerator;
+ sourceMap.SourceMapConsumer = requireSourceMapConsumer().SourceMapConsumer;
+ sourceMap.SourceNode = requireSourceNode().SourceNode;
+ return sourceMap;
+}
+
+/* global define, require */
+
+var hasRequiredCodeGen;
+
+function requireCodeGen () {
+ if (hasRequiredCodeGen) return codeGen.exports;
+ hasRequiredCodeGen = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+
+ var _utils = requireUtils();
+
+ var SourceNode = undefined;
+
+ try {
+ /* istanbul ignore next */
+ if (typeof undefined !== 'function' || !undefined.amd) {
+ // We don't support this in AMD environments. For these environments, we assume that
+ // they are running on the browser and thus have no need for the source-map library.
+ var SourceMap = requireSourceMap();
+ SourceNode = SourceMap.SourceNode;
+ }
+ } catch (err) {}
+ /* NOP */
+
+ /* istanbul ignore if: tested but not covered in istanbul due to dist build */
+ if (!SourceNode) {
+ SourceNode = function (line, column, srcFile, chunks) {
+ this.src = '';
+ if (chunks) {
+ this.add(chunks);
+ }
+ };
+ /* istanbul ignore next */
+ SourceNode.prototype = {
+ add: function add(chunks) {
+ if (_utils.isArray(chunks)) {
+ chunks = chunks.join('');
+ }
+ this.src += chunks;
+ },
+ prepend: function prepend(chunks) {
+ if (_utils.isArray(chunks)) {
+ chunks = chunks.join('');
+ }
+ this.src = chunks + this.src;
+ },
+ toStringWithSourceMap: function toStringWithSourceMap() {
+ return { code: this.toString() };
+ },
+ toString: function toString() {
+ return this.src;
+ }
+ };
+ }
+
+ function castChunk(chunk, codeGen, loc) {
+ if (_utils.isArray(chunk)) {
+ var ret = [];
+
+ for (var i = 0, len = chunk.length; i < len; i++) {
+ ret.push(codeGen.wrap(chunk[i], loc));
+ }
+ return ret;
+ } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {
+ // Handle primitives that the SourceNode will throw up on
+ return chunk + '';
+ }
+ return chunk;
+ }
+
+ function CodeGen(srcFile) {
+ this.srcFile = srcFile;
+ this.source = [];
+ }
+
+ CodeGen.prototype = {
+ isEmpty: function isEmpty() {
+ return !this.source.length;
+ },
+ prepend: function prepend(source, loc) {
+ this.source.unshift(this.wrap(source, loc));
+ },
+ push: function push(source, loc) {
+ this.source.push(this.wrap(source, loc));
+ },
+
+ merge: function merge() {
+ var source = this.empty();
+ this.each(function (line) {
+ source.add([' ', line, '\n']);
+ });
+ return source;
+ },
+
+ each: function each(iter) {
+ for (var i = 0, len = this.source.length; i < len; i++) {
+ iter(this.source[i]);
+ }
+ },
+
+ empty: function empty() {
+ var loc = this.currentLocation || { start: {} };
+ return new SourceNode(loc.start.line, loc.start.column, this.srcFile);
+ },
+ wrap: function wrap(chunk) {
+ var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1];
+
+ if (chunk instanceof SourceNode) {
+ return chunk;
+ }
+
+ chunk = castChunk(chunk, this, loc);
+
+ return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk);
+ },
+
+ functionCall: function functionCall(fn, type, params) {
+ params = this.generateList(params);
+ return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);
+ },
+
+ quotedString: function quotedString(str) {
+ return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
+ .replace(/\u2029/g, '\\u2029') + '"';
+ },
+
+ objectLiteral: function objectLiteral(obj) {
+ // istanbul ignore next
+
+ var _this = this;
+
+ var pairs = [];
+
+ Object.keys(obj).forEach(function (key) {
+ var value = castChunk(obj[key], _this);
+ if (value !== 'undefined') {
+ pairs.push([_this.quotedString(key), ':', value]);
+ }
+ });
+
+ var ret = this.generateList(pairs);
+ ret.prepend('{');
+ ret.add('}');
+ return ret;
+ },
+
+ generateList: function generateList(entries) {
+ var ret = this.empty();
+
+ for (var i = 0, len = entries.length; i < len; i++) {
+ if (i) {
+ ret.add(',');
+ }
+
+ ret.add(castChunk(entries[i], this));
+ }
+
+ return ret;
+ },
+
+ generateArray: function generateArray(entries) {
+ var ret = this.generateList(entries);
+ ret.prepend('[');
+ ret.add(']');
+
+ return ret;
+ }
+ };
+
+ exports['default'] = CodeGen;
+ module.exports = exports['default'];
+
+ } (codeGen, codeGen.exports));
+ return codeGen.exports;
+}
+
+var hasRequiredJavascriptCompiler;
+
+function requireJavascriptCompiler () {
+ if (hasRequiredJavascriptCompiler) return javascriptCompiler.exports;
+ hasRequiredJavascriptCompiler = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _base = requireBase$1();
+
+ var _exception = requireException();
+
+ var _exception2 = _interopRequireDefault(_exception);
+
+ var _utils = requireUtils();
+
+ var _codeGen = requireCodeGen();
+
+ var _codeGen2 = _interopRequireDefault(_codeGen);
+
+ function Literal(value) {
+ this.value = value;
+ }
+
+ function JavaScriptCompiler() {}
+
+ JavaScriptCompiler.prototype = {
+ // PUBLIC API: You can override these methods in a subclass to provide
+ // alternative compiled forms for name lookup and buffering semantics
+ nameLookup: function nameLookup(parent, name /*, type */) {
+ return this.internalNameLookup(parent, name);
+ },
+ depthedLookup: function depthedLookup(name) {
+ return [this.aliasable('container.lookup'), '(depths, ', JSON.stringify(name), ')'];
+ },
+
+ compilerInfo: function compilerInfo() {
+ var revision = _base.COMPILER_REVISION,
+ versions = _base.REVISION_CHANGES[revision];
+ return [revision, versions];
+ },
+
+ appendToBuffer: function appendToBuffer(source, location, explicit) {
+ // Force a source as this simplifies the merge logic.
+ if (!_utils.isArray(source)) {
+ source = [source];
+ }
+ source = this.source.wrap(source, location);
+
+ if (this.environment.isSimple) {
+ return ['return ', source, ';'];
+ } else if (explicit) {
+ // This is a case where the buffer operation occurs as a child of another
+ // construct, generally braces. We have to explicitly output these buffer
+ // operations to ensure that the emitted code goes in the correct location.
+ return ['buffer += ', source, ';'];
+ } else {
+ source.appendToBuffer = true;
+ return source;
+ }
+ },
+
+ initializeBuffer: function initializeBuffer() {
+ return this.quotedString('');
+ },
+ // END PUBLIC API
+ internalNameLookup: function internalNameLookup(parent, name) {
+ this.lookupPropertyFunctionIsUsed = true;
+ return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];
+ },
+
+ lookupPropertyFunctionIsUsed: false,
+
+ compile: function compile(environment, options, context, asObject) {
+ this.environment = environment;
+ this.options = options;
+ this.stringParams = this.options.stringParams;
+ this.trackIds = this.options.trackIds;
+ this.precompile = !asObject;
+
+ this.name = this.environment.name;
+ this.isChild = !!context;
+ this.context = context || {
+ decorators: [],
+ programs: [],
+ environments: []
+ };
+
+ this.preamble();
+
+ this.stackSlot = 0;
+ this.stackVars = [];
+ this.aliases = {};
+ this.registers = { list: [] };
+ this.hashes = [];
+ this.compileStack = [];
+ this.inlineStack = [];
+ this.blockParams = [];
+
+ this.compileChildren(environment, options);
+
+ this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;
+ this.useBlockParams = this.useBlockParams || environment.useBlockParams;
+
+ var opcodes = environment.opcodes,
+ opcode = undefined,
+ firstLoc = undefined,
+ i = undefined,
+ l = undefined;
+
+ for (i = 0, l = opcodes.length; i < l; i++) {
+ opcode = opcodes[i];
+
+ this.source.currentLocation = opcode.loc;
+ firstLoc = firstLoc || opcode.loc;
+ this[opcode.opcode].apply(this, opcode.args);
+ }
+
+ // Flush any trailing content that might be pending.
+ this.source.currentLocation = firstLoc;
+ this.pushSource('');
+
+ /* istanbul ignore next */
+ if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {
+ throw new _exception2['default']('Compile completed with content left on stack');
+ }
+
+ if (!this.decorators.isEmpty()) {
+ this.useDecorators = true;
+
+ this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\n']);
+ this.decorators.push('return fn;');
+
+ if (asObject) {
+ this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);
+ } else {
+ this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n');
+ this.decorators.push('}\n');
+ this.decorators = this.decorators.merge();
+ }
+ } else {
+ this.decorators = undefined;
+ }
+
+ var fn = this.createFunctionContext(asObject);
+ if (!this.isChild) {
+ var ret = {
+ compiler: this.compilerInfo(),
+ main: fn
+ };
+
+ if (this.decorators) {
+ ret.main_d = this.decorators; // eslint-disable-line camelcase
+ ret.useDecorators = true;
+ }
+
+ var _context = this.context;
+ var programs = _context.programs;
+ var decorators = _context.decorators;
+
+ for (i = 0, l = programs.length; i < l; i++) {
+ ret[i] = programs[i];
+ if (decorators[i]) {
+ ret[i + '_d'] = decorators[i];
+ ret.useDecorators = true;
+ }
+ }
+
+ if (this.environment.usePartial) {
+ ret.usePartial = true;
+ }
+ if (this.options.data) {
+ ret.useData = true;
+ }
+ if (this.useDepths) {
+ ret.useDepths = true;
+ }
+ if (this.useBlockParams) {
+ ret.useBlockParams = true;
+ }
+ if (this.options.compat) {
+ ret.compat = true;
+ }
+
+ if (!asObject) {
+ ret.compiler = JSON.stringify(ret.compiler);
+
+ this.source.currentLocation = { start: { line: 1, column: 0 } };
+ ret = this.objectLiteral(ret);
+
+ if (options.srcName) {
+ ret = ret.toStringWithSourceMap({ file: options.destName });
+ ret.map = ret.map && ret.map.toString();
+ } else {
+ ret = ret.toString();
+ }
+ } else {
+ ret.compilerOptions = this.options;
+ }
+
+ return ret;
+ } else {
+ return fn;
+ }
+ },
+
+ preamble: function preamble() {
+ // track the last context pushed into place to allow skipping the
+ // getContext opcode when it would be a noop
+ this.lastContext = 0;
+ this.source = new _codeGen2['default'](this.options.srcName);
+ this.decorators = new _codeGen2['default'](this.options.srcName);
+ },
+
+ createFunctionContext: function createFunctionContext(asObject) {
+ // istanbul ignore next
+
+ var _this = this;
+
+ var varDeclarations = '';
+
+ var locals = this.stackVars.concat(this.registers.list);
+ if (locals.length > 0) {
+ varDeclarations += ', ' + locals.join(', ');
+ }
+
+ // Generate minimizer alias mappings
+ //
+ // When using true SourceNodes, this will update all references to the given alias
+ // as the source nodes are reused in situ. For the non-source node compilation mode,
+ // aliases will not be used, but this case is already being run on the client and
+ // we aren't concern about minimizing the template size.
+ var aliasCount = 0;
+ Object.keys(this.aliases).forEach(function (alias) {
+ var node = _this.aliases[alias];
+ if (node.children && node.referenceCount > 1) {
+ varDeclarations += ', alias' + ++aliasCount + '=' + alias;
+ node.children[0] = 'alias' + aliasCount;
+ }
+ });
+
+ if (this.lookupPropertyFunctionIsUsed) {
+ varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();
+ }
+
+ var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
+
+ if (this.useBlockParams || this.useDepths) {
+ params.push('blockParams');
+ }
+ if (this.useDepths) {
+ params.push('depths');
+ }
+
+ // Perform a second pass over the output to merge content when possible
+ var source = this.mergeSource(varDeclarations);
+
+ if (asObject) {
+ params.push(source);
+
+ return Function.apply(this, params);
+ } else {
+ return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']);
+ }
+ },
+ mergeSource: function mergeSource(varDeclarations) {
+ var isSimple = this.environment.isSimple,
+ appendOnly = !this.forceBuffer,
+ appendFirst = undefined,
+ sourceSeen = undefined,
+ bufferStart = undefined,
+ bufferEnd = undefined;
+ this.source.each(function (line) {
+ if (line.appendToBuffer) {
+ if (bufferStart) {
+ line.prepend(' + ');
+ } else {
+ bufferStart = line;
+ }
+ bufferEnd = line;
+ } else {
+ if (bufferStart) {
+ if (!sourceSeen) {
+ appendFirst = true;
+ } else {
+ bufferStart.prepend('buffer += ');
+ }
+ bufferEnd.add(';');
+ bufferStart = bufferEnd = undefined;
+ }
+
+ sourceSeen = true;
+ if (!isSimple) {
+ appendOnly = false;
+ }
+ }
+ });
+
+ if (appendOnly) {
+ if (bufferStart) {
+ bufferStart.prepend('return ');
+ bufferEnd.add(';');
+ } else if (!sourceSeen) {
+ this.source.push('return "";');
+ }
+ } else {
+ varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());
+
+ if (bufferStart) {
+ bufferStart.prepend('return buffer + ');
+ bufferEnd.add(';');
+ } else {
+ this.source.push('return buffer;');
+ }
+ }
+
+ if (varDeclarations) {
+ this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n'));
+ }
+
+ return this.source.merge();
+ },
+
+ lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() {
+ return '\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n '.trim();
+ },
+
+ // [blockValue]
+ //
+ // On stack, before: hash, inverse, program, value
+ // On stack, after: return value of blockHelperMissing
+ //
+ // The purpose of this opcode is to take a block of the form
+ // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
+ // replace it on the stack with the result of properly
+ // invoking blockHelperMissing.
+ blockValue: function blockValue(name) {
+ var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),
+ params = [this.contextName(0)];
+ this.setupHelperArgs(name, 0, params);
+
+ var blockName = this.popStack();
+ params.splice(1, 0, blockName);
+
+ this.push(this.source.functionCall(blockHelperMissing, 'call', params));
+ },
+
+ // [ambiguousBlockValue]
+ //
+ // On stack, before: hash, inverse, program, value
+ // Compiler value, before: lastHelper=value of last found helper, if any
+ // On stack, after, if no lastHelper: same as [blockValue]
+ // On stack, after, if lastHelper: value
+ ambiguousBlockValue: function ambiguousBlockValue() {
+ // We're being a bit cheeky and reusing the options value from the prior exec
+ var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),
+ params = [this.contextName(0)];
+ this.setupHelperArgs('', 0, params, true);
+
+ this.flushInline();
+
+ var current = this.topStack();
+ params.splice(1, 0, current);
+
+ this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);
+ },
+
+ // [appendContent]
+ //
+ // On stack, before: ...
+ // On stack, after: ...
+ //
+ // Appends the string value of `content` to the current buffer
+ appendContent: function appendContent(content) {
+ if (this.pendingContent) {
+ content = this.pendingContent + content;
+ } else {
+ this.pendingLocation = this.source.currentLocation;
+ }
+
+ this.pendingContent = content;
+ },
+
+ // [append]
+ //
+ // On stack, before: value, ...
+ // On stack, after: ...
+ //
+ // Coerces `value` to a String and appends it to the current buffer.
+ //
+ // If `value` is truthy, or 0, it is coerced into a string and appended
+ // Otherwise, the empty string is appended
+ append: function append() {
+ if (this.isInline()) {
+ this.replaceStack(function (current) {
+ return [' != null ? ', current, ' : ""'];
+ });
+
+ this.pushSource(this.appendToBuffer(this.popStack()));
+ } else {
+ var local = this.popStack();
+ this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);
+ if (this.environment.isSimple) {
+ this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']);
+ }
+ }
+ },
+
+ // [appendEscaped]
+ //
+ // On stack, before: value, ...
+ // On stack, after: ...
+ //
+ // Escape `value` and append it to the buffer
+ appendEscaped: function appendEscaped() {
+ this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));
+ },
+
+ // [getContext]
+ //
+ // On stack, before: ...
+ // On stack, after: ...
+ // Compiler value, after: lastContext=depth
+ //
+ // Set the value of the `lastContext` compiler value to the depth
+ getContext: function getContext(depth) {
+ this.lastContext = depth;
+ },
+
+ // [pushContext]
+ //
+ // On stack, before: ...
+ // On stack, after: currentContext, ...
+ //
+ // Pushes the value of the current context onto the stack.
+ pushContext: function pushContext() {
+ this.pushStackLiteral(this.contextName(this.lastContext));
+ },
+
+ // [lookupOnContext]
+ //
+ // On stack, before: ...
+ // On stack, after: currentContext[name], ...
+ //
+ // Looks up the value of `name` on the current context and pushes
+ // it onto the stack.
+ lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {
+ var i = 0;
+
+ if (!scoped && this.options.compat && !this.lastContext) {
+ // The depthed query is expected to handle the undefined logic for the root level that
+ // is implemented below, so we evaluate that directly in compat mode
+ this.push(this.depthedLookup(parts[i++]));
+ } else {
+ this.pushContext();
+ }
+
+ this.resolvePath('context', parts, i, falsy, strict);
+ },
+
+ // [lookupBlockParam]
+ //
+ // On stack, before: ...
+ // On stack, after: blockParam[name], ...
+ //
+ // Looks up the value of `parts` on the given block param and pushes
+ // it onto the stack.
+ lookupBlockParam: function lookupBlockParam(blockParamId, parts) {
+ this.useBlockParams = true;
+
+ this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);
+ this.resolvePath('context', parts, 1);
+ },
+
+ // [lookupData]
+ //
+ // On stack, before: ...
+ // On stack, after: data, ...
+ //
+ // Push the data lookup operator
+ lookupData: function lookupData(depth, parts, strict) {
+ if (!depth) {
+ this.pushStackLiteral('data');
+ } else {
+ this.pushStackLiteral('container.data(data, ' + depth + ')');
+ }
+
+ this.resolvePath('data', parts, 0, true, strict);
+ },
+
+ resolvePath: function resolvePath(type, parts, startPartIndex, falsy, strict) {
+ // istanbul ignore next
+
+ var _this2 = this;
+
+ if (this.options.strict || this.options.assumeObjects) {
+ this.push(strictLookup(this.options.strict && strict, this, parts, startPartIndex, type));
+ return;
+ }
+
+ var len = parts.length;
+
+ var _loop = function (i) {
+ /* eslint-disable no-loop-func */
+ _this2.replaceStack(function (current) {
+ var lookup = _this2.nameLookup(current, parts[i], type);
+ // We want to ensure that zero and false are handled properly if the context (falsy flag)
+ // needs to have the special handling for these values.
+ if (!falsy) {
+ return [' != null ? ', lookup, ' : ', current];
+ } else {
+ // Otherwise we can use generic falsy handling
+ return [' && ', lookup];
+ }
+ });
+ /* eslint-enable no-loop-func */
+ };
+
+ for (var i = startPartIndex; i < len; i++) {
+ _loop(i);
+ }
+ },
+
+ // [resolvePossibleLambda]
+ //
+ // On stack, before: value, ...
+ // On stack, after: resolved value, ...
+ //
+ // If the `value` is a lambda, replace it on the stack by
+ // the return value of the lambda
+ resolvePossibleLambda: function resolvePossibleLambda() {
+ this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);
+ },
+
+ // [pushStringParam]
+ //
+ // On stack, before: ...
+ // On stack, after: string, currentContext, ...
+ //
+ // This opcode is designed for use in string mode, which
+ // provides the string value of a parameter along with its
+ // depth rather than resolving it immediately.
+ pushStringParam: function pushStringParam(string, type) {
+ this.pushContext();
+ this.pushString(type);
+
+ // If it's a subexpression, the string result
+ // will be pushed after this opcode.
+ if (type !== 'SubExpression') {
+ if (typeof string === 'string') {
+ this.pushString(string);
+ } else {
+ this.pushStackLiteral(string);
+ }
+ }
+ },
+
+ emptyHash: function emptyHash(omitEmpty) {
+ if (this.trackIds) {
+ this.push('{}'); // hashIds
+ }
+ if (this.stringParams) {
+ this.push('{}'); // hashContexts
+ this.push('{}'); // hashTypes
+ }
+ this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');
+ },
+ pushHash: function pushHash() {
+ if (this.hash) {
+ this.hashes.push(this.hash);
+ }
+ this.hash = { values: {}, types: [], contexts: [], ids: [] };
+ },
+ popHash: function popHash() {
+ var hash = this.hash;
+ this.hash = this.hashes.pop();
+
+ if (this.trackIds) {
+ this.push(this.objectLiteral(hash.ids));
+ }
+ if (this.stringParams) {
+ this.push(this.objectLiteral(hash.contexts));
+ this.push(this.objectLiteral(hash.types));
+ }
+
+ this.push(this.objectLiteral(hash.values));
+ },
+
+ // [pushString]
+ //
+ // On stack, before: ...
+ // On stack, after: quotedString(string), ...
+ //
+ // Push a quoted version of `string` onto the stack
+ pushString: function pushString(string) {
+ this.pushStackLiteral(this.quotedString(string));
+ },
+
+ // [pushLiteral]
+ //
+ // On stack, before: ...
+ // On stack, after: value, ...
+ //
+ // Pushes a value onto the stack. This operation prevents
+ // the compiler from creating a temporary variable to hold
+ // it.
+ pushLiteral: function pushLiteral(value) {
+ this.pushStackLiteral(value);
+ },
+
+ // [pushProgram]
+ //
+ // On stack, before: ...
+ // On stack, after: program(guid), ...
+ //
+ // Push a program expression onto the stack. This takes
+ // a compile-time guid and converts it into a runtime-accessible
+ // expression.
+ pushProgram: function pushProgram(guid) {
+ if (guid != null) {
+ this.pushStackLiteral(this.programExpression(guid));
+ } else {
+ this.pushStackLiteral(null);
+ }
+ },
+
+ // [registerDecorator]
+ //
+ // On stack, before: hash, program, params..., ...
+ // On stack, after: ...
+ //
+ // Pops off the decorator's parameters, invokes the decorator,
+ // and inserts the decorator into the decorators list.
+ registerDecorator: function registerDecorator(paramSize, name) {
+ var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
+ options = this.setupHelperArgs(name, paramSize);
+
+ // Store the resolved decorator in a variable and verify it is a function before
+ // calling it. Without this, unregistered decorators can cause an unhandled TypeError
+ // (calling undefined), which crashes the process — enabling Denial of Service.
+ this.decorators.push(['var decorator = ', foundDecorator, ';']);
+ this.decorators.push(['if (typeof decorator !== "function") { throw new Error(', this.quotedString('Missing decorator: "' + name + '"'), '); }']);
+ this.decorators.push(['fn = ', this.decorators.functionCall('decorator', '', ['fn', 'props', 'container', options]), ' || fn;']);
+ },
+
+ // [invokeHelper]
+ //
+ // On stack, before: hash, inverse, program, params..., ...
+ // On stack, after: result of helper invocation
+ //
+ // Pops off the helper's parameters, invokes the helper,
+ // and pushes the helper's return value onto the stack.
+ //
+ // If the helper is not found, `helperMissing` is called.
+ invokeHelper: function invokeHelper(paramSize, name, isSimple) {
+ var nonHelper = this.popStack(),
+ helper = this.setupHelper(paramSize, name);
+
+ var possibleFunctionCalls = [];
+
+ if (isSimple) {
+ // direct call to helper
+ possibleFunctionCalls.push(helper.name);
+ }
+ // call a function from the input object
+ possibleFunctionCalls.push(nonHelper);
+ if (!this.options.strict) {
+ possibleFunctionCalls.push(this.aliasable('container.hooks.helperMissing'));
+ }
+
+ var functionLookupCode = ['(', this.itemsSeparatedBy(possibleFunctionCalls, '||'), ')'];
+ var functionCall = this.source.functionCall(functionLookupCode, 'call', helper.callParams);
+ this.push(functionCall);
+ },
+
+ itemsSeparatedBy: function itemsSeparatedBy(items, separator) {
+ var result = [];
+ result.push(items[0]);
+ for (var i = 1; i < items.length; i++) {
+ result.push(separator, items[i]);
+ }
+ return result;
+ },
+ // [invokeKnownHelper]
+ //
+ // On stack, before: hash, inverse, program, params..., ...
+ // On stack, after: result of helper invocation
+ //
+ // This operation is used when the helper is known to exist,
+ // so a `helperMissing` fallback is not required.
+ invokeKnownHelper: function invokeKnownHelper(paramSize, name) {
+ var helper = this.setupHelper(paramSize, name);
+ this.push(this.source.functionCall(helper.name, 'call', helper.callParams));
+ },
+
+ // [invokeAmbiguous]
+ //
+ // On stack, before: hash, inverse, program, params..., ...
+ // On stack, after: result of disambiguation
+ //
+ // This operation is used when an expression like `{{foo}}`
+ // is provided, but we don't know at compile-time whether it
+ // is a helper or a path.
+ //
+ // This operation emits more code than the other options,
+ // and can be avoided by passing the `knownHelpers` and
+ // `knownHelpersOnly` flags at compile-time.
+ invokeAmbiguous: function invokeAmbiguous(name, helperCall) {
+ this.useRegister('helper');
+
+ var nonHelper = this.popStack();
+
+ this.emptyHash();
+ var helper = this.setupHelper(0, name, helperCall);
+
+ var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
+
+ var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
+ if (!this.options.strict) {
+ lookup[0] = '(helper = ';
+ lookup.push(' != null ? helper : ', this.aliasable('container.hooks.helperMissing'));
+ }
+
+ this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);
+ },
+
+ // [invokePartial]
+ //
+ // On stack, before: context, ...
+ // On stack after: result of partial invocation
+ //
+ // This operation pops off a context, invokes a partial with that context,
+ // and pushes the result of the invocation back.
+ invokePartial: function invokePartial(isDynamic, name, indent) {
+ var params = [],
+ options = this.setupParams(name, 1, params);
+
+ if (isDynamic) {
+ name = this.popStack();
+ delete options.name;
+ }
+
+ if (indent) {
+ options.indent = JSON.stringify(indent);
+ }
+ options.helpers = 'helpers';
+ options.partials = 'partials';
+ options.decorators = 'container.decorators';
+
+ if (!isDynamic) {
+ params.unshift(this.nameLookup('partials', name, 'partial'));
+ } else {
+ params.unshift(name);
+ }
+
+ if (this.options.compat) {
+ options.depths = 'depths';
+ }
+ options = this.objectLiteral(options);
+ params.push(options);
+
+ this.push(this.source.functionCall('container.invokePartial', '', params));
+ },
+
+ // [assignToHash]
+ //
+ // On stack, before: value, ..., hash, ...
+ // On stack, after: ..., hash, ...
+ //
+ // Pops a value off the stack and assigns it to the current hash
+ assignToHash: function assignToHash(key) {
+ var value = this.popStack(),
+ context = undefined,
+ type = undefined,
+ id = undefined;
+
+ if (this.trackIds) {
+ id = this.popStack();
+ }
+ if (this.stringParams) {
+ type = this.popStack();
+ context = this.popStack();
+ }
+
+ var hash = this.hash;
+ if (context) {
+ hash.contexts[key] = context;
+ }
+ if (type) {
+ hash.types[key] = type;
+ }
+ if (id) {
+ hash.ids[key] = id;
+ }
+ hash.values[key] = value;
+ },
+
+ pushId: function pushId(type, name, child) {
+ if (type === 'BlockParam') {
+ this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));
+ } else if (type === 'PathExpression') {
+ this.pushString(name);
+ } else if (type === 'SubExpression') {
+ this.pushStackLiteral('true');
+ } else {
+ this.pushStackLiteral('null');
+ }
+ },
+
+ // HELPERS
+
+ compiler: JavaScriptCompiler,
+
+ compileChildren: function compileChildren(environment, options) {
+ var children = environment.children,
+ child = undefined,
+ compiler = undefined;
+
+ for (var i = 0, l = children.length; i < l; i++) {
+ child = children[i];
+ compiler = new this.compiler(); // eslint-disable-line new-cap
+
+ var existing = this.matchExistingProgram(child);
+
+ if (existing == null) {
+ // Placeholder to prevent name conflicts for nested children
+ var index = this.context.programs.push('') - 1;
+ child.index = index;
+ child.name = 'program' + index;
+ this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
+ this.context.decorators[index] = compiler.decorators;
+ this.context.environments[index] = child;
+
+ this.useDepths = this.useDepths || compiler.useDepths;
+ this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
+ child.useDepths = this.useDepths;
+ child.useBlockParams = this.useBlockParams;
+ } else {
+ child.index = existing.index;
+ child.name = 'program' + existing.index;
+
+ this.useDepths = this.useDepths || existing.useDepths;
+ this.useBlockParams = this.useBlockParams || existing.useBlockParams;
+ }
+ }
+ },
+ matchExistingProgram: function matchExistingProgram(child) {
+ for (var i = 0, len = this.context.environments.length; i < len; i++) {
+ var environment = this.context.environments[i];
+ if (environment && environment.equals(child)) {
+ return environment;
+ }
+ }
+ },
+
+ programExpression: function programExpression(guid) {
+ var child = this.environment.children[guid],
+ programParams = [child.index, 'data', child.blockParams];
+
+ if (this.useBlockParams || this.useDepths) {
+ programParams.push('blockParams');
+ }
+ if (this.useDepths) {
+ programParams.push('depths');
+ }
+
+ return 'container.program(' + programParams.join(', ') + ')';
+ },
+
+ useRegister: function useRegister(name) {
+ if (!this.registers[name]) {
+ this.registers[name] = true;
+ this.registers.list.push(name);
+ }
+ },
+
+ push: function push(expr) {
+ if (!(expr instanceof Literal)) {
+ expr = this.source.wrap(expr);
+ }
+
+ this.inlineStack.push(expr);
+ return expr;
+ },
+
+ pushStackLiteral: function pushStackLiteral(item) {
+ this.push(new Literal(item));
+ },
+
+ pushSource: function pushSource(source) {
+ if (this.pendingContent) {
+ this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));
+ this.pendingContent = undefined;
+ }
+
+ if (source) {
+ this.source.push(source);
+ }
+ },
+
+ replaceStack: function replaceStack(callback) {
+ var prefix = ['('],
+ stack = undefined,
+ createdStack = undefined,
+ usedLiteral = undefined;
+
+ /* istanbul ignore next */
+ if (!this.isInline()) {
+ throw new _exception2['default']('replaceStack on non-inline');
+ }
+
+ // We want to merge the inline statement into the replacement statement via ','
+ var top = this.popStack(true);
+
+ if (top instanceof Literal) {
+ // Literals do not need to be inlined
+ stack = [top.value];
+ prefix = ['(', stack];
+ usedLiteral = true;
+ } else {
+ // Get or create the current stack name for use by the inline
+ createdStack = true;
+ var _name = this.incrStack();
+
+ prefix = ['((', this.push(_name), ' = ', top, ')'];
+ stack = this.topStack();
+ }
+
+ var item = callback.call(this, stack);
+
+ if (!usedLiteral) {
+ this.popStack();
+ }
+ if (createdStack) {
+ this.stackSlot--;
+ }
+ this.push(prefix.concat(item, ')'));
+ },
+
+ incrStack: function incrStack() {
+ this.stackSlot++;
+ if (this.stackSlot > this.stackVars.length) {
+ this.stackVars.push('stack' + this.stackSlot);
+ }
+ return this.topStackName();
+ },
+ topStackName: function topStackName() {
+ return 'stack' + this.stackSlot;
+ },
+ flushInline: function flushInline() {
+ var inlineStack = this.inlineStack;
+ this.inlineStack = [];
+ for (var i = 0, len = inlineStack.length; i < len; i++) {
+ var entry = inlineStack[i];
+ /* istanbul ignore if */
+ if (entry instanceof Literal) {
+ this.compileStack.push(entry);
+ } else {
+ var stack = this.incrStack();
+ this.pushSource([stack, ' = ', entry, ';']);
+ this.compileStack.push(stack);
+ }
+ }
+ },
+ isInline: function isInline() {
+ return this.inlineStack.length;
+ },
+
+ popStack: function popStack(wrapped) {
+ var inline = this.isInline(),
+ item = (inline ? this.inlineStack : this.compileStack).pop();
+
+ if (!wrapped && item instanceof Literal) {
+ return item.value;
+ } else {
+ if (!inline) {
+ /* istanbul ignore next */
+ if (!this.stackSlot) {
+ throw new _exception2['default']('Invalid stack pop');
+ }
+ this.stackSlot--;
+ }
+ return item;
+ }
+ },
+
+ topStack: function topStack() {
+ var stack = this.isInline() ? this.inlineStack : this.compileStack,
+ item = stack[stack.length - 1];
+
+ /* istanbul ignore if */
+ if (item instanceof Literal) {
+ return item.value;
+ } else {
+ return item;
+ }
+ },
+
+ contextName: function contextName(context) {
+ if (this.useDepths && context) {
+ return 'depths[' + context + ']';
+ } else {
+ return 'depth' + context;
+ }
+ },
+
+ quotedString: function quotedString(str) {
+ return this.source.quotedString(str);
+ },
+
+ objectLiteral: function objectLiteral(obj) {
+ return this.source.objectLiteral(obj);
+ },
+
+ aliasable: function aliasable(name) {
+ var ret = this.aliases[name];
+ if (ret) {
+ ret.referenceCount++;
+ return ret;
+ }
+
+ ret = this.aliases[name] = this.source.wrap(name);
+ ret.aliasable = true;
+ ret.referenceCount = 1;
+
+ return ret;
+ },
+
+ setupHelper: function setupHelper(paramSize, name, blockHelper) {
+ var params = [],
+ paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);
+ var foundHelper = this.nameLookup('helpers', name, 'helper'),
+ callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');
+
+ return {
+ params: params,
+ paramsInit: paramsInit,
+ name: foundHelper,
+ callParams: [callContext].concat(params)
+ };
+ },
+
+ setupParams: function setupParams(helper, paramSize, params) {
+ var options = {},
+ contexts = [],
+ types = [],
+ ids = [],
+ objectArgs = !params,
+ param = undefined;
+
+ if (objectArgs) {
+ params = [];
+ }
+
+ options.name = this.quotedString(helper);
+ options.hash = this.popStack();
+
+ if (this.trackIds) {
+ options.hashIds = this.popStack();
+ }
+ if (this.stringParams) {
+ options.hashTypes = this.popStack();
+ options.hashContexts = this.popStack();
+ }
+
+ var inverse = this.popStack(),
+ program = this.popStack();
+
+ // Avoid setting fn and inverse if neither are set. This allows
+ // helpers to do a check for `if (options.fn)`
+ if (program || inverse) {
+ options.fn = program || 'container.noop';
+ options.inverse = inverse || 'container.noop';
+ }
+
+ // The parameters go on to the stack in order (making sure that they are evaluated in order)
+ // so we need to pop them off the stack in reverse order
+ var i = paramSize;
+ while (i--) {
+ param = this.popStack();
+ params[i] = param;
+
+ if (this.trackIds) {
+ ids[i] = this.popStack();
+ }
+ if (this.stringParams) {
+ types[i] = this.popStack();
+ contexts[i] = this.popStack();
+ }
+ }
+
+ if (objectArgs) {
+ options.args = this.source.generateArray(params);
+ }
+
+ if (this.trackIds) {
+ options.ids = this.source.generateArray(ids);
+ }
+ if (this.stringParams) {
+ options.types = this.source.generateArray(types);
+ options.contexts = this.source.generateArray(contexts);
+ }
+
+ if (this.options.data) {
+ options.data = 'data';
+ }
+ if (this.useBlockParams) {
+ options.blockParams = 'blockParams';
+ }
+ return options;
+ },
+
+ setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {
+ var options = this.setupParams(helper, paramSize, params);
+ options.loc = JSON.stringify(this.source.currentLocation);
+ options = this.objectLiteral(options);
+ if (useRegister) {
+ this.useRegister('options');
+ params.push('options');
+ return ['options=', options];
+ } else if (params) {
+ params.push(options);
+ return '';
+ } else {
+ return options;
+ }
+ }
+ };
+
+ (function () {
+ var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');
+
+ var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
+
+ for (var i = 0, l = reservedWords.length; i < l; i++) {
+ compilerWords[reservedWords[i]] = true;
+ }
+ })();
+
+ /**
+ * @deprecated May be removed in the next major version
+ */
+ JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
+ return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
+ };
+
+ function strictLookup(requireTerminal, compiler, parts, startPartIndex, type) {
+ var stack = compiler.popStack(),
+ len = parts.length;
+ if (requireTerminal) {
+ len--;
+ }
+
+ for (var i = startPartIndex; i < len; i++) {
+ stack = compiler.nameLookup(stack, parts[i], type);
+ }
+
+ if (requireTerminal) {
+ return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[len]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];
+ } else {
+ return stack;
+ }
+ }
+
+ exports['default'] = JavaScriptCompiler;
+ module.exports = exports['default'];
+
+ } (javascriptCompiler, javascriptCompiler.exports));
+ return javascriptCompiler.exports;
+}
+
+var hasRequiredHandlebars;
+
+function requireHandlebars () {
+ if (hasRequiredHandlebars) return handlebars.exports;
+ hasRequiredHandlebars = 1;
+ (function (module, exports) {
+
+ exports.__esModule = true;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _handlebarsRuntime = requireHandlebars_runtime();
+
+ var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime);
+
+ // Compiler imports
+
+ var _handlebarsCompilerAst = requireAst();
+
+ var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
+
+ var _handlebarsCompilerBase = requireBase();
+
+ var _handlebarsCompilerCompiler = requireCompiler();
+
+ var _handlebarsCompilerJavascriptCompiler = requireJavascriptCompiler();
+
+ var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
+
+ var _handlebarsCompilerVisitor = requireVisitor();
+
+ var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
+
+ var _handlebarsNoConflict = requireNoConflict();
+
+ var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
+
+ var _create = _handlebarsRuntime2['default'].create;
+ function create() {
+ var hb = _create();
+
+ hb.compile = function (input, options) {
+ return _handlebarsCompilerCompiler.compile(input, options, hb);
+ };
+ hb.precompile = function (input, options) {
+ return _handlebarsCompilerCompiler.precompile(input, options, hb);
+ };
+
+ hb.AST = _handlebarsCompilerAst2['default'];
+ hb.Compiler = _handlebarsCompilerCompiler.Compiler;
+ hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default'];
+ hb.Parser = _handlebarsCompilerBase.parser;
+ hb.parse = _handlebarsCompilerBase.parse;
+ hb.parseWithoutProcessing = _handlebarsCompilerBase.parseWithoutProcessing;
+
+ return hb;
+ }
+
+ var inst = create();
+ inst.create = create;
+
+ _handlebarsNoConflict2['default'](inst);
+
+ inst.Visitor = _handlebarsCompilerVisitor2['default'];
+
+ inst['default'] = inst;
+
+ exports['default'] = inst;
+ module.exports = exports['default'];
+
+ } (handlebars, handlebars.exports));
+ return handlebars.exports;
+}
+
+var printer = {};
+
+/* eslint-disable new-cap */
+
+var hasRequiredPrinter;
+
+function requirePrinter () {
+ if (hasRequiredPrinter) return printer;
+ hasRequiredPrinter = 1;
+
+ printer.__esModule = true;
+ printer.print = print;
+ printer.PrintVisitor = PrintVisitor;
+ // istanbul ignore next
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
+
+ var _visitor = requireVisitor();
+
+ var _visitor2 = _interopRequireDefault(_visitor);
+
+ function print(ast) {
+ return new PrintVisitor().accept(ast);
+ }
+
+ function PrintVisitor() {
+ this.padding = 0;
+ }
+
+ PrintVisitor.prototype = new _visitor2['default']();
+
+ PrintVisitor.prototype.pad = function (string) {
+ var out = '';
+
+ for (var i = 0, l = this.padding; i < l; i++) {
+ out += ' ';
+ }
+
+ out += string + '\n';
+ return out;
+ };
+
+ PrintVisitor.prototype.Program = function (program) {
+ var out = '',
+ body = program.body,
+ i = undefined,
+ l = undefined;
+
+ if (program.blockParams) {
+ var blockParams = 'BLOCK PARAMS: [';
+ for (i = 0, l = program.blockParams.length; i < l; i++) {
+ blockParams += ' ' + program.blockParams[i];
+ }
+ blockParams += ' ]';
+ out += this.pad(blockParams);
+ }
+
+ for (i = 0, l = body.length; i < l; i++) {
+ out += this.accept(body[i]);
+ }
+
+ this.padding--;
+
+ return out;
+ };
+
+ PrintVisitor.prototype.MustacheStatement = function (mustache) {
+ return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');
+ };
+ PrintVisitor.prototype.Decorator = function (mustache) {
+ return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');
+ };
+
+ PrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function (block) {
+ var out = '';
+
+ out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:');
+ this.padding++;
+ out += this.pad(this.SubExpression(block));
+ if (block.program) {
+ out += this.pad('PROGRAM:');
+ this.padding++;
+ out += this.accept(block.program);
+ this.padding--;
+ }
+ if (block.inverse) {
+ if (block.program) {
+ this.padding++;
+ }
+ out += this.pad('{{^}}');
+ this.padding++;
+ out += this.accept(block.inverse);
+ this.padding--;
+ if (block.program) {
+ this.padding--;
+ }
+ }
+ this.padding--;
+
+ return out;
+ };
+
+ PrintVisitor.prototype.PartialStatement = function (partial) {
+ var content = 'PARTIAL:' + partial.name.original;
+ if (partial.params[0]) {
+ content += ' ' + this.accept(partial.params[0]);
+ }
+ if (partial.hash) {
+ content += ' ' + this.accept(partial.hash);
+ }
+ return this.pad('{{> ' + content + ' }}');
+ };
+ PrintVisitor.prototype.PartialBlockStatement = function (partial) {
+ var content = 'PARTIAL BLOCK:' + partial.name.original;
+ if (partial.params[0]) {
+ content += ' ' + this.accept(partial.params[0]);
+ }
+ if (partial.hash) {
+ content += ' ' + this.accept(partial.hash);
+ }
+
+ content += ' ' + this.pad('PROGRAM:');
+ this.padding++;
+ content += this.accept(partial.program);
+ this.padding--;
+
+ return this.pad('{{> ' + content + ' }}');
+ };
+
+ PrintVisitor.prototype.ContentStatement = function (content) {
+ return this.pad("CONTENT[ '" + content.value + "' ]");
+ };
+
+ PrintVisitor.prototype.CommentStatement = function (comment) {
+ return this.pad("{{! '" + comment.value + "' }}");
+ };
+
+ PrintVisitor.prototype.SubExpression = function (sexpr) {
+ var params = sexpr.params,
+ paramStrings = [],
+ hash = undefined;
+
+ for (var i = 0, l = params.length; i < l; i++) {
+ paramStrings.push(this.accept(params[i]));
+ }
+
+ params = '[' + paramStrings.join(', ') + ']';
+
+ hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';
+
+ return this.accept(sexpr.path) + ' ' + params + hash;
+ };
+
+ PrintVisitor.prototype.PathExpression = function (id) {
+ var path = id.parts.join('/');
+ return (id.data ? '@' : '') + 'PATH:' + path;
+ };
+
+ PrintVisitor.prototype.StringLiteral = function (string) {
+ return '"' + string.value + '"';
+ };
+
+ PrintVisitor.prototype.NumberLiteral = function (number) {
+ return 'NUMBER{' + number.value + '}';
+ };
+
+ PrintVisitor.prototype.BooleanLiteral = function (bool) {
+ return 'BOOLEAN{' + bool.value + '}';
+ };
+
+ PrintVisitor.prototype.UndefinedLiteral = function () {
+ return 'UNDEFINED';
+ };
+
+ PrintVisitor.prototype.NullLiteral = function () {
+ return 'NULL';
+ };
+
+ PrintVisitor.prototype.Hash = function (hash) {
+ var pairs = hash.pairs,
+ joinedPairs = [];
+
+ for (var i = 0, l = pairs.length; i < l; i++) {
+ joinedPairs.push(this.accept(pairs[i]));
+ }
+
+ return 'HASH{' + joinedPairs.join(', ') + '}';
+ };
+ PrintVisitor.prototype.HashPair = function (pair) {
+ return pair.key + '=' + this.accept(pair.value);
+ };
+ /* eslint-enable new-cap */
+
+ return printer;
+}
+
+var lib;
+var hasRequiredLib;
+
+function requireLib () {
+ if (hasRequiredLib) return lib;
+ hasRequiredLib = 1;
+ // USAGE:
+ // var handlebars = require('handlebars');
+ /* eslint-env node */
+ /* eslint-disable no-var */
+
+ // var local = handlebars.create();
+
+ var handlebars = requireHandlebars()['default'];
+
+ var printer = requirePrinter();
+ handlebars.PrintVisitor = printer.PrintVisitor;
+ handlebars.print = printer.print;
+
+ lib = handlebars;
+
+ // Publish a Node.js require() handler for .handlebars and .hbs files
+ function extension(module, filename) {
+ var fs = require$$2;
+ var templateString = fs.readFileSync(filename, 'utf8');
+ module.exports = handlebars.compile(templateString);
+ }
+ /* istanbul ignore else */
+ if (typeof commonjsRequire !== 'undefined' && commonjsRequire.extensions) {
+ commonjsRequire.extensions['.handlebars'] = extension;
+ commonjsRequire.extensions['.hbs'] = extension;
+ }
+ return lib;
+}
+
+requireLib();
+
+function n(n,r){n.component(n=>{let{elem_classes:i=[],props:a={},html_template:o="${value}",css_template:s=``,js_on_load:c=null,head:l=null,visible:u=true,autoscroll:d=false,apply_default_css:f=true,component_class_name:p=`HTML`,upload:m=null,server:h={},onevent:g,onupdate_value:_,children:v}=r,y=derived(()=>{if(o.includes(`@children`)&&v){let e=o.split(`@children`);return [true,e[0]||``,e.slice(1).join(`@children`)||``]}return [false,o,``]}),b=derived(()=>to_array(y(),3)),x=derived(()=>b()[0]);snapshot(a);let S=`html-${Math.random().toString(36).substring(2,11)}`;onDestroy(()=>void 0);n.push(``),n.push(``),x()?(n.push(``),n.push(`
`),v?.(n),n.push(`
`)):n.push(``),n.push(`
`),n.push(``);});}
+
+export { n };
+//# sourceMappingURL=HTML-C5FT_DD6.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/HTML2-B4p8vVNB.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/HTML2-B4p8vVNB.js
new file mode 100644
index 0000000000000000000000000000000000000000..acada3023e198f34bc7ab3df51ff3262c064a499
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/HTML2-B4p8vVNB.js
@@ -0,0 +1,9 @@
+export { n as default } from './HTML-C5FT_DD6.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import 'fs';
+//# sourceMappingURL=HTML2-B4p8vVNB.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Image-BmvGPCEw.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Image-BmvGPCEw.js
new file mode 100644
index 0000000000000000000000000000000000000000..7cf102c701c831b7e1bcadd2c4391ca6b95f397b
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Image-BmvGPCEw.js
@@ -0,0 +1,7 @@
+import './async-Cv1-GZGV.js';
+import { m as attributes, j as clsx, d as derived } from './renderer-RGQlaTg4.js';
+
+function t(t,n){t.component(t=>{let{src:r=``,restProps:i={},data_testid:a,class_names:o=[],onload:s,$$slots:c,$$events:l,...u}=n,d=({class:e,...t})=>t,f=derived(()=>d(i)),p=derived(()=>d(u)),m=derived(()=>[o.join(` `),i.class,u.class].filter(Boolean).join(` `));t.push(` `);});}
+
+export { t };
+//# sourceMappingURL=Image-BmvGPCEw.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/ImagePreview-B_anz3Ad.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/ImagePreview-B_anz3Ad.js
new file mode 100644
index 0000000000000000000000000000000000000000..574156b6791af6b676d802cf3b60619aff6e2d8e
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/ImagePreview-B_anz3Ad.js
@@ -0,0 +1,10 @@
+import { P as c } from './2-CaEpGcoe.js';
+import { h, v, V as Ve, H, a as He, g, _, i as ie, I as Ie } from './src3-CHMGbv-A.js';
+import { t } from './Image-BmvGPCEw.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class, c as bind_props } from './renderer-RGQlaTg4.js';
+
+function f(f,p){f.component(f=>{let{value:m,alt_text:h$1=null,label:g$1=void 0,show_label:_$1,buttons:v$1=[],on_custom_button_click:y=null,selectable:b=false,i18n:x,display_icon_button_wrapper_top_corner:S=false,fullscreen:C=false,show_button_background:w=true,onselect:T,onfullscreen:E,onshare:D,onerror:O,onload:k}=p;h(f,{show_label:_$1,Icon:H,label:_$1?g$1||x(`image.image`):``}),f.push(` `),m==null||!m?.url?(f.push(``),v(f,{unpadded_box:true,size:`large`,children:e=>{H(e);}})):(f.push(``),f.push(``),Ve(f,{display_top_corner:S,show_background:w,buttons:v$1,on_custom_button_click:y,children:t=>{v$1.some(e=>typeof e==`string`&&e===`fullscreen`)?(t.push(``),He(t,{fullscreen:C,onclick:e=>{C=e,E?.(e);}})):t.push(``),t.push(` `),v$1.some(e=>typeof e==`string`&&e===`download`)?(t.push(``),g(t,{href:m.url,download:m.orig_name||`image`,children:e=>{_(e,{Icon:ie,label:x(`common.download`)});},$$slots:{default:true}})):t.push(``),t.push(` `),v$1.some(e=>typeof e==`string`&&e===`share`)?(t.push(``),Ie(t,{i18n:x,onshare:e=>D?.(e),onerror:e=>O?.(e),formatter:async t=>t?`
`:``,value:m})):t.push(``),t.push(``);}}),f.push(`
`),t(f,{src:m.url,restProps:{loading:`lazy`,alt:h$1??``},onload:k}),f.push(`
`)),f.push(``),bind_props(p,{fullscreen:C});});}
+
+export { f };
+//# sourceMappingURL=ImagePreview-B_anz3Ad.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/ImagePreview2-BsD-LSSg.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/ImagePreview2-BsD-LSSg.js
new file mode 100644
index 0000000000000000000000000000000000000000..1dc1fbde4f67189279fb1d77d97aa7cf679dc7ce
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/ImagePreview2-BsD-LSSg.js
@@ -0,0 +1,11 @@
+export { f as default } from './ImagePreview-B_anz3Ad.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import './src3-CHMGbv-A.js';
+import './html-CfyvkLET.js';
+import './Image-BmvGPCEw.js';
+//# sourceMappingURL=ImagePreview2-BsD-LSSg.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index-C6odbmg-.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index-C6odbmg-.js
new file mode 100644
index 0000000000000000000000000000000000000000..f8f404794b8feedc170b1796f79459ce796c7255
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index-C6odbmg-.js
@@ -0,0 +1,8 @@
+import { K as h } from './2-CaEpGcoe.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class, f as attr, b as attr_style } from './renderer-RGQlaTg4.js';
+
+function n(e,n){let{visible:r=true,scale:i=null,min_width:a=0,label:o=void 0,children:s}=n;e.push(``),s?.(e),e.push(`
`);}function r(t,r){t.component(t=>{let{$$slots:i,$$events:a,...o}=r,s=new h(o);n(t,{visible:s.shared.visible,scale:s.shared.scale,min_width:s.shared.min_width,children:e=>{o.children?.(e),e.push(``);}});});}
+
+export { n, r };
+//# sourceMappingURL=Index-C6odbmg-.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index10-CSY1TLqH.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index10-CSY1TLqH.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d659ba44a7ad20893e62e1412c4bb5776d2c19d
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index10-CSY1TLqH.js
@@ -0,0 +1,15 @@
+import { K as h } from './2-CaEpGcoe.js';
+import { p } from './statustracker-ColKCG6D.js';
+import { n, h as h$1, H, v, V as Ve, a as He } from './src3-CHMGbv-A.js';
+import './async-Cv1-GZGV.js';
+import { s as spread_props, a as attr_class, f as attr, h as ensure_array_like, i as stringify, b as attr_style, e as escape_html, d as derived } from './renderer-RGQlaTg4.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './server-BDON6J25.js';
+import './html-CfyvkLET.js';
+
+function l(l,u){l.component(l=>{let{$$slots:d,$$events:f,...p$1}=u,m=new h(p$1),h$2=false,g=derived(()=>m.shared.label||m.i18n(`annotated_image.annotated_image`));m.watch_for_change();let _=true,v$1;function y(e){n(e,{visible:m.shared.visible,elem_id:m.shared.elem_id,elem_classes:m.shared.elem_classes,padding:false,height:m.props.height,width:m.props.width,allow_overflow:false,container:m.shared.container,scale:m.shared.scale,min_width:m.shared.min_width,get fullscreen(){return h$2},set fullscreen(e){h$2=e,_=false;},children:e=>{if(p(e,spread_props([{autoscroll:m.shared.autoscroll,i18n:m.i18n},m.shared.loading_status])),e.push(` `),h$1(e,{show_label:m.shared.show_label,Icon:H,label:g()}),e.push(` `),m.props.value==null)e.push(``),v(e,{size:`large`,unpadded_box:true,children:e=>{H(e);}});else {e.push(``),e.push(`
`),Ve(e,{buttons:m.props.buttons||[],on_custom_button_click:e=>{m.dispatch(`custom_button_click`,{id:e});},children:e=>{(m.props.buttons||[]).some(e=>typeof e==`string`&&e===`fullscreen`)?(e.push(``),He(e,{fullscreen:h$2,onclick:e=>h$2=e})):e.push(``),e.push(``);}}),e.push(`
`);let t=ensure_array_like(m.props.value?m.props.value.annotations:[]);for(let n=0,r=t.length;n
`);}if(e.push(`
`),m.props.show_legend&&m.props.value){e.push(``),e.push(`
`);let t=ensure_array_like(m.props.value.annotations);for(let n=0,r=t.length;n${escape_html(r.label)}`);}e.push(`
`);}else e.push(``);e.push(``);}e.push(`
`);},$$slots:{default:true}});}do _=true,v$1=l.copy(),y(v$1);while(!_);l.subsume(v$1);});}
+
+export { l as default };
+//# sourceMappingURL=Index10-CSY1TLqH.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index11-DnGDaGVb.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index11-DnGDaGVb.js
new file mode 100644
index 0000000000000000000000000000000000000000..dd982acc01458c82998251d11c4cd78d9438de98
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index11-DnGDaGVb.js
@@ -0,0 +1,13 @@
+import { n } from './src3-CHMGbv-A.js';
+import './async-Cv1-GZGV.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './renderer-RGQlaTg4.js';
+import './html-CfyvkLET.js';
+
+function t(t,n$1){let{elem_id:r,elem_classes:i,visible:a=true,children:o}=n$1;n(t,{elem_id:r,elem_classes:i,visible:a,explicit_call:true,children:e=>{o?.(e),e.push(``);},$$slots:{default:true}});}
+
+export { t as default };
+//# sourceMappingURL=Index11-DnGDaGVb.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index12-CVC6jLOI.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index12-CVC6jLOI.js
new file mode 100644
index 0000000000000000000000000000000000000000..1460b43b8f52cf6b22ec0b031810f59bd64cfad6
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index12-CVC6jLOI.js
@@ -0,0 +1,11 @@
+import { d as d$1, c as c$1, p as p$1 } from './chunk-B3kRsjbd.js';
+import { K as h$1 } from './2-CaEpGcoe.js';
+import './async-Cv1-GZGV.js';
+import 'node:module';
+import './environment-C8sqWbA_.js';
+import './renderer-RGQlaTg4.js';
+
+var a=c$1(((t,n)=>{(function(e,r){typeof t==`object`?n.exports=t=r():typeof define==`function`&&define.amd?define([],r):e.CryptoJS=r();})(t,function(){var t=t||function(t,n){var r;if(typeof window<`u`&&window.crypto&&(r=window.crypto),typeof self<`u`&&self.crypto&&(r=self.crypto),typeof globalThis<`u`&&globalThis.crypto&&(r=globalThis.crypto),!r&&typeof window<`u`&&window.msCrypto&&(r=window.msCrypto),!r&&typeof global<`u`&&global.crypto&&(r=global.crypto),!r&&typeof p$1==`function`)try{r=p$1(`crypto`);}catch{}var i=function(){if(r){if(typeof r.getRandomValues==`function`)try{return r.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof r.randomBytes==`function`)try{return r.randomBytes(4).readInt32LE()}catch{}}throw Error(`Native crypto module could not be used to get secure random number.`)},a=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),o={},s=o.lib={},c=s.Base=function(){return {extend:function(e){var t=a(this);return e&&t.mixIn(e),(!t.hasOwnProperty(`init`)||this.init===t.init)&&(t.init=function(){t.$super.init.apply(this,arguments);}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty(`toString`)&&(this.toString=e.toString);},clone:function(){return this.init.prototype.extend(this)}}}(),l=s.WordArray=c.extend({init:function(e,t){e=this.words=e||[],t==n?this.sigBytes=e.length*4:this.sigBytes=t;},toString:function(e){return (e||d).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes,i=e.sigBytes;if(this.clamp(),r%4)for(var a=0;a>>2]>>>24-a%4*8&255;t[r+a>>>2]|=o<<24-(r+a)%4*8;}else for(var s=0;s>>2]=n[s>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=t.ceil(n/4);},clone:function(){var e=c.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>2]>>>24-i%4*8&255;r.push((a>>>4).toString(16)),r.push((a&15).toString(16));}return r.join(``)},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new l.init(n,t/2)}},f=u.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(a));}return r.join(``)},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new l.init(n,t)}},p=u.Utf8={stringify:function(e){try{return decodeURIComponent(escape(f.stringify(e)))}catch{throw Error(`Malformed UTF-8 data`)}},parse:function(e){return f.parse(unescape(encodeURIComponent(e)))}},m=s.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0;},_append:function(e){typeof e==`string`&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes;},_process:function(e){var n,r=this._data,i=r.words,a=r.sigBytes,o=this.blockSize,s=a/(o*4);s=e?t.ceil(s):t.max((s|0)-this._minBufferSize,0);var c=s*o,u=t.min(c*4,a);if(c){for(var d=0;d{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(t){var n=e,r=n.lib,i=r.Base,a=r.WordArray,o=n.x64={};o.Word=i.extend({init:function(e,t){this.high=e,this.low=t;}}),o.WordArray=i.extend({init:function(e,n){e=this.words=e||[],n==t?this.sigBytes=e.length*8:this.sigBytes=n;},toX32:function(){for(var e=this.words,t=e.length,n=[],r=0;r{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(){if(typeof ArrayBuffer==`function`){var t=e.lib.WordArray,n=t.init,r=t.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||typeof Uint8ClampedArray<`u`&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var t=e.byteLength,r=[],i=0;i>>2]|=e[i]<<24-i%4*8;n.call(this,r,t);}else n.apply(this,arguments);};r.prototype=t;}})(),e.lib.WordArray});})),c=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>16-i%4*8&65535;r.push(String.fromCharCode(a));}return r.join(``)},parse:function(e){for(var t=e.length,r=[],i=0;i>>1]|=e.charCodeAt(i)<<16-i%2*16;return n.create(r,t*2)}},r.Utf16LE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],a=0;a>>2]>>>16-a%4*8&65535);r.push(String.fromCharCode(o));}return r.join(``)},parse:function(e){for(var t=e.length,r=[],a=0;a>>1]|=i(e.charCodeAt(a)<<16-a%2*16);return n.create(r,t*2)}};function i(e){return e<<8&4278255360|e>>>8&16711935}})(),e.enc.Utf16});})),l=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,r=this._map;e.clamp();for(var i=[],a=0;a>>2]>>>24-a%4*8&255,s=t[a+1>>>2]>>>24-(a+1)%4*8&255,c=t[a+2>>>2]>>>24-(a+2)%4*8&255,l=o<<16|s<<8|c,u=0;u<4&&a+u*.75>>6*(3-u)&63));var d=r.charAt(64);if(d)for(;i.length%4;)i.push(d);return i.join(``)},parse:function(e){var t=e.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var a=0;a>>6-o%4*2;i[a>>>2]|=s<<24-a%4*8,a++;}return n.create(i,a)}})(),e.enc.Base64});})),u=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.WordArray,r=t.enc;r.Base64url={stringify:function(e,t){t===void 0&&(t=true);var n=e.words,r=e.sigBytes,i=t?this._safe_map:this._map;e.clamp();for(var a=[],o=0;o>>2]>>>24-o%4*8&255,c=n[o+1>>>2]>>>24-(o+1)%4*8&255,l=n[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|c<<8|l,d=0;d<4&&o+d*.75>>6*(3-d)&63));var f=i.charAt(64);if(f)for(;a.length%4;)a.push(f);return a.join(``)},parse:function(e,t){t===void 0&&(t=true);var n=e.length,r=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>6-o%4*2;i[a>>>2]|=s<<24-a%4*8,a++;}return n.create(i,a)}})(),e.enc.Base64url});})),d=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=[];(function(){for(var e=0;e<64;e++)s[e]=t.abs(t.sin(e+1))*4294967296|0;})();var c=o.MD5=a.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878]);},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360;}var a=this._hash.words,o=e[t+0],c=e[t+1],p=e[t+2],m=e[t+3],h=e[t+4],g=e[t+5],_=e[t+6],v=e[t+7],y=e[t+8],b=e[t+9],x=e[t+10],S=e[t+11],C=e[t+12],w=e[t+13],T=e[t+14],E=e[t+15],D=a[0],O=a[1],k=a[2],A=a[3];D=l(D,O,k,A,o,7,s[0]),A=l(A,D,O,k,c,12,s[1]),k=l(k,A,D,O,p,17,s[2]),O=l(O,k,A,D,m,22,s[3]),D=l(D,O,k,A,h,7,s[4]),A=l(A,D,O,k,g,12,s[5]),k=l(k,A,D,O,_,17,s[6]),O=l(O,k,A,D,v,22,s[7]),D=l(D,O,k,A,y,7,s[8]),A=l(A,D,O,k,b,12,s[9]),k=l(k,A,D,O,x,17,s[10]),O=l(O,k,A,D,S,22,s[11]),D=l(D,O,k,A,C,7,s[12]),A=l(A,D,O,k,w,12,s[13]),k=l(k,A,D,O,T,17,s[14]),O=l(O,k,A,D,E,22,s[15]),D=u(D,O,k,A,c,5,s[16]),A=u(A,D,O,k,_,9,s[17]),k=u(k,A,D,O,S,14,s[18]),O=u(O,k,A,D,o,20,s[19]),D=u(D,O,k,A,g,5,s[20]),A=u(A,D,O,k,x,9,s[21]),k=u(k,A,D,O,E,14,s[22]),O=u(O,k,A,D,h,20,s[23]),D=u(D,O,k,A,b,5,s[24]),A=u(A,D,O,k,T,9,s[25]),k=u(k,A,D,O,m,14,s[26]),O=u(O,k,A,D,y,20,s[27]),D=u(D,O,k,A,w,5,s[28]),A=u(A,D,O,k,p,9,s[29]),k=u(k,A,D,O,v,14,s[30]),O=u(O,k,A,D,C,20,s[31]),D=d(D,O,k,A,g,4,s[32]),A=d(A,D,O,k,y,11,s[33]),k=d(k,A,D,O,S,16,s[34]),O=d(O,k,A,D,T,23,s[35]),D=d(D,O,k,A,c,4,s[36]),A=d(A,D,O,k,h,11,s[37]),k=d(k,A,D,O,v,16,s[38]),O=d(O,k,A,D,x,23,s[39]),D=d(D,O,k,A,w,4,s[40]),A=d(A,D,O,k,o,11,s[41]),k=d(k,A,D,O,m,16,s[42]),O=d(O,k,A,D,_,23,s[43]),D=d(D,O,k,A,b,4,s[44]),A=d(A,D,O,k,C,11,s[45]),k=d(k,A,D,O,E,16,s[46]),O=d(O,k,A,D,p,23,s[47]),D=f(D,O,k,A,o,6,s[48]),A=f(A,D,O,k,v,10,s[49]),k=f(k,A,D,O,T,15,s[50]),O=f(O,k,A,D,g,21,s[51]),D=f(D,O,k,A,C,6,s[52]),A=f(A,D,O,k,m,10,s[53]),k=f(k,A,D,O,x,15,s[54]),O=f(O,k,A,D,c,21,s[55]),D=f(D,O,k,A,y,6,s[56]),A=f(A,D,O,k,E,10,s[57]),k=f(k,A,D,O,_,15,s[58]),O=f(O,k,A,D,w,21,s[59]),D=f(D,O,k,A,h,6,s[60]),A=f(A,D,O,k,S,10,s[61]),k=f(k,A,D,O,p,15,s[62]),O=f(O,k,A,D,b,21,s[63]),a[0]=a[0]+D|0,a[1]=a[1]+O|0,a[2]=a[2]+k|0,a[3]=a[3]+A|0;},_doFinalize:function(){var e=this._data,n=e.words,r=this._nDataBytes*8,i=e.sigBytes*8;n[i>>>5]|=128<<24-i%32;var a=t.floor(r/4294967296),o=r;n[(i+64>>>9<<4)+15]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360,n[(i+64>>>9<<4)+14]=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,e.sigBytes=(n.length+1)*4,this._process();for(var s=this._hash,c=s.words,l=0;l<4;l++){var u=c[l];c[l]=(u<<8|u>>>24)&16711935|(u<<24|u>>>8)&4278255360;}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,n,r,i,a,o){var s=e+(t&n|~t&r)+i+o;return (s<>>32-a)+t}function u(e,t,n,r,i,a,o){var s=e+(t&r|n&~r)+i+o;return (s< >>32-a)+t}function d(e,t,n,r,i,a,o){var s=e+(t^n^r)+i+o;return (s< >>32-a)+t}function f(e,t,n,r,i,a,o){var s=e+(n^(t|~r))+i+o;return (s< >>32-a)+t}n.MD5=a._createHelper(c),n.HmacMD5=a._createHmacHelper(c);})(Math),e.MD5});})),f=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib,r=n.WordArray,i=n.Hasher,a=t.algo,o=[],s=a.SHA1=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520]);},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],s=n[3],c=n[4],l=0;l<80;l++){if(l<16)o[l]=e[t+l]|0;else {var u=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=u<<1|u>>>31;}var d=(r<<5|r>>>27)+c+o[l];l<20?d+=(i&a|~i&s)+1518500249:l<40?d+=(i^a^s)+1859775393:l<60?d+=(i&a|i&s|a&s)-1894007588:d+=(i^a^s)-899497514,c=s,s=a,a=i<<30|i>>>2,i=r,r=d;}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+s|0,n[4]=n[4]+c|0;},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;return t[r>>>5]|=128<<24-r%32,t[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),t[(r+64>>>9<<4)+15]=n,e.sigBytes=t.length*4,this._process(),this._hash},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA1=i._createHelper(s),t.HmacSHA1=i._createHmacHelper(s);})(),e.SHA1});})),p=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=[],c=[];(function(){function e(e){for(var n=t.sqrt(e),r=2;r<=n;r++)if(!(e%r))return false;return true}function n(e){return (e-(e|0))*4294967296|0}for(var r=2,i=0;i<64;)e(r)&&(i<8&&(s[i]=n(t.pow(r,1/2))),c[i]=n(t.pow(r,1/3)),i++),r++;})();var l=[],u=o.SHA256=a.extend({_doReset:function(){this._hash=new i.init(s.slice(0));},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],u=n[5],d=n[6],f=n[7],p=0;p<64;p++){if(p<16)l[p]=e[t+p]|0;else {var m=l[p-15],h=(m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3,g=l[p-2],_=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[p]=h+l[p-7]+_+l[p-16];}var v=s&u^~s&d,y=r&i^r&a^i&a,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),x=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),S=f+x+v+c[p]+l[p],C=b+y;f=d,d=u,u=s,s=o+S|0,o=a,a=i,i=r,r=S+C|0;}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+u|0,n[6]=n[6]+d|0,n[7]=n[7]+f|0;},_doFinalize:function(){var e=this._data,n=e.words,r=this._nDataBytes*8,i=e.sigBytes*8;return n[i>>>5]|=128<<24-i%32,n[(i+64>>>9<<4)+14]=t.floor(r/4294967296),n[(i+64>>>9<<4)+15]=r,e.sigBytes=n.length*4,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});n.SHA256=a._createHelper(u),n.HmacSHA256=a._createHmacHelper(u);})(Math),e.SHA256});})),m=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),p()):typeof define==`function`&&define.amd?define([`./core`,`./sha256`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.WordArray,r=t.algo,i=r.SHA256,a=r.SHA224=i.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]);},_doFinalize:function(){var e=i._doFinalize.call(this);return e.sigBytes-=4,e}});t.SHA224=i._createHelper(a),t.HmacSHA224=i._createHmacHelper(a);})(),e.SHA224});})),h=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),o()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.Hasher,r=t.x64,i=r.Word,a=r.WordArray,o=t.algo;function s(){return i.create.apply(i,arguments)}var c=[s(1116352408,3609767458),s(1899447441,602891725),s(3049323471,3964484399),s(3921009573,2173295548),s(961987163,4081628472),s(1508970993,3053834265),s(2453635748,2937671579),s(2870763221,3664609560),s(3624381080,2734883394),s(310598401,1164996542),s(607225278,1323610764),s(1426881987,3590304994),s(1925078388,4068182383),s(2162078206,991336113),s(2614888103,633803317),s(3248222580,3479774868),s(3835390401,2666613458),s(4022224774,944711139),s(264347078,2341262773),s(604807628,2007800933),s(770255983,1495990901),s(1249150122,1856431235),s(1555081692,3175218132),s(1996064986,2198950837),s(2554220882,3999719339),s(2821834349,766784016),s(2952996808,2566594879),s(3210313671,3203337956),s(3336571891,1034457026),s(3584528711,2466948901),s(113926993,3758326383),s(338241895,168717936),s(666307205,1188179964),s(773529912,1546045734),s(1294757372,1522805485),s(1396182291,2643833823),s(1695183700,2343527390),s(1986661051,1014477480),s(2177026350,1206759142),s(2456956037,344077627),s(2730485921,1290863460),s(2820302411,3158454273),s(3259730800,3505952657),s(3345764771,106217008),s(3516065817,3606008344),s(3600352804,1432725776),s(4094571909,1467031594),s(275423344,851169720),s(430227734,3100823752),s(506948616,1363258195),s(659060556,3750685593),s(883997877,3785050280),s(958139571,3318307427),s(1322822218,3812723403),s(1537002063,2003034995),s(1747873779,3602036899),s(1955562222,1575990012),s(2024104815,1125592928),s(2227730452,2716904306),s(2361852424,442776044),s(2428436474,593698344),s(2756734187,3733110249),s(3204031479,2999351573),s(3329325298,3815920427),s(3391569614,3928383900),s(3515267271,566280711),s(3940187606,3454069534),s(4118630271,4000239992),s(116418474,1914138554),s(174292421,2731055270),s(289380356,3203993006),s(460393269,320620315),s(685471733,587496836),s(852142971,1086792851),s(1017036298,365543100),s(1126000580,2618297676),s(1288033470,3409855158),s(1501505948,4234509866),s(1607167915,987167468),s(1816402316,1246189591)],l=[];(function(){for(var e=0;e<80;e++)l[e]=s();})();var u=o.SHA512=n.extend({_doReset:function(){this._hash=new a.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)]);},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],u=n[5],d=n[6],f=n[7],p=r.high,m=r.low,h=i.high,g=i.low,_=a.high,v=a.low,y=o.high,b=o.low,x=s.high,S=s.low,C=u.high,w=u.low,T=d.high,E=d.low,D=f.high,O=f.low,k=p,A=m,j=h,M=g,N=_,P=v,F=y,I=b,L=x,R=S,z=C,B=w,V=T,H=E,ee=D,U=O,W=0;W<80;W++){var G,K,q=l[W];if(W<16)K=q.high=e[t+W*2]|0,G=q.low=e[t+W*2+1]|0;else {var te=l[W-15],J=te.high,Y=te.low,ne=(J>>>1|Y<<31)^(J>>>8|Y<<24)^J>>>7,re=(Y>>>1|J<<31)^(Y>>>8|J<<24)^(Y>>>7|J<<25),ie=l[W-2],X=ie.high,Z=ie.low,ae=(X>>>19|Z<<13)^(X<<3|Z>>>29)^X>>>6,oe=(Z>>>19|X<<13)^(Z<<3|X>>>29)^(Z>>>6|X<<26),se=l[W-7],ce=se.high,le=se.low,ue=l[W-16],de=ue.high,fe=ue.low;G=re+le,K=ne+ce+ +(G>>>0>>0),G+=oe,K=K+ae+ +(G>>>0>>0),G+=fe,K=K+de+ +(G>>>0>>0),q.high=K,q.low=G;}var pe=L&z^~L&V,me=R&B^~R&H,he=k&j^k&N^j&N,ge=A&M^A&P^M&P,_e=(k>>>28|A<<4)^(k<<30|A>>>2)^(k<<25|A>>>7),ve=(A>>>28|k<<4)^(A<<30|k>>>2)^(A<<25|k>>>7),ye=(L>>>14|R<<18)^(L>>>18|R<<14)^(L<<23|R>>>9),be=(R>>>14|L<<18)^(R>>>18|L<<14)^(R<<23|L>>>9),xe=c[W],Se=xe.high,Ce=xe.low,Q=U+be,$=ee+ye+ +(Q>>>0>>0),Q=Q+me,$=$+pe+ +(Q>>>0>>0),Q=Q+Ce,$=$+Se+ +(Q>>>0>>0),Q=Q+G,$=$+K+ +(Q>>>0>>0),we=ve+ge,Te=_e+he+ +(we>>>0>>0);ee=V,U=H,V=z,H=B,z=L,B=R,R=I+Q|0,L=F+$+ +(R>>>0>>0)|0,F=N,I=P,N=j,P=M,j=k,M=A,A=Q+we|0,k=$+Te+ +(A>>>0>>0)|0;}m=r.low=m+A,r.high=p+k+ +(m>>>0>>0),g=i.low=g+M,i.high=h+j+ +(g>>>0>>0),v=a.low=v+P,a.high=_+N+ +(v>>>0>>0),b=o.low=b+I,o.high=y+F+ +(b>>>0>>0),S=s.low=S+R,s.high=x+L+ +(S>>>0>>0),w=u.low=w+B,u.high=C+z+ +(w>>>0>>0),E=d.low=E+H,d.high=T+V+ +(E>>>0>>0),O=f.low=O+U,f.high=D+ee+ +(O>>>0>>0);},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;return t[r>>>5]|=128<<24-r%32,t[(r+128>>>10<<5)+30]=Math.floor(n/4294967296),t[(r+128>>>10<<5)+31]=n,e.sigBytes=t.length*4,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:1024/32});t.SHA512=n._createHelper(u),t.HmacSHA512=n._createHmacHelper(u);})(),e.SHA512});})),g=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),o(),h()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`,`./sha512`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.x64,r=n.Word,i=n.WordArray,a=t.algo,o=a.SHA512,s=a.SHA384=o.extend({_doReset:function(){this._hash=new i.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)]);},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}});t.SHA384=o._createHelper(s),t.HmacSHA384=o._createHmacHelper(s);})(),e.SHA384});})),_=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),o()):typeof define==`function`&&define.amd?define([`./core`,`./x64-core`],r):r(n.CryptoJS);})(e,function(e){return (function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.x64.Word,s=n.algo,c=[],l=[],u=[];(function(){for(var e=1,t=0,n=0;n<24;n++){c[e+5*t]=(n+1)*(n+2)/2%64;var r=t%5,i=(2*e+3*t)%5;e=r,t=i;}for(var e=0;e<5;e++)for(var t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var a=1,s=0;s<24;s++){for(var d=0,f=0,p=0;p<7;p++){if(a&1){var m=(1< >>24)&16711935|(a<<24|a>>>8)&4278255360,o=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360;var s=n[i];s.high^=o,s.low^=a;}for(var f=0;f<24;f++){for(var p=0;p<5;p++){for(var m=0,h=0,g=0;g<5;g++){var s=n[p+5*g];m^=s.high,h^=s.low;}var _=d[p];_.high=m,_.low=h;}for(var p=0;p<5;p++)for(var v=d[(p+4)%5],y=d[(p+1)%5],b=y.high,x=y.low,m=v.high^(b<<1|x>>>31),h=v.low^(x<<1|b>>>31),g=0;g<5;g++){var s=n[p+5*g];s.high^=m,s.low^=h;}for(var S=1;S<25;S++){var m,h,s=n[S],C=s.high,w=s.low,T=c[S];T<32?(m=C<>>32-T,h=w<>>32-T):(m=w<>>64-T,h=C<>>64-T);var E=d[l[S]];E.high=m,E.low=h;}var D=d[0],O=n[0];D.high=O.high,D.low=O.low;for(var p=0;p<5;p++)for(var g=0;g<5;g++){var S=p+5*g,s=n[S],k=d[S],A=d[(p+1)%5+5*g],j=d[(p+2)%5+5*g];s.high=k.high^~A.high&j.high,s.low=k.low^~A.low&j.low;}var s=n[0],M=u[f];s.high^=M.high,s.low^=M.low;}},_doFinalize:function(){var e=this._data,n=e.words;this._nDataBytes*8;var r=e.sigBytes*8,a=this.blockSize*32;n[r>>>5]|=1<<24-r%32,n[(t.ceil((r+1)/a)*a>>>5)-1]|=128,e.sigBytes=n.length*4,this._process();for(var o=this._state,s=this.cfg.outputLength/8,c=s/8,l=[],u=0;u>>24)&16711935|(f<<24|f>>>8)&4278255360,p=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360,l.push(p),l.push(f);}return new i.init(l,s)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),n=0;n<25;n++)t[n]=t[n].clone();return e}});n.SHA3=a._createHelper(f),n.HmacSHA3=a._createHmacHelper(f);})(Math),e.SHA3});})),v=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){return (function(t){var n=e,r=n.lib,i=r.WordArray,a=r.Hasher,o=n.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),c=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),u=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),d=i.create([0,1518500249,1859775393,2400959708,2840853838]),f=i.create([1352829926,1548603684,1836072691,2053994217,0]),p=o.RIPEMD160=a.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520]);},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=(i<<8|i>>>24)&16711935|(i<<24|i>>>8)&4278255360;}for(var a=this._hash.words,o=d.words,p=f.words,b=s.words,x=c.words,S=l.words,C=u.words,w,T,E,D,O,k=w=a[0],A=T=a[1],j=E=a[2],M=D=a[3],N=O=a[4],P,n=0;n<80;n+=1)P=w+e[t+b[n]]|0,n<16?P+=m(T,E,D)+o[0]:n<32?P+=h(T,E,D)+o[1]:n<48?P+=g(T,E,D)+o[2]:n<64?P+=_(T,E,D)+o[3]:P+=v(T,E,D)+o[4],P|=0,P=y(P,S[n]),P=P+O|0,w=O,O=D,D=y(E,10),E=T,T=P,P=k+e[t+x[n]]|0,n<16?P+=v(A,j,M)+p[0]:n<32?P+=_(A,j,M)+p[1]:n<48?P+=g(A,j,M)+p[2]:n<64?P+=h(A,j,M)+p[3]:P+=m(A,j,M)+p[4],P|=0,P=y(P,C[n]),P=P+N|0,k=N,N=M,M=y(j,10),j=A,A=P;P=a[1]+E+M|0,a[1]=a[2]+D+N|0,a[2]=a[3]+O+k|0,a[3]=a[4]+w+A|0,a[4]=a[0]+T+j|0,a[0]=P;},_doFinalize:function(){var e=this._data,t=e.words,n=this._nDataBytes*8,r=e.sigBytes*8;t[r>>>5]|=128<<24-r%32,t[(r+64>>>9<<4)+14]=(n<<8|n>>>24)&16711935|(n<<24|n>>>8)&4278255360,e.sigBytes=(t.length+1)*4,this._process();for(var i=this._hash,a=i.words,o=0;o<5;o++){var s=a[o];a[o]=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360;}return i},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function m(e,t,n){return e^t^n}function h(e,t,n){return e&t|~e&n}function g(e,t,n){return (e|~t)^n}function _(e,t,n){return e&n|t&~n}function v(e,t,n){return e^(t|~n)}function y(e,t){return e<>>32-t}n.RIPEMD160=a._createHelper(p),n.HmacRIPEMD160=a._createHmacHelper(p);})(),e.RIPEMD160});})),y=c$1(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=e=r(a()):typeof define==`function`&&define.amd?define([`./core`],r):r(n.CryptoJS);})(e,function(e){(function(){var t=e,n=t.lib.Base,r=t.enc.Utf8,i=t.algo;i.HMAC=n.extend({init:function(e,t){e=this._hasher=new e.init,typeof t==`string`&&(t=r.parse(t));var n=e.blockSize,i=n*4;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),o=this._iKey=t.clone(),s=a.words,c=o.words,l=0;l{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),p(),y()):typeof define==`function`&&define.amd?define([`./core`,`./sha256`,`./hmac`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib,r=n.Base,i=n.WordArray,a=t.algo,o=a.SHA256,s=a.HMAC,c=a.PBKDF2=r.extend({cfg:r.extend({keySize:128/32,hasher:o,iterations:25e4}),init:function(e){this.cfg=this.cfg.extend(e);},compute:function(e,t){for(var n=this.cfg,r=s.create(n.hasher,e),a=i.create(),o=i.create([1]),c=a.words,l=o.words,u=n.keySize,d=n.iterations;c.length{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),f(),y()):typeof define==`function`&&define.amd?define([`./core`,`./sha1`,`./hmac`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib,r=n.Base,i=n.WordArray,a=t.algo,o=a.MD5,s=a.EvpKDF=r.extend({cfg:r.extend({keySize:128/32,hasher:o,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e);},compute:function(e,t){for(var n,r=this.cfg,a=r.hasher.create(),o=i.create(),s=o.words,c=r.keySize,l=r.iterations;s.length{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),x()):typeof define==`function`&&define.amd?define([`./core`,`./evpkdf`],r):r(n.CryptoJS);})(e,function(e){e.lib.Cipher||function(t){var n=e,r=n.lib,i=r.Base,a=r.WordArray,o=r.BufferedBlockAlgorithm,s=n.enc;s.Utf8;var c=s.Base64,l=n.algo.EvpKDF,u=r.Cipher=o.extend({cfg:i.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,n){this.cfg=this.cfg.extend(n),this._xformMode=e,this._key=t,this.reset();},reset:function(){o.reset.call(this),this._doReset();},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return typeof e==`string`?S:y}return function(t){return {encrypt:function(n,r,i){return e(r).encrypt(t,n,r,i)},decrypt:function(n,r,i){return e(r).decrypt(t,n,r,i)}}}}()});r.StreamCipher=u.extend({_doFinalize:function(){return this._process(true)},blockSize:1});var d=n.mode={},f=r.BlockCipherMode=i.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t;}}),p=d.CBC=function(){var e=f.extend();e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;n.call(this,e,t,i),r.encryptBlock(e,t),this._prevBlock=e.slice(t,t+i);}}),e.Decryptor=e.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,a=e.slice(t,t+i);r.decryptBlock(e,t),n.call(this,e,t,i),this._prevBlock=a;}});function n(e,n,r){var i,a=this._iv;a?(i=a,this._iv=t):i=this._prevBlock;for(var o=0;o>>2]&255;e.sigBytes-=t;}};r.BlockCipher=u.extend({cfg:u.cfg.extend({mode:p,padding:h}),reset:function(){var e;u.reset.call(this);var t=this.cfg,n=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,n&&n.words):(this._mode=e.call(r,this,n&&n.words),this._mode.__creator=e);},_doProcessBlock:function(e,t){this._mode.processBlock(e,t);},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(true)):(e=this._process(true),t.unpad(e)),e},blockSize:128/32});var g=r.CipherParams=i.extend({init:function(e){this.mixIn(e);},toString:function(e){return (e||this.formatter).stringify(this)}}),_=n.format={},v=_.OpenSSL={stringify:function(e){var t,n=e.ciphertext,r=e.salt;return t=r?a.create([1398893684,1701076831]).concat(r).concat(n):n,t.toString(c)},parse:function(e){var t,n=c.parse(e),r=n.words;return r[0]==1398893684&&r[1]==1701076831&&(t=a.create(r.slice(2,4)),r.splice(0,4),n.sigBytes-=16),g.create({ciphertext:n,salt:t})}},y=r.SerializableCipher=i.extend({cfg:i.extend({format:v}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r),a=i.finalize(t),o=i.cfg;return g.create({ciphertext:a,key:n,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return typeof e==`string`?t.parse(e,this):e}}),b=n.kdf={},x=b.OpenSSL={execute:function(e,t,n,r,i){if(r||=a.random(64/8),i)var o=l.create({keySize:t+n,hasher:i}).compute(e,r);else var o=l.create({keySize:t+n}).compute(e,r);var s=a.create(o.words.slice(t),n*4);return o.sigBytes=t*4,g.create({key:o,iv:s,salt:r})}},S=r.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:x}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=r.kdf.execute(n,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=i.iv;var a=y.encrypt.call(this,e,t,i.key,r);return a.mixIn(i),a},decrypt:function(e,t,n,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var i=r.kdf.execute(n,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=i.iv,y.decrypt.call(this,e,t,i.key,r)}});}();});})),C=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.mode.CFB=function(){var t=e.lib.BlockCipherMode.extend();t.Encryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;n.call(this,e,t,i,r),this._prevBlock=e.slice(t,t+i);}}),t.Decryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,a=e.slice(t,t+i);n.call(this,e,t,i,r),this._prevBlock=a;}});function n(e,t,n,r){var i,a=this._iv;a?(i=a.slice(0),this._iv=void 0):i=this._prevBlock,r.encryptBlock(i,0);for(var o=0;o{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.mode.CTR=function(){var t=e.lib.BlockCipherMode.extend();return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,a=this._counter;i&&(a=this._counter=i.slice(0),this._iv=void 0);var o=a.slice(0);n.encryptBlock(o,0),a[r-1]=a[r-1]+1|0;for(var s=0;s{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.mode.CTRGladman=function(){var t=e.lib.BlockCipherMode.extend();function n(e){if((e>>24&255)==255){var t=e>>16&255,n=e>>8&255,r=e&255;t===255?(t=0,n===255?(n=0,r===255?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r;}else e+=1<<24;return e}function r(e){return (e[0]=n(e[0]))===0&&(e[1]=n(e[1])),e}return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,i=n.blockSize,a=this._iv,o=this._counter;a&&(o=this._counter=a.slice(0),this._iv=void 0),r(o);var s=o.slice(0);n.encryptBlock(s,0);for(var c=0;c{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.mode.OFB=function(){var t=e.lib.BlockCipherMode.extend();return t.Decryptor=t.Encryptor=t.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,a=this._keystream;i&&(a=this._keystream=i.slice(0),this._iv=void 0),n.encryptBlock(a,0);for(var o=0;o{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.mode.ECB=function(){var t=e.lib.BlockCipherMode.extend();return t.Encryptor=t.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t);}}),t.Decryptor=t.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t);}}),t}(),e.mode.ECB});})),O=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.pad.AnsiX923={pad:function(e,t){var n=e.sigBytes,r=t*4,i=r-n%r,a=n+i-1;e.clamp(),e.words[a>>>2]|=i<<24-a%4*8,e.sigBytes+=i;},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t;}},e.pad.Ansix923});})),k=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.pad.Iso10126={pad:function(t,n){var r=n*4,i=r-t.sigBytes%r;t.concat(e.lib.WordArray.random(i-1)).concat(e.lib.WordArray.create([i<<24],1));},unpad:function(e){var t=e.words[e.sigBytes-1>>>2]&255;e.sigBytes-=t;}},e.pad.Iso10126});})),A=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.pad.Iso97971={pad:function(t,n){t.concat(e.lib.WordArray.create([2147483648],1)),e.pad.ZeroPadding.pad(t,n);},unpad:function(t){e.pad.ZeroPadding.unpad(t),t.sigBytes--;}},e.pad.Iso97971});})),j=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.pad.ZeroPadding={pad:function(e,t){var n=t*4;e.clamp(),e.sigBytes+=n-(e.sigBytes%n||n);},unpad:function(e){for(var t=e.words,n=e.sigBytes-1,n=e.sigBytes-1;n>=0;n--)if(t[n>>>2]>>>24-n%4*8&255){e.sigBytes=n+1;break}}},e.pad.ZeroPadding});})),M=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return e.pad.NoPadding={pad:function(){},unpad:function(){}},e.pad.NoPadding});})),N=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),S()):typeof define==`function`&&define.amd?define([`./core`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return (function(t){var n=e,r=n.lib.CipherParams,i=n.enc.Hex,a=n.format;a.Hex={stringify:function(e){return e.ciphertext.toString(i)},parse:function(e){var t=i.parse(e);return r.create({ciphertext:t})}};})(),e.format.Hex});})),P=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),l(),d(),x(),S()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.BlockCipher,r=t.algo,i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[];(function(){for(var e=[],t=0;t<256;t++)t<128?e[t]=t<<1:e[t]=t<<1^283;for(var n=0,r=0,t=0;t<256;t++){var m=r^r<<1^r<<2^r<<3^r<<4;m=m>>>8^m&255^99,i[n]=m,a[m]=n;var h=e[n],g=e[h],_=e[g],v=e[m]*257^m*16843008;o[n]=v<<24|v>>>8,s[n]=v<<16|v>>>16,c[n]=v<<8|v>>>24,l[n]=v;var v=_*16843009^g*65537^h*257^n*16843008;u[m]=v<<24|v>>>8,d[m]=v<<16|v>>>16,f[m]=v<<8|v>>>24,p[m]=v,n?(n=h^e[e[e[_^h]]],r^=e[e[r]]):n=r=1;}})();var m=[0,1,2,4,8,16,32,64,128,27,54],h=r.AES=n.extend({_doReset:function(){var e;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var t=this._keyPriorReset=this._key,n=t.words,r=t.sigBytes/4,a=((this._nRounds=r+6)+1)*4,o=this._keySchedule=[],s=0;s6&&s%r==4&&(e=i[e>>>24]<<24|i[e>>>16&255]<<16|i[e>>>8&255]<<8|i[e&255]):(e=e<<8|e>>>24,e=i[e>>>24]<<24|i[e>>>16&255]<<16|i[e>>>8&255]<<8|i[e&255],e^=m[s/r|0]<<24),o[s]=o[s-r]^e);for(var c=this._invKeySchedule=[],l=0;l >>24]]^d[i[e>>>16&255]]^f[i[e>>>8&255]]^p[i[e&255]];}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,s,c,l,i);},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,u,d,f,p,a);var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n;},_doCryptBlock:function(e,t,n,r,i,a,o,s){for(var c=this._nRounds,l=e[t]^n[0],u=e[t+1]^n[1],d=e[t+2]^n[2],f=e[t+3]^n[3],p=4,m=1;m>>24]^i[u>>>16&255]^a[d>>>8&255]^o[f&255]^n[p++],g=r[u>>>24]^i[d>>>16&255]^a[f>>>8&255]^o[l&255]^n[p++],_=r[d>>>24]^i[f>>>16&255]^a[l>>>8&255]^o[u&255]^n[p++],v=r[f>>>24]^i[l>>>16&255]^a[u>>>8&255]^o[d&255]^n[p++];l=h,u=g,d=_,f=v;}var h=(s[l>>>24]<<24|s[u>>>16&255]<<16|s[d>>>8&255]<<8|s[f&255])^n[p++],g=(s[u>>>24]<<24|s[d>>>16&255]<<16|s[f>>>8&255]<<8|s[l&255])^n[p++],_=(s[d>>>24]<<24|s[f>>>16&255]<<16|s[l>>>8&255]<<8|s[u&255])^n[p++],v=(s[f>>>24]<<24|s[l>>>16&255]<<16|s[u>>>8&255]<<8|s[d&255])^n[p++];e[t]=h,e[t+1]=g,e[t+2]=_,e[t+3]=v;},keySize:256/32});t.AES=n._createHelper(h);})(),e.AES});})),F=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),l(),d(),x(),S()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib,r=n.WordArray,i=n.BlockCipher,a=t.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=a.DES=i.extend({_doReset:function(){for(var e=this._key.words,t=[],n=0;n<56;n++){var r=o[n]-1;t[n]=e[r>>>5]>>>31-r%32&1;}for(var i=this._subKeys=[],a=0;a<16;a++){for(var l=i[a]=[],u=c[a],n=0;n<24;n++)l[n/6|0]|=t[(s[n]-1+u)%28]<<31-n%6,l[4+(n/6|0)]|=t[28+(s[n+24]-1+u)%28]<<31-n%6;l[0]=l[0]<<1|l[0]>>>31;for(var n=1;n<7;n++)l[n]=l[n]>>>(n-1)*4+3;l[7]=l[7]<<5|l[7]>>>27;}for(var d=this._invSubKeys=[],n=0;n<16;n++)d[n]=i[15-n];},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys);},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys);},_doCryptBlock:function(e,t,n){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),f.call(this,1,1431655765);for(var r=0;r<16;r++){for(var i=n[r],a=this._lBlock,o=this._rBlock,s=0,c=0;c<8;c++)s|=l[c][((o^i[c])&u[c])>>>0];this._lBlock=o,this._rBlock=a^s;}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,f.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock;},keySize:64/32,ivSize:64/32,blockSize:64/32});function f(e,t){var n=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=n,this._lBlock^=n<>>e^this._lBlock)&t;this._lBlock^=n,this._rBlock^=n<192.`);var t=e.slice(0,2),n=e.length<4?e.slice(0,2):e.slice(2,4),i=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(r.create(t)),this._des2=d.createEncryptor(r.create(n)),this._des3=d.createEncryptor(r.create(i));},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t);},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t);},keySize:192/32,ivSize:64/32,blockSize:64/32});t.TripleDES=i._createHelper(m);})(),e.TripleDES});})),I=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),l(),d(),x(),S()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=r.RC4=n.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes,r=this._S=[],i=0;i<256;i++)r[i]=i;for(var i=0,a=0;i<256;i++){var o=i%n,s=t[o>>>2]>>>24-o%4*8&255;a=(a+r[i]+s)%256;var c=r[i];r[i]=r[a],r[a]=c;}this._i=this._j=0;},_doProcessBlock:function(e,t){e[t]^=a.call(this);},keySize:256/32,ivSize:0});function a(){for(var e=this._S,t=this._i,n=this._j,r=0,i=0;i<4;i++){t=(t+1)%256,n=(n+e[t])%256;var a=e[t];e[t]=e[n],e[n]=a,r|=e[(e[t]+e[n])%256]<<24-i*8;}return this._i=t,this._j=n,r}t.RC4=n._createHelper(i);var o=r.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this);}});t.RC4Drop=n._createHelper(o);})(),e.RC4});})),L=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),l(),d(),x(),S()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=[],a=[],o=[],s=r.Rabbit=n.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,n=0;n<4;n++)e[n]=(e[n]<<8|e[n]>>>24)&16711935|(e[n]<<24|e[n]>>>8)&4278255360;var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,e[0]&4294901760|e[1]&65535,e[3]<<16|e[3]>>>16,e[1]&4294901760|e[2]&65535,e[0]<<16|e[0]>>>16,e[2]&4294901760|e[3]&65535,e[1]<<16|e[1]>>>16,e[3]&4294901760|e[0]&65535];this._b=0;for(var n=0;n<4;n++)c.call(this);for(var n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var a=t.words,o=a[0],s=a[1],l=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,u=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,d=l>>>16|u&4294901760,f=u<<16|l&65535;i[0]^=l,i[1]^=d,i[2]^=u,i[3]^=f,i[4]^=l,i[5]^=d,i[6]^=u,i[7]^=f;for(var n=0;n<4;n++)c.call(this);}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=(i[r]<<8|i[r]>>>24)&16711935|(i[r]<<24|i[r]>>>8)&4278255360,e[t+r]^=i[r];},blockSize:128/32,ivSize:64/32});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+ +(t[0]>>>0>>0)|0,t[2]=t[2]+886263092+ +(t[1]>>>0 >>0)|0,t[3]=t[3]+1295307597+ +(t[2]>>>0 >>0)|0,t[4]=t[4]+3545052371+ +(t[3]>>>0 >>0)|0,t[5]=t[5]+886263092+ +(t[4]>>>0 >>0)|0,t[6]=t[6]+1295307597+ +(t[5]>>>0 >>0)|0,t[7]=t[7]+3545052371+ +(t[6]>>>0 >>0)|0,this._b=+(t[7]>>>0 >>0);for(var n=0;n<8;n++){var r=e[n]+t[n],i=r&65535,s=r>>>16;o[n]=((i*i>>>17)+i*s>>>15)+s*s^((r&4294901760)*r|0)+((r&65535)*r|0);}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0;}t.Rabbit=n._createHelper(s);})(),e.Rabbit});})),R=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),l(),d(),x(),S()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.StreamCipher,r=t.algo,i=[],a=[],o=[],s=r.RabbitLegacy=n.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,n=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,e[0]&4294901760|e[1]&65535,e[3]<<16|e[3]>>>16,e[1]&4294901760|e[2]&65535,e[0]<<16|e[0]>>>16,e[2]&4294901760|e[3]&65535,e[1]<<16|e[1]>>>16,e[3]&4294901760|e[0]&65535];this._b=0;for(var i=0;i<4;i++)c.call(this);for(var i=0;i<8;i++)r[i]^=n[i+4&7];if(t){var a=t.words,o=a[0],s=a[1],l=(o<<8|o>>>24)&16711935|(o<<24|o>>>8)&4278255360,u=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,d=l>>>16|u&4294901760,f=u<<16|l&65535;r[0]^=l,r[1]^=d,r[2]^=u,r[3]^=f,r[4]^=l,r[5]^=d,r[6]^=u,r[7]^=f;for(var i=0;i<4;i++)c.call(this);}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=(i[r]<<8|i[r]>>>24)&16711935|(i[r]<<24|i[r]>>>8)&4278255360,e[t+r]^=i[r];},blockSize:128/32,ivSize:64/32});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+ +(t[0]>>>0 >>0)|0,t[2]=t[2]+886263092+ +(t[1]>>>0 >>0)|0,t[3]=t[3]+1295307597+ +(t[2]>>>0 >>0)|0,t[4]=t[4]+3545052371+ +(t[3]>>>0 >>0)|0,t[5]=t[5]+886263092+ +(t[4]>>>0 >>0)|0,t[6]=t[6]+1295307597+ +(t[5]>>>0 >>0)|0,t[7]=t[7]+3545052371+ +(t[6]>>>0 >>0)|0,this._b=+(t[7]>>>0 >>0);for(var n=0;n<8;n++){var r=e[n]+t[n],i=r&65535,s=r>>>16;o[n]=((i*i>>>17)+i*s>>>15)+s*s^((r&4294901760)*r|0)+((r&65535)*r|0);}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0;}t.RabbitLegacy=n._createHelper(s);})(),e.RabbitLegacy});})),z=c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),l(),d(),x(),S()):typeof define==`function`&&define.amd?define([`./core`,`./enc-base64`,`./md5`,`./evpkdf`,`./cipher-core`],r):r(n.CryptoJS);})(e,function(e){return (function(){var t=e,n=t.lib.BlockCipher,r=t.algo;let i=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function s(e,t){let n=t>>24&255,r=t>>16&255,i=t>>8&255,a=t&255,o=e.sbox[0][n]+e.sbox[1][r];return o^=e.sbox[2][i],o+=e.sbox[3][a],o}function c(e,t,n){let r=t,i=n,a;for(let t=0;t<16;++t)r^=e.pbox[t],i=s(e,r)^i,a=r,r=i,i=a;return a=r,r=i,i=a,i^=e.pbox[16],r^=e.pbox[17],{left:r,right:i}}function l(e,t,n){let r=t,i=n,a;for(let t=17;t>1;--t)r^=e.pbox[t],i=s(e,r)^i,a=r,r=i,i=a;return a=r,r=i,i=a,i^=e.pbox[1],r^=e.pbox[0],{left:r,right:i}}function u(e,t,n){for(let t=0;t<4;t++){e.sbox[t]=[];for(let n=0;n<256;n++)e.sbox[t][n]=a[t][n];}let r=0;for(let a=0;a<18;a++)e.pbox[a]=i[a]^t[r],r++,r>=n&&(r=0);let o=0,s=0,l=0;for(let t=0;t<18;t+=2)l=c(e,o,s),o=l.left,s=l.right,e.pbox[t]=o,e.pbox[t+1]=s;for(let t=0;t<4;t++)for(let n=0;n<256;n+=2)l=c(e,o,s),o=l.left,s=l.right,e.sbox[t][n]=o,e.sbox[t][n+1]=s;return true}var d=r.Blowfish=n.extend({_doReset:function(){if(this._keyPriorReset!==this._key){var e=this._keyPriorReset=this._key,t=e.words;u(o,t,e.sigBytes/4);}},encryptBlock:function(e,t){var n=c(o,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right;},decryptBlock:function(e,t){var n=l(o,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right;},blockSize:64/32,keySize:128/32,ivSize:64/32});t.Blowfish=n._createHelper(d);})(),e.Blowfish});}));d$1(c$1(((e,t)=>{(function(n,r,i){typeof e==`object`?t.exports=e=r(a(),o(),s(),c(),l(),u(),d(),f(),p(),m(),h(),g(),_(),v(),y(),b(),x(),S(),C(),w(),T(),E(),D(),O(),k(),A(),j(),M(),N(),P(),F(),I(),L(),R(),z()):typeof define==`function`&&define.amd?define(`./core,./x64-core,./lib-typedarrays,./enc-utf16,./enc-base64,./enc-base64url,./md5,./sha1,./sha256,./sha224,./sha512,./sha384,./sha3,./ripemd160,./hmac,./pbkdf2,./evpkdf,./cipher-core,./mode-cfb,./mode-ctr,./mode-ctr-gladman,./mode-ofb,./mode-ecb,./pad-ansix923,./pad-iso10126,./pad-iso97971,./pad-zeropadding,./pad-nopadding,./format-hex,./aes,./tripledes,./rc4,./rabbit,./rabbit-legacy,./blowfish`.split(`,`),r):n.CryptoJS=r(n.CryptoJS);})(e,function(e){return e});}))());function H(e,t){e.component(e=>{let{$$slots:n,$$events:a,...o}=t,s=new h$1(o);s.props.value;});}
+
+export { H as default };
+//# sourceMappingURL=Index12-CVC6jLOI.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index13-CvVn2QJy.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index13-CvVn2QJy.js
new file mode 100644
index 0000000000000000000000000000000000000000..60465441e90446f307e8d31b3acc279e26826097
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index13-CvVn2QJy.js
@@ -0,0 +1,21 @@
+import { K as h, R as s, P as c } from './2-CaEpGcoe.js';
+import { p } from './statustracker-ColKCG6D.js';
+import { n, V as Ve, _, M as M$1, e as be, j as ne$1, c as ce, l as z$1, N as N$1, D as D$1, m as ee$1, g, i as ie$1, I as Ie, o as je, S as Se, P as P$1, h as h$1, E as E$1 } from './src3-CHMGbv-A.js';
+import { t } from './Image-BmvGPCEw.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class, j as clsx, h as ensure_array_like, e as escape_html, d as derived, i as stringify, b as attr_style, f as attr, s as spread_props, c as bind_props } from './renderer-RGQlaTg4.js';
+import { u as ut } from './markdown-code-l98jAt38.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './server-BDON6J25.js';
+import './html-CfyvkLET.js';
+
+var E=async(e,t=1800)=>{let n=[...e],r=await D(n);return r.length>t&&n.length>2&&(n=[n[0],n[n.length-1]],r=await D(n)),r.length>t&&n.length>0&&(n=n.map(e=>{if(e.type===`text`){let r=Math.floor(t/n.length)-20;if(e.content.length>r)return {...e,content:e.content.substring(0,r)+`...`}}return e}),r=await D(n)),r},D=async t=>(await Promise.all(t.map(async t=>{if(t.role===`system`)return ``;let n=t.role===`user`?`😃`:`🤖`,r=``;if(t.type===`text`){let n={audio:/ |!\[.*?\]\((\/file=.*?)\)/g};r=t.content;for(let[i,a]of Object.entries(n)){let n;for(;(n=a.exec(t.content))!==null;){let t=n[1]||n[2],i=await c(t);r=r.replace(t,i);}}}else {if(!t.content.value)return ``;let n=await c(t.content.component===`video`?t.content.value?.video.path:t.content.value);t.content.component===`audio`?r=` `:t.content.component===`video`?r=n:t.content.component===`image`&&(r=` `);}return `${n}: ${r}`}))).filter(e=>e!==``).join(`
+`),O=(e,t)=>e.replace(`src="/file`,`src="${t}file`);function k(e,t){if(!e){let e=t?.path;if(e){let t=e.toLowerCase();if(t.endsWith(`.glb`)||t.endsWith(`.gltf`)||t.endsWith(`.obj`)||t.endsWith(`.stl`)||t.endsWith(`.splat`)||t.endsWith(`.ply`))return `model3d`}return `file`}return e.includes(`audio`)?`audio`:e.includes(`video`)?`video`:e.includes(`image`)?`image`:e.includes(`model`)?`model3d`:`file`}function A(e){let t=Array.isArray(e.file)?e.file[0]:e.file,n=k(t?.mime_type,t);return {component:n,value:n===`file`?Array.isArray(e.file)?e.file:[e.file]:e.file,alt_text:e.alt_text,constructor_args:{},props:{}}}function j(e,t,n,r){let i;return i=t.type===`text`?{role:e.role,metadata:e.metadata,content:O(t.text,n),type:`text`,index:r,options:e.options}:t.type===`file`?{role:e.role,metadata:e.metadata,content:A(t),type:`component`,index:r,options:e.options}:{role:e.role,metadata:e.metadata,content:t,type:`component`,index:r,options:e.options},i}function M(e,t){if(e===null)return e;let n=new Map;return e.flatMap((e,r)=>{let i=e.content.map(n=>j(e,n,t,r));for(let t of i){let{id:r,title:i,parent_id:a}=e.metadata||{};if(a){let e=n.get(String(a));if(e){let a={...t,children:[]};return e.children.push(a),r&&i&&n.set(String(r),a),null}}if(r&&i){let e={...t,children:[]};return n.set(String(r),e),e}}return i}).filter(e=>e!==null)}function N(e){return e.type===`component`}function P(e,t){let n=e[e.length-1].role===`assistant`,r=e[e.length-1].index;return JSON.stringify(r)===JSON.stringify(t[t.length-1].index)&&n}function F(e,t=true){let n=[],r=[],i=null;for(let a of e)if(a.role===`assistant`||a.role===`user`){if(!t){n.push([a]);continue}a.role===i?r.push(a):(r.length>0&&n.push(r),r=[a],i=a.role);}return r.length>0&&n.push(r),n}function L(e,t=0){let n=``,r=` `.repeat(t);e.metadata?.title&&(n+=`${r}${t>0?`- `:``}${e.metadata.title}\n`),typeof e.content==`string`&&(n+=`${r} ${e.content}\n`);let i=e;return i.children?.length>0&&(n+=i.children.map(e=>L(e,t+1)).join(``)),n}function R(e){return Array.isArray(e)?e.map(e=>e.metadata?.title?L(e):e.content).join(`
+`):e.metadata?.title?L(e):e.content}function z(e){return Array.isArray(e)&&e.every(e=>typeof e.content==`string`)||!Array.isArray(e)&&typeof e.content==`string`}function B(e){e.push(` `);}function V(e){e.push(` `);}function H(e){e.push(` `);}function U(e){e.push(` `);}function W(e){e.push(` `);}function G(e){e.push(` `);}function K(e,t){e.component(e=>{let{i18n:n,handle_action:r,feedback_options:i,selected:a=null}=t,o=a,s=derived(()=>i.filter(e=>e!==`Like`&&e!==`Dislike`));function c(e){o=o===e?null:e,r(o);}if(i.includes(`Like`)||i.includes(`Dislike`)?(e.push(``),i.includes(`Dislike`)?(e.push(``),_(e,{Icon:o===`Dislike`?B:V,label:o===`Dislike`?`Disliked`:n(`chatbot.dislike`),color:o===`Dislike`?`var(--color-accent)`:`var(--block-label-text-color)`,onclick:()=>c(`Dislike`)})):e.push(``),e.push(` `),i.includes(`Like`)?(e.push(``),_(e,{Icon:o===`Like`?H:U,label:o===`Like`?`Liked`:n(`chatbot.like`),color:o===`Like`?`var(--color-accent)`:`var(--block-label-text-color)`,onclick:()=>c(`Like`)})):e.push(``),e.push(``)):e.push(``),e.push(` `),s().length>0){e.push(``),e.push(``);}else e.push(``);e.push(``);});}function q(e,t){e.component(e=>{let{value:n,watermark:r=null,i18n:i,oncopy:a}=t,o=false,s;function c(){o=true,s&&clearTimeout(s),s=setTimeout(()=>{o=false;},2e3);}async function l(){if(`clipboard`in navigator){a?.({value:n});let e=r?`${n}\n\n${r}`:n;await navigator.clipboard.writeText(e),c();}else {let e=document.createElement(`textarea`);e.value=r?`${n}\n\n${r}`:n,e.style.position=`absolute`,e.style.left=`-999999px`,document.body.prepend(e),e.select();try{document.execCommand(`copy`),c();}catch(e){console.error(e);}finally{e.remove();}}}_(e,{onclick:l,label:i(o?`chatbot.copied_message`:`chatbot.copy_message`),Icon:o?D$1:ne$1});});}function ee(t,n){t.component(t=>{let{i18n:r,likeable:i,feedback_options:a,show_retry:c$1,show_undo:d,show_edit:p,in_edit_mode:h,show_copy_button:y,watermark:b=null,message:S,position:C,avatar:w,generating:E,current_feedback:D,file:O=null,show_download_button:k=false,show_share_button:A=false,handle_action:j,layout:M,oncopy:N,onerror:P,onshare:F}=n,I=derived(()=>z(S)?R(S):``),L=derived(()=>y&&S&&z(S));L()||c$1||d||p||i||k&&O?.url||A&&O?(t.push(``),t.push(``),Ve(t,{top_panel:false,children:t=>{h?(t.push(``),_(t,{label:r(`chatbot.submit`),Icon:D$1,onclick:()=>j(`edit_submit`),disabled:E}),t.push(` `),_(t,{label:r(`chatbot.cancel`),Icon:ee$1,onclick:()=>j(`edit_cancel`),disabled:E}),t.push(``)):(t.push(``),L()?(t.push(``),q(t,{value:I(),oncopy:N,watermark:b,i18n:r})):t.push(``),t.push(` `),k&&O?.url?(t.push(``),g(t,{href:O.is_stream?O.url?.replace(`playlist.m3u8`,`playlist-file`):O.url,download:O.orig_name||O.path||`file`,children:e=>{_(e,{Icon:ie$1,label:r(`common.download`)});},$$slots:{default:true}})):t.push(``),t.push(` `),A&&O?(t.push(``),Ie(t,{i18n:r,onerror:e=>P?.(e),onshare:e=>F?.(e),formatter:async t=>{if(!t)return ``;let n=await c(t.url),r=t.mime_type||``;return r.startsWith(`audio/`)?`
`:r.startsWith(`video/`)?`
`:r.startsWith(`image/`)?`
`:``},value:O})):t.push(``),t.push(` `),c$1?(t.push(``),_(t,{Icon:je,label:r(`chatbot.retry`),onclick:()=>j(`retry`),disabled:E})):t.push(``),t.push(` `),d?(t.push(``),_(t,{label:r(`chatbot.undo`),Icon:Se,onclick:()=>j(`undo`),disabled:E})):t.push(``),t.push(` `),p?(t.push(``),_(t,{label:r(`chatbot.edit`),Icon:P$1,onclick:()=>j(`edit`),disabled:E})):t.push(``),t.push(` `),i?(t.push(``),K(t,{handle_action:j,feedback_options:a,selected:D,i18n:r})):t.push(``),t.push(``)),t.push(``);}}),t.push(`
`)):t.push(``),t.push(``);});}function J(e,t){e.component(e=>{let{type:n,components:r,value:i,target:a,theme_mode:o,props:s,i18n:c,upload:l,_fetch:u,onload:p}=t,m=derived(()=>r[n]),h=false;function g(e){h=e,document.fullscreenElement&&document.exitFullscreen?.();}function _(){p?.();}n===`gallery`?(e.push(``),m()?(e.push(``),m()(e,spread_props([s,{value:i,display_icon_button_wrapper_top_corner:false,show_label:!!s.label,i18n:c,_fetch:u,allow_preview:false,interactive:false,mode:`minimal`,fixed_height:1,onload:_}])),e.push(``)):(e.push(``),e.push(``))):n===`dataframe`?(e.push(``),m()?(e.push(``),m()(e,spread_props([s,{value:i,show_label:!!s.label,i18n:c,interactive:false,line_breaks:s.line_breaks,wrap:true,root:``,gradio:{dispatch:()=>{},i18n:c},datatype:s.datatype,latex_delimiters:s.latex_delimiters,col_count:s.col_count,row_count:s.row_count,onload:_}])),e.push(``)):(e.push(``),e.push(``))):n===`plot`?(e.push(``),m()?(e.push(``),m()(e,spread_props([s,{value:i,target:a,theme_mode:o,on_change:()=>{},bokeh_version:s.bokeh_version,caption:s.caption||``,show_actions_button:true,onload:_}])),e.push(``)):(e.push(``),e.push(``))):n===`audio`?(e.push(``),m()?(e.push(``),m()(e,spread_props([s,{value:i,show_label:!!s.label,show_share_button:false,i18n:c,waveform_settings:{...s.waveform_settings,autoplay:s.autoplay},show_download_button:false,display_icon_button_wrapper_top_corner:false,minimal:true,onload:_}])),e.push(``)):(e.push(``),e.push(``))):n===`video`?(e.push(``),m()?(e.push(``),m()(e,spread_props([s,{autoplay:s.autoplay,value:i.video||i,show_label:!!s.label,show_share_button:false,i18n:c,upload:l,display_icon_button_wrapper_top_corner:false,show_download_button:false,onload:_,children:e=>{e.push(` `);},$$slots:{default:true}}])),e.push(``)):(e.push(``),e.push(``))):n===`image`?(e.push(``),e.push(``),m()?(e.push(``),m()(e,spread_props([s,{value:i,show_label:!!s.label,display_icon_button_wrapper_top_corner:false,buttons:[`fullscreen`],fullscreen:h,show_button_background:false,onfullscreen:g,onload:_,i18n:c}])),e.push(``)):(e.push(``),e.push(``)),e.push(`
`)):n===`html`?(e.push(``),m()?(e.push(``),m()(e,spread_props([s,{props:{value:i},onload:_}])),e.push(``)):(e.push(``),e.push(``))):n===`model3d`?(e.push(``),m()?(e.push(``),m()(e,spread_props([s,{value:i,clear_color:s.clear_color,display_mode:s.display_mode,zoom_speed:s.zoom_speed,pan_speed:s.pan_speed},s.camera_position!==void 0&&{camera_position:s.camera_position},{has_change_history:true,show_label:!!s.label,root:``,interactive:false,show_share_button:false,gradio:{dispatch:()=>{},i18n:c},onload:_,i18n:c}])),e.push(``)):(e.push(``),e.push(``))):e.push(``),e.push(``);});}function te(e,t){e.component(e=>{let{latex_delimiters:n,sanitize_html:r,_fetch:i,i18n:a,line_breaks:o,upload:s,target:l,theme_mode:u,_components:d,render_markdown:f,scroll:p,allow_tags:_=false,message:v}=t;if(v.type===`text`)e.push(``),e.push(``),ut(e,{message:v.content,latex_delimiters:n,sanitize_html:r,render_markdown:f,line_breaks:o,onload:p,allow_tags:_,theme_mode:u}),e.push(`
`);else if(v.type===`component`&&v.content.component in d)e.push(``),J(e,{target:l,theme_mode:u,props:v.content.props,type:v.content.component,components:d,value:v.content.value,i18n:a,upload:s,_fetch:i,onload:p});else if(v.type===`component`&&v.content.component===`file`){e.push(``),e.push(``);let t=ensure_array_like(v.content.value);for(let n=0,r=t.length;n`),z$1(e),e.push(`
`);}e.push(``);}else e.push(``);e.push(``);});}function ne(e,t){e.component(e=>{let{thought:n,sanitize_html:i,latex_delimiters:a,render_markdown:o,allow_tags:v}=t;function y(e){return `children`in e}let S=derived(()=>({...n,children:y(n)?n.children:[]}));e.push(``),_(e,{Icon:N$1}),e.push(` `),ut(e,{message:S().metadata?.title||``,render_markdown:o,latex_delimiters:a,sanitize_html:i,allow_tags:v||false}),e.push(` `),S().metadata?.status===`pending`?(e.push(``),e.push(` `)):e.push(``),e.push(` `),S()?.metadata?.log||S()?.metadata?.duration?(e.push(``),e.push(``),S().metadata.log?(e.push(``),e.push(`${escape_html(S().metadata.log)}`)):e.push(``),e.push(` `),S().metadata.duration===void 0?e.push(``):(e.push(``),e.push(`(`),Number.isInteger(S().metadata.duration)?(e.push(``),e.push(`${escape_html(S().metadata.duration)}s`)):S().metadata.duration>=.1?(e.push(``),e.push(`${escape_html(S().metadata.duration.toFixed(1))}s`)):(e.push(``),e.push(`${escape_html((S().metadata.duration*1e3).toFixed(1))}ms`)),e.push(`)`)),e.push(` `)):e.push(``),e.push(`
`),e.push(``),e.push(`
`);});}function Y(e,t$1){e.component(e=>{let{value:n,avatar_img:r,opposite_avatar_img:i=null,role:a=`user`,messages:o=[],layout:s,render_markdown:c,latex_delimiters:l,sanitize_html:u,selectable:d,_fetch:f,rtl:p,onselect:m,i18n:h,line_breaks:g,upload:_,target:v,theme_mode:y,_components:b,i:x,show_copy_button:S,generating:w,feedback_options:E,show_like:D,show_edit:O,show_retry:k,show_undo:A,handle_action:j,scroll:M,allow_file_downloads:P,in_edit_mode:F,edit_messages:I=[],display_consecutive_in_same_bubble:L,current_feedback:R=null,allow_tags:z=false,watermark:B=null,onerror:V,onshare:H,oncopy:U}=t$1,W=Array(o.length).fill(160),G=Array(o.length).fill(0);function K(e){return e.type===`text`?e.content:e.type===`component`&&e.content.component===`file`?Array.isArray(e.content.value)?`file of extension type: ${e.content.value[0].orig_name?.split(`.`).pop()}`:`file of extension type: ${e.content.value?.orig_name?.split(`.`).pop()}`+(e.content.value?.orig_name??``):`a component of type ${e.content.component??`unknown`}`}function q(e){for(let t of e)if(t.type===`component`&&(t.content.component===`audio`||t.content.component===`video`||t.content.component===`image`||t.content.component===`file`)&&t.content.value)return t.content.value;return null}let J=derived(()=>({handle_action:j,likeable:D,feedback_options:E,show_retry:k,show_undo:A,show_edit:O,in_edit_mode:F,generating:w,show_copy_button:S,message:o,position:a===`user`?`right`:`left`,avatar:r,layout:s,current_feedback:R,watermark:B,file:q(o),show_download_button:P,show_share_button:true,oncopy:U}));e.push(``),r===null?e.push(``):(e.push(``),e.push(`
`),t(e,{class:`avatar-image`,src:r?.url,alt:`${stringify(a)} avatar`}),e.push(`
`)),e.push(`
`);let Y=ensure_array_like(o);for(let t=0,r=Y.length;t
0})}>`),F&&r.type===`text`){e.push(``),e.push(``);}else e.push(``),e.push(``),r?.metadata?.title?(e.push(``),ne(e,{thought:r,sanitize_html:u,allow_tags:z,latex_delimiters:l,render_markdown:c})):(e.push(``),te(e,{message:r,sanitize_html:u,allow_tags:z,latex_delimiters:l,render_markdown:c,_components:b,upload:_,target:v,theme_mode:y,_fetch:f,scroll:M,i18n:h,line_breaks:g})),e.push(`
`);e.push(` `),s===`panel`?(e.push(``),ee(e,spread_props([J(),{current_feedback:R,watermark:B,onerror:V,onshare:H,i18n:h}]))):e.push(``),e.push(``);}e.push(`
`),s===`bubble`?(e.push(``),ee(e,spread_props([J(),{onerror:V,onshare:H,i18n:h}]))):e.push(``),e.push(``),bind_props(t$1,{edit_messages:I});});}function re(e,t$1){e.component(e=>{let{layout:n=`bubble`,avatar_images:r=[null,null]}=t$1;e.push(``),r[1]===null?e.push(``):(e.push(``),e.push(`
`),t(e,{class:`avatar-image`,src:r[1].url,alt:`bot avatar`}),e.push(`
`)),e.push(`
`);});}function ie(e,t$1){e.component(e=>{let{examples:n=null,placeholder:r=null,latex_delimiters:i}=t$1;if(e.push(``),r===null?e.push(``):(e.push(``),e.push(`
`),ut(e,{message:r,latex_delimiters:i}),e.push(`
`)),e.push(` `),n!==null){e.push(``),e.push(`
`);let t$1=ensure_array_like(n);for(let n=0,r=t$1.length;n
`),r?.icon?.url)e.push(``),e.push(`
`),t(e,{class:`example-image`,src:r.icon.url,alt:`Example icon`}),e.push(`
`);else if(r?.icon?.mime_type===`text`)e.push(``),e.push(`
Aa
`);else if(r.files!==void 0&&r.files.length>0){if(e.push(``),r.files.length>1){e.push(``),e.push(`
`);let t$1=ensure_array_like(r.files.slice(0,4));for(let n=0,i=t$1.length;n
`),e.push(``),t(e,{class:`example-image`,src:i.url,alt:i.orig_name||`Example image ${n+1}`}),e.push(` `),n===3&&r.files.length>4?(e.push(``),e.push(`
+${escape_html(r.files.length-4)}
`)):e.push(``),e.push(`
`)):i.mime_type?.includes(`video`)?(e.push(``),e.push(` `),n===3&&r.files.length>4?(e.push(``),e.push(`
+${escape_html(r.files.length-4)}
`)):e.push(``),e.push(`
`)):(e.push(``),e.push(` `),i.mime_type?.includes(`audio`)?(e.push(``),ce(e)):(e.push(``),z$1(e)),e.push(`
`)),e.push(``);}e.push(` `),r.files.length>4?(e.push(``),e.push(`+${escape_html(r.files.length-4)}
`)):e.push(``),e.push(``);}else r.files[0].mime_type?.includes(`image`)?(e.push(``),e.push(`
`),t(e,{class:`example-image`,src:r.files[0].url,alt:r.files[0].orig_name||`Example image`}),e.push(`
`)):r.files[0].mime_type?.includes(`video`)?(e.push(``),e.push(`
`)):r.files[0].mime_type?.includes(`audio`)?(e.push(``),e.push(`
`),ce(e),e.push(`
`)):(e.push(``),e.push(`
`),z$1(e),e.push(`
`));e.push(``);}else e.push(``);e.push(`
${escape_html(r.display_text||r.text)}
`);}e.push(``);}else e.push(``);e.push(`
`);});}function ae(e,t){e.component(e=>{let{value:n,watermark:r=null}=t,i=false,a;function o(){i=true,a&&clearTimeout(a),a=setTimeout(()=>{i=false;},1e3);}let s=()=>{if(n){let e=n.map(e=>e.type===`text`?`${e.role}: ${e.content}`:`${e.role}: ${e.content.value.url}`).join(`
+
+`),t=r?`${e}\n\n${r}`:e;navigator.clipboard.writeText(t).catch(e=>{console.error(`Failed to copy conversation: `,e);});}};async function c(){`clipboard`in navigator&&(s(),o());}_(e,{Icon:i?D$1:ne$1,onclick:c,label:i?`Copied conversation`:`Copy conversation`});});}function X(e,n){e.component(e=>{let{value:r=null,_fetch:a,load_component:o,allow_file_downloads:s$1,display_consecutive_in_same_bubble:c,latex_delimiters:l,pending_message:u=false,generating:d=false,selectable:f=false,likeable:p=false,feedback_options:m,feedback_value:h=null,editable:g=null,show_share_button:v=false,show_copy_all_button:b=false,rtl:S=false,show_copy_button:C=false,buttons:w=null,on_custom_button_click:D=null,avatar_images:O=[null,null],sanitize_html:k=true,render_markdown:A=true,line_breaks:j=true,autoscroll:M=true,theme_mode:N,i18n:L,layout:R=`bubble`,placeholder:z=null,upload:B,examples:V=null,_retryable:H=false,_undoable:U=false,like_user_message:W=false,allow_tags:G=false,watermark:K=null,show_progress:q=`full`,onchange:ee,onselect:J,onlike:te,onedit:ne,onundo:X,onretry:oe,onclear:se,onshare:ce,onerror:le,onexampleselect:ue,onoptionselect:de,oncopy:fe}=n,pe={};let me=typeof window<`u`,Z=null,Q=[];function he(){}let $=derived(()=>r?F(r,c):null),ge=derived(()=>{if(!r||!$()||$().length===0)return;let e=$()[$().length-1];if(e[0].role===`assistant`)return e[e.length-1].options});function _e(e,t,n){if(n===`undo`||n===`retry`){let e=r,t=e.length-1;for(;e[t].role===`assistant`;)t--;(n===`undo`?X:oe)?.({index:e[t].index,value:e[t].content});}else if(n==`edit`)Z=e,Q.push(t.content);else if(n==`edit_cancel`)Z=null;else if(n==`edit_submit`)Z=null,ne?.({index:t.index,_dispatch_value:[{type:`text`,text:Q[e].slice()}],value:Q[e].slice(),previous_value:t.content});else {let t=n===`Like`?true:n===`Dislike`?false:n||``;if(!$())return;let r=$()[e],[i]=[r[0],r[r.length-1]];te?.({index:i.index,value:r.map(e=>e.content),liked:t});}}let ve=true,ye;function be$1(e){if(r!==null&&r.length>0?(e.push(``),Ve(e,{buttons:w,on_custom_button_click:D,children:e=>{v?(e.push(``),_(e,{Icon:M$1,onclick:async()=>{try{let e=await E(r);ce?.({description:e});}catch(e){console.error(e);let n=e instanceof s?e.message:`Share failed.`;le?.(n);}}})):e.push(``),e.push(` `),_(e,{Icon:be,onclick:()=>se?.(),label:L(`chatbot.clear`)}),e.push(` `),b?(e.push(``),ae(e,{value:r,watermark:K})):e.push(``),e.push(``);}})):e.push(``),e.push(` `),r!==null&&r.length>0&&$()!==null){e.push(``),e.push(`
`);let t=ensure_array_like($());for(let n=0,i=t.length;n
e[0].role===`assistant`).length,y=o===`bot`&&h&&h[v]?h[v]:null;Y(e,{messages:i,display_consecutive_in_same_bubble:c,opposite_avatar_img:_,avatar_img:u,role:o,layout:R,onselect:J,i18n:L,_fetch:a,line_breaks:j,theme_mode:N,target:null,upload:B,selectable:f,sanitize_html:k,render_markdown:A,rtl:S,i:n,value:r,latex_delimiters:l,_components:pe,generating:d,feedback_options:m,current_feedback:y,allow_tags:G,watermark:K,show_like:o===`user`?p&&W:p,show_retry:H&&P(i,r),show_undo:U&&P(i,r),show_edit:g===`all`||g==`user`&&o===`user`&&i.length>0&&i[i.length-1].type==`text`,in_edit_mode:Z===n,show_copy_button:C,handle_action:e=>{e==`edit`&&Q.splice(0,Q.length),e===`edit`||e===`edit_submit`?i.forEach((t,r)=>{_e(e===`edit`?n:r,t,e);}):_e(n,i[0],e);},scroll:me?he:()=>{},allow_file_downloads:s$1,onerror:le,onshare:ce,oncopy:fe,get edit_messages(){return Q},set edit_messages(e){Q=e,ve=false;}}),e.push(` `),q!==`hidden`&&d&&i[i.length-1].role===`assistant`&&i[i.length-1].metadata?.status===`done`?(e.push(``),re(e,{layout:R,avatar_images:O})):e.push(``),e.push(``);}if(e.push(` `),q!==`hidden`&&u)e.push(``),re(e,{layout:R,avatar_images:O});else if(ge()){e.push(``),e.push(` `);let t=ensure_array_like(ge());for(let n=0,r=t.length;n${escape_html(r.label||r.value)}`);}e.push(`
`);}else e.push(``);e.push(``);}else e.push(``),ie(e,{examples:V,placeholder:z,latex_delimiters:l});e.push(`
`),e.push(``),e.push(``);}do ve=true,ye=e.copy(),be$1(ye);while(!ve);e.subsume(ye);});}function oe(e,t){e.component(e=>{let{$$slots:i,$$events:o,...s}=t,c=new h(s),l=derived(()=>M(c.props.value,c.shared.root)),u=derived(()=>c.shared.loading_status.status===`error`?`full`:c.shared.loading_status.show_progress===`hidden`?`hidden`:`minimal`);n(e,{elem_id:c.shared.elem_id,elem_classes:c.shared.elem_classes,visible:c.shared.visible,padding:false,scale:c.shared.scale,min_width:c.shared.min_width,height:c.props.height,resizable:c.props.resizable,min_height:c.props.min_height,max_height:c.props.max_height,allow_overflow:true,flex:true,overflow_behavior:`auto`,rtl:c.props.rtl,children:e=>{c.shared.loading_status?(e.push(``),p(e,spread_props([{autoscroll:c.shared.autoscroll,i18n:c.i18n},c.shared.loading_status,{show_progress:u(),on_clear_status:()=>c.dispatch(`clear_status`,c.shared.loading_status)}]))):e.push(``),e.push(` `),c.shared.show_label?(e.push(``),h$1(e,{show_label:c.shared.show_label,Icon:E$1,float:true,label:c.shared.label||`Chatbot`})):e.push(``),e.push(` `),X(e,{i18n:c.i18n,selectable:c.props._selectable,likeable:c.props.likeable,feedback_options:c.props.feedback_options,feedback_value:c.props.feedback_value,show_share_button:(c.props.buttons??[`share`]).some(e=>typeof e==`string`&&e===`share`),show_copy_all_button:(c.props.buttons??[`copy_all`]).some(e=>typeof e==`string`&&e===`copy_all`),value:l(),latex_delimiters:c.props.latex_delimiters,display_consecutive_in_same_bubble:c.props.group_consecutive_messages,render_markdown:c.props.render_markdown,theme_mode:c.shared.theme_mode,editable:c.props.editable,pending_message:c.shared.loading_status?.status===`pending`,generating:c.shared.loading_status?.status===`generating`,rtl:c.props.rtl,show_copy_button:(c.props.buttons??[`copy`]).some(e=>typeof e==`string`&&e===`copy`),buttons:c.props.buttons,on_custom_button_click:e=>{c.dispatch(`custom_button_click`,{id:e});},like_user_message:c.props.like_user_message,show_progress:c.shared.loading_status?.show_progress||`full`,onchange:()=>{c.props.value=c.props.value,c.dispatch(`change`,c.props.value);},onselect:e=>c.dispatch(`select`,e),onlike:e=>c.dispatch(`like`,e),onshare:e=>c.dispatch(`share`,e),onerror:e=>c.dispatch(`error`,e),onexampleselect:e=>c.dispatch(`example_select`,e),onoptionselect:e=>c.dispatch(`option_select`,e),onretry:e=>c.dispatch(`retry`,e),onundo:e=>c.dispatch(`undo`,e),onclear:()=>{c.props.value=[],c.dispatch(`clear`);},oncopy:e=>c.dispatch(`copy`,e),onedit:e=>{c.props.value===null||c.props.value.length===0||(c.props.value[e.index].content=[{text:e.value,type:`text`}],c.dispatch(`edit`,e));},avatar_images:c.props.avatar_images,sanitize_html:c.props.sanitize_html,line_breaks:c.props.line_breaks,autoscroll:c.props.autoscroll,layout:c.props.layout,placeholder:c.props.placeholder,examples:c.props.examples,_retryable:c.props._retryable,_undoable:c.props._undoable,upload:(...e)=>c.shared.client.upload(...e),_fetch:(...e)=>c.shared.client.fetch(...e),load_component:c.shared.load_component,allow_file_downloads:c.props.allow_file_downloads,allow_tags:c.props.allow_tags,watermark:c.props.watermark}),e.push(`
`);},$$slots:{default:true}});});}
+
+export { X as BaseChatBot, oe as default };
+//# sourceMappingURL=Index13-CvVn2QJy.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index14-ZsyvFAgB.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index14-ZsyvFAgB.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce55abafd9c77eb01ec226598c1817a4970d48e5
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index14-ZsyvFAgB.js
@@ -0,0 +1,10 @@
+import { K as h } from './2-CaEpGcoe.js';
+import { p } from './statustracker-ColKCG6D.js';
+import { n, V as Ve, q as p$1 } from './src3-CHMGbv-A.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class, f as attr, e as escape_html, c as bind_props, d as derived, s as spread_props } from './renderer-RGQlaTg4.js';
+
+function o(e,t){e.component(e=>{let{label:n=`Checkbox`,value:r=void 0,indeterminate:i=false,interactive:o=true,show_label:s=true,tab_index:c=void 0,on_change:l,on_input:u,on_select:d}=t,f=derived(()=>!o);e.push(` `),s?(e.push(``),e.push(`${escape_html(n)} `)):e.push(``),e.push(` `),bind_props(t,{value:r});});}function s(s,c){s.component(s=>{let{$$slots:l,$$events:u,...d}=c,f=new h(d),p$2=true,m;function h$1(e){n(e,{visible:f.shared.visible,elem_id:f.shared.elem_id,elem_classes:f.shared.elem_classes,children:e=>{p(e,spread_props([{autoscroll:f.shared.autoscroll,i18n:f.i18n},f.shared.loading_status,{on_clear_status:()=>f.dispatch(`clear_status`,f.shared.loading_status)}])),e.push(` `),f.shared.show_label&&f.props.buttons&&f.props.buttons.length>0?(e.push(``),Ve(e,{buttons:f.props.buttons,on_custom_button_click:e=>{f.dispatch(`custom_button_click`,{id:e});}})):e.push(``),e.push(` `),o(e,{label:f.shared.label||f.i18n(`checkbox.checkbox`),interactive:f.shared.interactive,show_label:f.shared.show_label,on_change:e=>f.dispatch(`change`,e),on_input:()=>f.dispatch(`input`),on_select:e=>f.dispatch(`select`,e),get value(){return f.props.value},set value(e){f.props.value=e,p$2=false;}}),e.push(` `),f.props.info?(e.push(``),p$1(e,{info:f.props.info})):e.push(``),e.push(``);},$$slots:{default:true}});}do p$2=true,m=s.copy(),h$1(m);while(!p$2);s.subsume(m);});}
+
+export { o, s };
+//# sourceMappingURL=Index14-ZsyvFAgB.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index15-BKSWhzoN.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index15-BKSWhzoN.js
new file mode 100644
index 0000000000000000000000000000000000000000..56590d214a504b2894e1cabd1e5b257ac248d6cf
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index15-BKSWhzoN.js
@@ -0,0 +1,12 @@
+export { o as BaseCheckbox, s as default } from './Index14-ZsyvFAgB.js';
+import './2-CaEpGcoe.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './renderer-RGQlaTg4.js';
+import './async-Cv1-GZGV.js';
+import './statustracker-ColKCG6D.js';
+import './src3-CHMGbv-A.js';
+import './html-CfyvkLET.js';
+import './server-BDON6J25.js';
+//# sourceMappingURL=Index15-BKSWhzoN.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index16-DibhU1Bv.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index16-DibhU1Bv.js
new file mode 100644
index 0000000000000000000000000000000000000000..72ed0efc480747d489a2f8531dceaf7c9ec5e419
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index16-DibhU1Bv.js
@@ -0,0 +1,15 @@
+import { K as h } from './2-CaEpGcoe.js';
+import { p } from './statustracker-ColKCG6D.js';
+import { n, V as Ve, p as m } from './src3-CHMGbv-A.js';
+import './async-Cv1-GZGV.js';
+import { s as spread_props, f as attr, e as escape_html, h as ensure_array_like, a as attr_class, d as derived } from './renderer-RGQlaTg4.js';
+import './environment-C8sqWbA_.js';
+import './chunk-B3kRsjbd.js';
+import 'node:module';
+import './server-BDON6J25.js';
+import './html-CfyvkLET.js';
+
+function o(o,s){o.component(o=>{let{$$slots:c,$$events:l,...u}=s,d=new h(u),f=derived(()=>{let e=d.props.choices.map(([,e])=>e);return d.props.value.length===0?`unchecked`:d.props.value.length===e.length?`checked`:`indeterminate`}),p$1=derived(()=>!d.shared.interactive);d.props.value,n(o,{visible:d.shared.visible,elem_id:d.shared.elem_id,elem_classes:d.shared.elem_classes,type:`fieldset`,container:d.shared.container,scale:d.shared.scale,min_width:d.shared.min_width,children:e=>{p(e,spread_props([{autoscroll:d.shared.autoscroll,i18n:d.i18n},d.shared.loading_status,{on_clear_status:()=>d.dispatch(`clear_status`,d.shared.loading_status)}])),e.push(` `),d.shared.show_label&&d.props.buttons&&d.props.buttons.length>0?(e.push(``),Ve(e,{buttons:d.props.buttons,on_custom_button_click:e=>{d.dispatch(`custom_button_click`,{id:e});}})):e.push(``),e.push(` `),m(e,{show_label:d.shared.show_label||d.props.show_select_all&&d.shared.interactive,info:d.props.info,children:e=>{d.props.show_select_all&&d.shared.interactive?(e.push(``),e.push(` ${escape_html(d.shared.show_label?d.shared.label:`Select All`)}
`)):d.shared.show_label?(e.push(``),e.push(`${escape_html(d.shared.label||d.i18n(`checkbox.checkbox_group`))}`)):e.push(``),e.push(``);}}),e.push(` `);let r=ensure_array_like(d.props.choices);for(let t=0,n=r.length;t ${escape_html(d.live_i18n(n))} `);}e.push(`
`);},$$slots:{default:true}});});}
+
+export { o as default };
+//# sourceMappingURL=Index16-DibhU1Bv.js.map
diff --git a/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index17-CFQJszDf.js b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index17-CFQJszDf.js
new file mode 100644
index 0000000000000000000000000000000000000000..769c7def8ba8c7757975bf2f3b96ab2ff12c192d
--- /dev/null
+++ b/.venvs/kimodo/lib/python3.10/site-packages/gradio/templates/node/build/server/chunks/Index17-CFQJszDf.js
@@ -0,0 +1,26 @@
+import { N as onDestroy, K as h$1 } from './2-CaEpGcoe.js';
+import { p as p$1 } from './statustracker-ColKCG6D.js';
+import { _ as _$1, j as ne$1, g as g$1, V as Ve$3, n as n$1, h as h$2, K as j$3, v as v$1, D as D$3, i as ie$2 } from './src3-CHMGbv-A.js';
+import './async-Cv1-GZGV.js';
+import { a as attr_class, i as stringify, c as bind_props, d as derived, s as spread_props } from './renderer-RGQlaTg4.js';
+
+var e=[],t=[];(()=>{let n=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o`.split(`,`).map(e=>e?parseInt(e,36):1);for(let r=0,i=0;r>1;if(n=t[a])r=a+1;else return true;if(r==i)return false}}function r(e){return e>=127462&&e<=127487}var i=8205;function a(e,t,n=true,r=true){return (n?o:s)(e,t,r)}function o(e,t,a){if(t==e.length)return t;t&&l(e.charCodeAt(t))&&u(e.charCodeAt(t-1))&&t--;let o=c(e,t);for(t+=d(o);t=0&&r(c(e,i));)n++,i-=2;if(n%2==0)break;t+=2;}else break}return t}function s(e,t,n){for(;t>0;){let r=o(e,t-2,n);if(r=56320&&e<57344}function u(e){return e>=55296&&e<56320}function d(e){return e<65536?1:2}var f=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,false,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,true,1,0)}replace(e,t,n){[e,t]=x(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),m.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=x(this,e,t);let n=[];return this.decompose(e,t,n,0),m.from(n,t-e)}eq(e){if(e==this)return true;if(e.length!=this.length||e.lines!=this.lines)return false;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new v(this),i=new v(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return false;if(a+=r.value.length,r.done||a>=n)return true}}iter(e=1){return new v(this,e)}iterRange(e,t=this.length){return new y(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else {t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to));}return new ee(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new p(t):m.from(p.split(t,[]))}},p=class e extends f{constructor(e,t=h(e)){super(),this.text=e,this.length=t;}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new b(r,o,n,a);r=o+1,n++;}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(_(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=g(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else {let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)));}}else r.push(a);}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=x(this,t,n);let i=g(this.text,g(r.text,_(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):m.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
+`){[e,t]=x(this,e,t);let r=``;for(let i=0,a=0;i<=t&&ae&&a&&(r+=n),ei&&(r+=o.slice(Math.max(0,e-i),t-i)),i=s+1;}return r}flatten(e){for(let t of this.text)e.push(t);}scanIdentical(){return 0}static split(t,n){let r=[],i=-1;for(let a of t)r.push(a),i+=a.length+1,r.length==32&&(n.push(new e(r,i)),r=[],i=-1);return i>-1&&n.push(new e(r,i)),n}},m=class e extends f{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let t of e)this.lines+=t.lines;}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.children[i],o=r+a.length,s=n+a.lines-1;if((t?s:o)>=e)return a.lineInner(e,t,n,r);r=o+1,n=s+1;}}decompose(e,t,n,r){for(let i=0,a=0;a<=t&&i=a){let i=r&(a<=e|(s>=t?2:0));a>=e&&s<=t&&!i?n.push(o):o.decompose(e-a,t-a,n,i);}a=s+1;}}replace(t,n,r){if([t,n]=x(this,t,n),r.lines=a&&n<=s){let c=o.replace(t-a,n-a,r),l=this.lines-o.lines+c.lines;if(c.lines>4&&c.lines>l>>6){let a=this.children.slice();return a[i]=c,new e(a,this.length-(n-t)+r.length)}return super.replace(a,s,c)}a=s+1;}return super.replace(t,n,r)}sliceString(e,t=this.length,n=`
+`){[e,t]=x(this,e,t);let r=``;for(let i=0,a=0;ie&&i&&(r+=n),ea&&(r+=o.sliceString(e-a,t-a,n)),a=s+1;}return r}flatten(e){for(let t of this.children)t.flatten(e);}scanIdentical(t,n){if(!(t instanceof e))return 0;let r=0,[i,a,o,s]=n>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;i+=n,a+=n){if(i==o||a==s)return r;let e=this.children[i],c=t.children[a];if(e!=c)return r+e.scanIdentical(c,n);r+=e.length+1;}}static from(t,n=t.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(let e of t)r+=e.lines;if(r<32){let e=[];for(let n of t)n.flatten(e);return new p(e,n)}let i=Math.max(32,r>>5),a=i<<1,o=i>>1,s=[],c=0,l=-1,u=[];function d(t){let n;if(t.lines>a&&t instanceof e)for(let e of t.children)d(e);else t.lines>o&&(c>o||!c)?(f(),s.push(t)):t instanceof p&&c&&(n=u[u.length-1])instanceof p&&t.lines+n.lines<=32?(c+=t.lines,l+=t.length+1,u[u.length-1]=new p(n.text.concat(t.text),n.length+1+t.length)):(c+t.lines>i&&f(),c+=t.lines,l+=t.length+1,u.push(t));}function f(){c!=0&&(s.push(u.length==1?u[0]:e.from(u,l)),l=-1,c=u.length=0);}for(let e of t)d(e);return f(),s.length==1?s[0]:new e(s,n)}};f.empty=new p([``],0);function h(e){let t=-1;for(let n of e)t+=n.length+1;return t}function g(e,t,n=0,r=1e9){for(let i=0,a=0,o=true;a=n&&(c>r&&(s=s.slice(0,r-i)),i0?1:(e instanceof p?e.text.length:e.children.length)<<1];}nextInner(e,t){for(this.done=this.lineBreak=false;;){let n=this.nodes.length-1,r=this.nodes[n],i=this.offsets[n],a=i>>1,o=r instanceof p?r.text.length:r.children.length;if(a==(t>0?o:0)){if(n==0)return this.done=true,this.value=``,this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop();}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=true,this.value=`
+`,this;e--;}else if(r instanceof p){let i=r.text[a+(t<0?-1:0)];if(this.offsets[n]+=t,i.length>Math.max(0,e))return this.value=e==0?i:t>0?i.slice(e):i.slice(0,i.length-e),this;e-=i.length;}else {let i=r.children[a+(t<0?-1:0)];e>i.length?(e-=i.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(i),this.offsets.push(t>0?1:(i instanceof p?i.text.length:i.children.length)<<1));}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},y=class{constructor(e,t,n){this.value=``,this.done=false,this.cursor=new v(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n);}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=true,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},ee=class{constructor(e){this.inner=e,this.afterBreak=true,this.value=``,this.done=false;}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=``,this.afterBreak=false):t?(this.done=true,this.value=``):n?this.afterBreak?this.value=``:(this.afterBreak=true,this.next()):(this.value=r,this.afterBreak=false),this}get lineBreak(){return false}};typeof Symbol<`u`&&(f.prototype[Symbol.iterator]=function(){return this.iter()},v.prototype[Symbol.iterator]=y.prototype[Symbol.iterator]=ee.prototype[Symbol.iterator]=function(){return this});var b=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r;}get length(){return this.to-this.from}};function x(e,t,n){return t=Math.max(0,Math.min(e.length,t)),[t,Math.max(t,Math.min(e.length,n))]}function S(e,t,n=true,r=true){return a(e,t,n,r)}function te(e){return e>=56320&&e<57344}function ne(e){return e>=55296&&e<56320}function re$1(e,t){let n=e.charCodeAt(t);if(!ne(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return te(r)?(n-55296<<10)+(r-56320)+65536:n}function ie$1(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10)+55296,(e&1023)+56320))}function ae(e){return e<65536?1:2}var oe$1=/\r\n?|\n/,C=(function(e){return e[e.Simple=0]=`Simple`,e[e.TrackDel=1]=`TrackDel`,e[e.TrackBefore=2]=`TrackBefore`,e[e.TrackAfter=3]=`TrackAfter`,e})(C||={}),se$1=class e{constructor(e){this.sections=e;}get length(){let e=0;for(let t=0;te)return i+(e-r);i+=o;}else {if(n!=C.Simple&&c>=e&&(n==C.TrackDel&&re||n==C.TrackBefore&&re))return null;if(c>e||c==e&&t<0&&!o)return e==r||t<0?i:i+s;i+=s;}r=c;}if(e>r)throw RangeError(`Position ${e} is out of range for changeset of length ${r}`);return i}touchesRange(e,t=e){for(let n=0,r=0;n=0&&r<=t&&o>=e)return rt?`cover`:true;r=o;}return false}toString(){let e=``;for(let t=0;t=0?`:`+r:``);}return e}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new e(t)}static create(t){return new e(t)}},ce$1=class e extends se$1{constructor(e,t){super(e),this.inserted=t;}apply(e){if(this.length!=e.length)throw RangeError(`Applying change set to a document with the wrong length`);return ue$1(this,(t,n,r,i,a)=>e=e.replace(r,r+(n-t),a),false),e}mapDesc(e,t=false){return de$1(this,e,t,true)}invert(t){let n=this.sections.slice(),r=[];for(let e=0,i=0;e=0){n[e]=o,n[e+1]=a;let s=e>>1;for(;r.length0&&le$1(r,n,a.text),a.forward(e),o+=e;}let c=t[e++];for(;o>1].toJSON()));}return e}static of(t,n,r){let i=[],a=[],o=0,s=null;function c(t=false){if(!t&&!i.length)return;os||e<0||s>n)throw RangeError(`Invalid change range ${e} to ${s} (in doc of length ${n})`);let u=l?typeof l==`string`?f.of(l.split(r||oe$1)):l:f.empty,d=u.length;if(e==s&&d==0)return;eo&&w$1(i,e-o,-1),w$1(i,s-e,d),le$1(a,i,u),o=s;}}return l(t),c(!s),s}static empty(t){return new e(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw RangeError(`Invalid JSON representation of ChangeSet`);let n=[],r=[];for(let e=0;et&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(i.length==1)n.push(i[0],0);else {for(;r.length=0&&n<=0&&n==e[i+1]?e[i]+=t:i>=0&&t==0&&e[i]==0?e[i+1]+=n:r?(e[i]+=t,e[i+1]+=n):e.push(t,n);}function le$1(e,t,n){if(n.length==0)return;let r=t.length-2>>1;if(r>1])),!(n||o==e.sections.length||e.sections[o+1]<0);)s=e.sections[o++],c=e.sections[o++];t(i,l,a,u,d),i=l,a=u;}}}function de$1(e,t,n,r=false){let i=[],a=r?[]:null,o=new pe$1(e),s=new pe$1(t);for(let e=-1;;)if(o.done&&s.len||s.done&&o.len)throw Error(`Mismatched change set lengths`);else if(o.ins==-1&&s.ins==-1){let e=Math.min(o.len,s.len);w$1(i,e,-1),o.forward(e),s.forward(e);}else if(s.ins>=0&&(o.ins<0||e==o.i||o.off==0&&(s.len=0&&e=0){let t=0,n=o.len;for(;n;)if(s.ins==-1){let e=Math.min(n,s.len);t+=e,n-=e,s.forward(e);}else if(s.ins==0&&s.lent||o.ins>=0&&o.len>t)&&(e||r.length>n),a.forward2(t),o.forward(t);}}var pe$1=class pe{constructor(e){this.set=e,this.i=0,this.next();}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?f.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?f.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e);}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e);}},me$1=class e{constructor(e,t,n){this.from=e,this.to=t,this.flags=n;}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(t,n=-1){let r,i;return this.empty?r=i=t.mapPos(this.from,n):(r=t.mapPos(this.from,1),i=t.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new e(r,i,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return T$1.range(e,t);let n=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return T$1.range(this.anchor,n)}eq(e,t=false){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return {anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!=`number`||typeof e.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return T$1.range(e.anchor,e.head)}static create(t,n,r){return new e(t,n,r)}},T$1=class e{constructor(e,t){this.ranges=e,this.mainIndex=t;}map(t,n=-1){return t.empty?this:e.create(this.ranges.map(e=>e.map(t,n)),this.mainIndex)}eq(e,t=false){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return false;for(let n=0;ne.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!=`number`||t.main>=t.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new e(t.ranges.map(e=>me$1.fromJSON(e)),t.main)}static single(t,n=t){return new e([e.range(t,n)],0)}static create(t,n=0){if(t.length==0)throw RangeError(`A selection needs at least one range`);for(let r=0,i=0;ie?8:0)|i)}static normalized(t,n=0){let r=t[n];t.sort((e,t)=>e.from-t.from),n=t.indexOf(r);for(let r=1;ri.head?e.range(s,o):e.range(o,s));}}return new e(t,n)}};function he$1(e,t){for(let n of e.ranges)if(n.to>t)throw RangeError(`Selection points outside of document`)}var ge$1=0,E$1=class e{constructor(e,t,n,r,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=ge$1++,this.default=e([]),this.extensions=typeof i==`function`?i(this):i;}get reader(){return this}static define(t={}){return new e(t.combine||(e=>e),t.compareInput||((e,t)=>e===t),t.compare||(t.combine?(e,t)=>e===t:_e$1),!!t.static,t.enables)}of(e){return new ve$1([],this,0,e)}compute(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ve$1(e,this,1,t)}computeN(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new ve$1(e,this,2,t)}from(e,t){return t||=e=>e,this.compute([e],n=>t(n.field(e)))}};function _e$1(e,t){return e==t||e.length==t.length&&e.every((e,n)=>e===t[n])}var ve$1=class ve{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=ge$1++;}dynamicSlot(e){let t=this.value,n=this.facet.compareInput,r=this.id,i=e[r]>>1,a=this.type==2,o=false,s=false,c=[];for(let t of this.dependencies)t==`doc`?o=true:t==`selection`?s=true:(e[t.id]??1)&1||c.push(e[t.id]);return {create(e){return e.values[i]=t(e),1},update(e,r){if(o&&r.docChanged||s&&(r.docChanged||r.selection)||be$1(e,c)){let r=t(e);if(a?!ye$1(r,e.values[i],n):!n(r,e.values[i]))return e.values[i]=r,1}return 0},reconfigure:(e,o)=>{let s,c=o.config.address[r];if(c!=null){let r=Ne(o,c);if(this.dependencies.every(t=>t instanceof E$1?o.facet(t)===e.facet(t):t instanceof Ce$1?o.field(t,false)==e.field(t,false):true)||(a?ye$1(s=t(e),r,n):n(s=t(e),r)))return e.values[i]=r,0}else s=t(e);return e.values[i]=s,1}}}};function ye$1(e,t,n){if(e.length!=t.length)return false;for(let r=0;re[t.id]),i=n.map(e=>e.type),a=r.filter(e=>!(e&1)),o=e[t.id]>>1;function s(e){let n=[];for(let t=0;te===t),t);return t.provide&&(n.provides=t.provide(n)),n}create(e){return (e.facet(Se$1).find(e=>e.field==this)?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return {create:e=>(e.values[t]=this.create(e),1),update:(e,n)=>{let r=e.values[t],i=this.updateF(r,n);return this.compareF(r,i)?0:(e.values[t]=i,1)},reconfigure:(e,n)=>{let r=e.facet(Se$1),i=n.facet(Se$1),a;return (a=r.find(e=>e.field==this))&&a!=i.find(e=>e.field==this)?(e.values[t]=a.create(e),1):n.config.address[this.id]==null?(e.values[t]=this.create(e),1):(e.values[t]=n.field(this),0)}}}init(e){return [this,Se$1.of({field:this,create:e})]}get extension(){return this}},we$1={lowest:4,low:3,default:2,high:1,highest:0};function Te$1(e){return t=>new De$1(t,e)}var Ee$1={highest:Te$1(we$1.highest),high:Te$1(we$1.high),default:Te$1(we$1.default),low:Te$1(we$1.low),lowest:Te$1(we$1.lowest)},De$1=class De{constructor(e,t){this.inner=e,this.prec=t;}},Oe$1=class e{of(e){return new ke$1(this,e)}reconfigure(t){return e.reconfigure.of({compartment:this,extension:t})}get(e){return e.config.compartments.get(this)}},ke$1=class ke{constructor(e,t){this.compartment=e,this.inner=t;}},Ae=class e{constructor(e,t,n,r,i,a){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(t,n,r){let i=[],a=Object.create(null),o=new Map;for(let e of je$1(t,n,o))e instanceof Ce$1?i.push(e):(a[e.facet.id]||(a[e.facet.id]=[])).push(e);let s=Object.create(null),c=[],l=[];for(let e of i)s[e.id]=l.length<<1,l.push(t=>e.slot(t));let u=r?.config.facets;for(let e in a){let t=a[e],n=t[0].facet,i=u&&u[e]||[];if(t.every(e=>e.type==0))if(s[n.id]=c.length<<1|1,_e$1(i,t))c.push(r.facet(n));else {let e=n.combine(t.map(e=>e.value));c.push(r&&n.compare(e,r.facet(n))?r.facet(n):e);}else {for(let e of t)e.type==0?(s[e.id]=c.length<<1|1,c.push(e.value)):(s[e.id]=l.length<<1,l.push(t=>e.dynamicSlot(t)));s[n.id]=l.length<<1,l.push(e=>xe$1(e,n,t));}}return new e(t,o,l.map(e=>e(s)),s,c,a)}};function je$1(e,t,n){let r=[[],[],[],[],[]],i=new Map;function a(e,o){let s=i.get(e);if(s!=null){if(s<=o)return;let t=r[s].indexOf(e);t>-1&&r[s].splice(t,1),e instanceof ke$1&&n.delete(e.compartment);}if(i.set(e,o),Array.isArray(e))for(let t of e)a(t,o);else if(e instanceof ke$1){if(n.has(e.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let r=t.get(e.compartment)||e.inner;n.set(e.compartment,r),a(r,o);}else if(e instanceof De$1)a(e.inner,e.prec);else if(e instanceof Ce$1)r[o].push(e),e.provides&&a(e.provides,o);else if(e instanceof ve$1)r[o].push(e),e.facet.extensions&&a(e.facet.extensions,we$1.default);else {let t=e.extension;if(!t)throw Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(t,o);}}return a(e,we$1.default),r.reduce((e,t)=>e.concat(t))}function Me(e,t){if(t&1)return 2;let n=t>>1,r=e.status[n];if(r==4)throw Error(`Cyclic dependency between fields and/or facets`);if(r&2)return r;e.status[n]=4;let i=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|i}function Ne(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}var Pe=E$1.define(),Fe=E$1.define({combine:e=>e.some(e=>e),static:true}),Ie=E$1.define({combine:e=>e.length?e[0]:void 0,static:true}),Le$1=E$1.define(),Re$2=E$1.define(),ze$2=E$1.define(),Be$1=E$1.define({combine:e=>e.length?e[0]:false}),Ve$2=class Ve{constructor(e,t){this.type=e,this.value=t;}static define(){return new He$2}},He$2=class He{of(e){return new Ve$2(this,e)}},Ue$2=class Ue{constructor(e){this.map=e;}of(e){return new D$2(this,e)}},D$2=class e{constructor(e,t){this.type=e,this.value=t;}map(t){let n=this.type.map(this.value,t);return n===void 0?void 0:n==this.value?this:new e(this.type,n)}is(e){return this.type==e}static define(e={}){return new Ue$2(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let e=r.map(t);e&&n.push(e);}return n}};D$2.reconfigure=D$2.define(),D$2.appendConfig=D$2.define();var O$2=class e{constructor(t,n,r,i,a,o){this.startState=t,this.changes=n,this.selection=r,this.effects=i,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,r&&he$1(r,n.newLength),a.some(t=>t.type==e.time)||(this.annotations=a.concat(e.time.of(Date.now())));}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return !this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let n=this.annotation(e.userEvent);return !!(n&&(n==t||n.length>t.length&&n.slice(0,t.length)==t&&n[t.length]==`.`))}};O$2.time=Ve$2.define(),O$2.userEvent=Ve$2.define(),O$2.addToHistory=Ve$2.define(),O$2.remote=Ve$2.define();function We$1(e,t){let n=[];for(let r=0,i=0;;){let a,o;if(r=e[r]))a=e[r++],o=e[r++];else if(i=0;n--){let i=r[n](e);e=i instanceof O$2?i:Array.isArray(i)&&i.length==1&&i[0]instanceof O$2?i[0]:qe$2(t,Ze$2(i),false);}return e}function Ye$2(e){let t=e.startState,n=t.facet(ze$2),r=e;for(let i=n.length-1;i>=0;i--){let a=n[i](e);a&&Object.keys(a).length&&(r=Ge$1(r,Ke$1(t,a,e.changes.newLength),true));}return r==e?e:O$2.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}var Xe$2=[];function Ze$2(e){return e==null?Xe$2:Array.isArray(e)?e:[e]}var Qe$2=(function(e){return e[e.Word=0]=`Word`,e[e.Space=1]=`Space`,e[e.Other=2]=`Other`,e})(Qe$2||={}),$e$2=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,et$2;try{et$2=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`);}catch{}function tt$2(e){if(et$2)return et$2.test(e);for(let t=0;t``&&(n.toUpperCase()!=n.toLowerCase()||$e$2.test(n)))return true}return false}function nt$2(e){return t=>{if(!/\S/.test(t))return Qe$2.Space;if(tt$2(t))return Qe$2.Word;for(let n=0;n-1)return Qe$2.Word;return Qe$2.Other}}var k$2=class e{constructor(e,t,n,r,i,a){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let e=0;ei.set(t,e)),null),i.set(e.value.compartment,e.value.extension)):e.is(D$2.reconfigure)?(n=null,r=e.value):e.is(D$2.appendConfig)&&(n=null,r=Ze$2(r).concat(e.value));let a;n?a=t.startState.values.slice():(n=Ae.resolve(r,i,this),a=new e(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);let o=t.startState.facet(Fe)?t.newSelection:t.newSelection.asSingle();new e(n,t.newDoc,o,a,(e,n)=>n.update(e,t),t);}replaceSelection(e){return typeof e==`string`&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:T$1.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),i=[n.range],a=Ze$2(n.effects);for(let n=1;nn.spec.fromJSON(a,e)));}}return e.create({doc:t.doc,selection:T$1.fromJSON(t.selection),extensions:n.extensions?i.concat([n.extensions]):i})}static create(t={}){let n=Ae.resolve(t.extensions||[],new Map),r=t.doc instanceof f?t.doc:f.of((t.doc||``).split(n.staticFacet(e.lineSeparator)||oe$1)),i=t.selection?t.selection instanceof T$1?t.selection:T$1.single(t.selection.anchor,t.selection.head):T$1.single(0);return he$1(i,r.length),n.staticFacet(Fe)||(i=i.asSingle()),new e(n,r,i,n.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(e.tabSize)}get lineBreak(){return this.facet(e.lineSeparator)||`
+`}get readOnly(){return this.facet(Be$1)}phrase(t,...n){for(let n of this.facet(e.phrases))if(Object.prototype.hasOwnProperty.call(n,t)){t=n[t];break}return n.length&&(t=t.replace(/\$(\$|\d*)/g,(e,t)=>{if(t==`$`)return `$`;let r=+(t||1);return !r||r>n.length?e:n[r-1]})),t}languageDataAt(e,t,n=-1){let r=[];for(let i of this.facet(Pe))for(let a of i(this,t,n))Object.prototype.hasOwnProperty.call(a,e)&&r.push(a[e]);return r}charCategorizer(e){let t=this.languageDataAt(`wordChars`,e);return nt$2(t.length?t[0]:``)}wordAt(e){let{text:t,from:n,length:r}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-n,o=e-n;for(;a>0;){let e=S(t,a,false);if(i(t.slice(e,a))!=Qe$2.Word)break;a=e;}for(;oe.length?e[0]:4}),k$2.lineSeparator=Ie,k$2.readOnly=Be$1,k$2.phrases=E$1.define({compare(e,t){let n=Object.keys(e),r=Object.keys(t);return n.length==r.length&&n.every(n=>e[n]==t[n])}}),k$2.languageData=Pe,k$2.changeFilter=Le$1,k$2.transactionFilter=Re$2,k$2.transactionExtender=ze$2,Oe$1.reconfigure=D$2.define();function rt$2(e,t,n={}){let r={};for(let t of e)for(let e of Object.keys(t)){let i=t[e],a=r[e];if(a===void 0)r[e]=i;else if(!(a===i||i===void 0))if(Object.hasOwnProperty.call(n,e))r[e]=n[e](a,i);else throw Error(`Config merge conflict for field `+e)}for(let e in t)r[e]===void 0&&(r[e]=t[e]);return r}var it$2=class it{eq(e){return this==e}range(e,t=e){return ot$2.create(e,t,this)}};it$2.prototype.startSide=it$2.prototype.endSide=0,it$2.prototype.point=false,it$2.prototype.mapMode=C.TrackDel;function at$2(e,t){return e==t||e.constructor==t.constructor&&e.eq(t)}var ot$2=class e{constructor(e,t,n){this.from=e,this.to=t,this.value=n;}static create(t,n,r){return new e(t,n,r)}};function st$2(e,t){return e.from-t.from||e.value.startSide-t.value.startSide}var ct$2=class e{constructor(e,t,n,r){this.from=e,this.to=t,this.value=n,this.maxPoint=r;}get length(){return this.to[this.to.length-1]}findIndex(e,t,n,r=0){let i=n?this.to:this.from;for(let a=r,o=i.length;;){if(a==o)return a;let r=a+o>>1,s=i[r]-e||(n?this.value[r].endSide:this.value[r].startSide)-t;if(r==a)return s>=0?a:o;s>=0?o=r:a=r+1;}}between(e,t,n,r){for(let i=this.findIndex(t,-1e9,true),a=this.findIndex(n,1e9,false,i);if||d==f&&c.startSide>0&&c.endSide<=0)continue;(f-d||c.endSide-c.startSide)<0||(o<0&&(o=d),c.point&&(s=Math.max(s,f-d)),r.push(c),i.push(d-o),a.push(f-o));}return {mapped:r.length?new e(i,a,r,s):null,pos:o}}},A$2=class e{constructor(e,t,n,r){this.chunkPos=e,this.chunk=t,this.nextLayer=n,this.maxPoint=r;}static create(t,n,r,i){return new e(t,n,r,i)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(t){let{add:n=[],sort:r=false,filterFrom:i=0,filterTo:a=this.length}=t,o=t.filter;if(n.length==0&&!o)return this;if(r&&(n=n.slice().sort(st$2)),this.isEmpty)return n.length?e.of(n):this;let s=new ft$1(this,null,-1).goto(0),c=0,l=[],u=new ut$1;for(;s.value||c=0){let e=n[c++];u.addInner(e.from,e.to,e.value)||l.push(e);}else s.rangeIndex==1&&s.chunkIndexthis.chunkEnd(s.chunkIndex)||as.to||a=i&&e<=i+a.length&&a.between(i,e-i,t-i,n)===false)return}this.nextLayer.between(e,t,n);}}iter(e=0){return pt$1.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return pt$1.from(e).goto(t)}static compare(e,t,n,r,i=-1){let a=e.filter(e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=i),o=t.filter(e=>e.maxPoint>0||!e.isEmpty&&e.maxPoint>=i),s=dt$2(a,o,n),c=new ht$1(a,s,i),l=new ht$1(o,s,i);n.iterGaps((e,t,n)=>gt$1(c,e,l,t,n,r)),n.empty&&n.length==0&>$1(c,0,l,0,0,r);}static eq(e,t,n=0,r){r??=999999999;let i=e.filter(e=>!e.isEmpty&&t.indexOf(e)<0),a=t.filter(t=>!t.isEmpty&&e.indexOf(t)<0);if(i.length!=a.length)return false;if(!i.length)return true;let o=dt$2(i,a),s=new ht$1(i,o,0).goto(n),c=new ht$1(a,o,0).goto(n);for(;;){if(s.to!=c.to||!_t$1(s.active,c.active)||s.point&&(!c.point||!at$2(s.point,c.point)))return false;if(s.to>r)return true;s.next(),c.next();}}static spans(e,t,n,r,i=-1){let a=new ht$1(e,null,i).goto(t),o=t,s=a.openStart;for(;;){let e=Math.min(a.to,n);if(a.point){let n=a.activeForPoint(a.to),i=a.pointFromo&&(r.span(o,e,a.active,s),s=a.openEnd(e));if(a.to>n)return s+(a.point&&a.to>n?1:0);o=a.to,a.next();}}static of(e,t=false){let n=new ut$1;for(let r of e instanceof ot$2?[e]:t?lt$2(e):e)n.add(r.from,r.to,r.value);return n.finish()}static join(t){if(!t.length)return e.empty;let n=t[t.length-1];for(let r=t.length-2;r>=0;r--)for(let i=t[r];i!=e.empty;i=i.nextLayer)n=new e(i.chunkPos,i.chunk,n,Math.max(i.maxPoint,n.maxPoint));return n}};A$2.empty=new A$2([],[],null,-1);function lt$2(e){if(e.length>1)for(let t=e[0],n=1;n0)return e.slice().sort(st$2);t=r;}return e}A$2.empty.nextLayer=A$2.empty;var ut$1=class e{finishChunk(e){this.chunks.push(new ct$2(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[]);}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null;}add(t,n,r){this.addInner(t,n,r)||(this.nextLayer||=new e).add(t,n,r);}addInner(e,t,n){let r=e-this.lastTo||n.startSide-this.last.endSide;if(r<=0&&(e-this.lastFrom||n.startSide-this.last.startSide)<0)throw Error("Ranges must be added sorted by `from` position and `startSide`");return r<0?false:(this.from.length==250&&this.finishChunk(true),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=n,this.lastFrom=e,this.lastTo=t,this.value.push(n),n.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),true)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return false;this.from.length&&this.finishChunk(true),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let n=t.value.length-1;return this.last=t.value[n],this.lastFrom=t.from[n]+e,this.lastTo=t.to[n]+e,true}finish(){return this.finishInner(A$2.empty)}finishInner(e){if(this.from.length&&this.finishChunk(false),this.chunks.length==0)return e;let t=A$2.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}};function dt$2(e,t,n){let r=new Map;for(let t of e)for(let e=0;e=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&i.push(new ft$1(a,n,r,e));return i.length==1?i[0]:new e(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let n of this.heap)n.goto(e,t);for(let e=this.heap.length>>1;e>=0;e--)mt$1(this.heap,e);return this.next(),this}forward(e,t){for(let n of this.heap)n.forward(e,t);for(let e=this.heap.length>>1;e>=0;e--)mt$1(this.heap,e);(this.to-e||this.value.endSide-t)<0&&this.next();}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else {let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),mt$1(this.heap,0);}}};function mt$1(e,t){for(let n=e[t];;){let r=(t<<1)+1;if(r>=e.length)break;let i=e[r];if(r+1=0&&(i=e[r+1],r++),n.compare(i)<0)break;e[r]=n,e[t]=i,t=r;}}var ht$1=class ht{constructor(e,t,n){this.minPoint=n,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=pt$1.from(e,t,n);}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t);}removeActive(e){vt$1(this.active,e),vt$1(this.activeTo,e),vt$1(this.activeRank,e),this.minActive=bt$1(this.active,this.activeTo);}addActive(e){let t=0,{value:n,to:r,rank:i}=this.cursor;for(;t0;)t++;yt$1(this.active,t,n),yt$1(this.activeTo,t,r),yt$1(this.activeRank,t,i),e&&yt$1(e,t,this.cursor.from),this.minActive=bt$1(this.active,this.activeTo);}next(){let e=this.to,t=this.point;this.point=null;let n=this.openStart<0?[]:null;for(;;){let r=this.minActive;if(r>-1&&(this.activeTo[r]-this.cursor.from||this.active[r].endSide-this.cursor.startSide)<0){if(this.activeTo[r]>e){this.to=this.activeTo[r],this.endSide=this.active[r].endSide;break}this.removeActive(r),n&&vt$1(n,r);}else if(!this.cursor.value){this.to=this.endSide=1e9;break}else if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else {let e=this.cursor.value;if(!e.point)this.addActive(n),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&n[t]=0&&!(this.activeRank[n]e||this.activeTo[n]==e&&this.active[n].endSide>=this.point.endSide)&&t.push(this.active[n]);return t.reverse()}openEnd(e){let t=0;for(let n=this.activeTo.length-1;n>=0&&this.activeTo[n]>e;n--)t++;return t}};function gt$1(e,t,n,r,i,a){e.goto(t),n.goto(r);let o=r+i,s=r,c=r-t,l=!!a.boundChange;for(let t=false;;){let r=e.to+c-n.to,i=r||e.endSide-n.endSide,u=i<0?e.to+c:n.to,d=Math.min(u,o);if(e.point||n.point?(e.point&&n.point&&at$2(e.point,n.point)&&_t$1(e.activeForPoint(e.to),n.activeForPoint(n.to))||a.comparePoint(s,d,e.point,n.point),t=false):(t&&a.boundChange(s),d>s&&!_t$1(e.active,n.active)&&a.compareRange(s,d,e.active,n.active),l&&do)break;s=u,i<=0&&e.next(),i>=0&&n.next();}}function _t$1(e,t){if(e.length!=t.length)return false;for(let n=0;n=t;n--)e[n+1]=e[n];e[t]=n;}function bt$1(e,t){let n=-1,r=1e9;for(let i=0;i=t)return r;if(r==e.length)break;i+=e.charCodeAt(r)==9?n-i%n:1,r=S(e,r);}return r===true?-1:e.length}for(var Ct$1=`ͼ`,wt$1=typeof Symbol>`u`?`__ͼ`:Symbol.for(Ct$1),Tt$1=typeof Symbol>`u`?`__styleSet`+Math.floor(Math.random()*1e8):Symbol(`styleSet`),Et$1=typeof globalThis<`u`?globalThis:typeof window<`u`?window:{},Dt$1=class Dt{constructor(e,t){this.rules=[];let{finish:n}=t||{};function r(e){return /^@/.test(e)?[e]:e.split(/,\s*/)}function i(e,t,a,o){let s=[],c=/^@(\w+)\b/.exec(e[0]),l=c&&c[1]==`keyframes`;if(c&&t==null)return a.push(e[0]+`;`);for(let n in t){let o=t[n];if(/&/.test(n))i(n.split(/,\s*/).map(t=>e.map(e=>t.replace(/&/,e))).reduce((e,t)=>e.concat(t)),o,a);else if(o&&typeof o==`object`){if(!c)throw RangeError(`The value of a property (`+n+`) should be a primitive value.`);i(r(n),o,s,l);}else o!=null&&s.push(n.replace(/_.*/,``).replace(/[A-Z]/g,e=>`-`+e.toLowerCase())+`: `+o+`;`);}(s.length||l)&&a.push((n&&!c&&!o?e.map(n):e).join(`, `)+` {`+s.join(` `)+`}`);}for(let t in e)i(r(t),e[t],this.rules);}getRules(){return this.rules.join(`
+`)}static newName(){let e=Et$1[wt$1]||1;return Et$1[wt$1]=e+1,Ct$1+e.toString(36)}static mount(e,t,n){let r=e[Tt$1],i=n&&n.nonce;r?i&&r.setNonce(i):r=new kt$1(e,i),r.mount(Array.isArray(t)?t:[t],e);}},Ot$1=new Map,kt$1=class kt{constructor(e,t){let n=e.ownerDocument||e,r=n.defaultView;if(!e.head&&e.adoptedStyleSheets&&r.CSSStyleSheet){let t=Ot$1.get(n);if(t)return e[Tt$1]=t;this.sheet=new r.CSSStyleSheet,Ot$1.set(n,this);}else this.styleTag=n.createElement(`style`),t&&this.styleTag.setAttribute(`nonce`,t);this.modules=[],e[Tt$1]=this;}mount(e,t){let n=this.sheet,r=0,i=0;for(let t=0;t-1&&(this.modules.splice(o,1),i--,o=-1),o==-1){if(this.modules.splice(i++,0,a),n)for(let e=0;e`,191:`?`,192:`~`,219:`{`,220:`|`,221:`}`,222:`"`},Mt$1=typeof navigator<`u`&&/Mac/.test(navigator.platform),Nt$1=typeof navigator<`u`&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),j$2=0;j$2<10;j$2++)At$1[48+j$2]=At$1[96+j$2]=String(j$2);for(var j$2=1;j$2<=24;j$2++)At$1[j$2+111]=`F`+j$2;for(var j$2=65;j$2<=90;j$2++)At$1[j$2]=String.fromCharCode(j$2+32),jt$1[j$2]=String.fromCharCode(j$2);for(var Pt$1 in At$1)jt$1.hasOwnProperty(Pt$1)||(jt$1[Pt$1]=At$1[Pt$1]);function Ft$1(e){var t=!(Mt$1&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||Nt$1&&e.shiftKey&&e.key&&e.key.length==1||e.key==`Unidentified`)&&e.key||(e.shiftKey?jt$1:At$1)[e.keyCode]||e.key||`Unidentified`;return t==`Esc`&&(t=`Escape`),t==`Del`&&(t=`Delete`),t==`Left`&&(t=`ArrowLeft`),t==`Up`&&(t=`ArrowUp`),t==`Right`&&(t=`ArrowRight`),t==`Down`&&(t=`ArrowDown`),t}function It$1(){var e=arguments[0];typeof e==`string`&&(e=document.createElement(e));var t=1,n=arguments[1];if(n&&typeof n==`object`&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var i=n[r];typeof i==`string`?e.setAttribute(r,i):i!=null&&(e[r]=i);}t++;}for(;t2),N$2={mac:qt$1||/Mac/.test(M$2.platform),windows:/Win/.test(M$2.platform),linux:/Linux|X11/.test(M$2.platform),ie:Ht$1,ie_version:Bt$1?Rt$1.documentMode||6:Vt$1?+Vt$1[1]:zt$1?+zt$1[1]:0,gecko:Ut$1,gecko_version:Ut$1?+(/Firefox\/(\d+)/.exec(M$2.userAgent)||[0,0])[1]:0,chrome:!!Wt$1,chrome_version:Wt$1?+Wt$1[1]:0,ios:qt$1,android:/Android\b/.test(M$2.userAgent),webkit_version:Gt$1?+(/\bAppleWebKit\/(\d+)/.exec(M$2.userAgent)||[0,0])[1]:0,safari:Kt$1,safari_version:Kt$1?+(/\bVersion\/(\d+(\.\d+)?)/.exec(M$2.userAgent)||[0,0])[1]:0,tabSize:Rt$1.documentElement.style.tabSize==null?`-moz-tab-size`:`tab-size`};function Jt$1(e,t){for(let n in e)n==`class`&&t.class?t.class+=` `+e.class:n==`style`&&t.style?t.style+=`;`+e.style:t[n]=e[n];return t}var Yt$1=Object.create(null);function Xt$1(e,t,n){if(e==t)return true;e||=Yt$1,t||=Yt$1;let r=Object.keys(e),i=Object.keys(t);if(r.length-(0)!=i.length-(0))return false;for(let a of r)if(a!=n&&(i.indexOf(a)==-1||e[a]!==t[a]))return false;return true}function Zt$1(e,t){for(let n=e.attributes.length-1;n>=0;n--){let r=e.attributes[n].name;t[r]??e.removeAttribute(r);}for(let n in t){let r=t[n];n==`style`?e.style.cssText=r:e.getAttribute(n)!=r&&e.setAttribute(n,r);}}function Qt$1(e,t,n){let r=false;if(t)for(let i in t)n&&i in n||(r=true,i==`style`?e.style.cssText=``:e.removeAttribute(i));if(n)for(let i in n)t&&t[i]==n[i]||(r=true,i==`style`?e.style.cssText=n[i]:e.setAttribute(i,n[i]));return r}function $t$1(e){let t=Object.create(null);for(let n=0;n0?3e8:-4e8:t>0?1e8:-1e8,new rn$1(e,t,t,n,e.widget||null,false)}static replace(e){let t=!!e.block,n,r;if(e.isBlockGap)n=-5e8,r=4e8;else {let{start:i,end:a}=an$1(e,t);n=(i?t?-3e8:-1:5e8)-1,r=(a?t?2e8:1:-6e8)+1;}return new rn$1(e,n,r,t,e.widget||null,true)}static line(e){return new nn$1(e)}static set(e,t=false){return A$2.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:false}};F$2.none=A$2.empty;var tn$1=class e extends F$2{constructor(e){let{start:t,end:n}=an$1(e);super(t?-1:5e8,n?1:-6e8,null,e),this.tagName=e.tagName||`span`,this.attrs=e.class&&e.attributes?Jt$1(e.attributes,{class:e.class}):e.class?{class:e.class}:e.attributes||Yt$1;}eq(t){return this==t||t instanceof e&&this.tagName==t.tagName&&Xt$1(this.attrs,t.attrs)}range(e,t=e){if(e>=t)throw RangeError(`Mark decorations may not be empty`);return super.range(e,t)}};tn$1.prototype.point=false;var nn$1=class e extends F$2{constructor(e){super(-2e8,-2e8,null,e);}eq(t){return t instanceof e&&this.spec.class==t.spec.class&&Xt$1(this.spec.attributes,t.spec.attributes)}range(e,t=e){if(t!=e)throw RangeError(`Line decoration ranges must be zero-length`);return super.range(e,t)}};nn$1.prototype.mapMode=C.TrackBefore,nn$1.prototype.point=true;var rn$1=class e extends F$2{constructor(e,t,n,r,i,a){super(t,n,i,e),this.block=r,this.isReplace=a,this.mapMode=r?t<=0?C.TrackBefore:C.TrackAfter:C.TrackDel;}get type(){return this.startSide==this.endSide?this.startSide<=0?P$2.WidgetBefore:P$2.WidgetAfter:P$2.WidgetRange}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(t){return t instanceof e&&on$1(this.widget,t.widget)&&this.block==t.block&&this.startSide==t.startSide&&this.endSide==t.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw RangeError(`Invalid range for replacement decoration`);if(!this.isReplace&&t!=e)throw RangeError(`Widget decorations can only have zero-length ranges`);return super.range(e,t)}};rn$1.prototype.point=true;function an$1(e,t=false){let{inclusiveStart:n,inclusiveEnd:r}=e;return n??=e.inclusive,r??=e.inclusive,{start:n??t,end:r??t}}function on$1(e,t){return e==t||!!(e&&t&&e.compare(t))}function sn$1(e,t,n,r=0){let i=n.length-1;i>=0&&n[i]+r>=e?n[i]=Math.max(n[i],t):n.push(e,t);}var cn$1=class e extends it$2{constructor(e,t){super(),this.tagName=e,this.attributes=t;}eq(t){return t==this||t instanceof e&&this.tagName==t.tagName&&Xt$1(this.attributes,t.attributes)}static create(t){return new e(t.tagName,t.attributes||Yt$1)}static set(e,t=false){return A$2.of(e,t)}};cn$1.prototype.startSide=cn$1.prototype.endSide=-1;function ln$1(e){let t;return t=e.nodeType==11?e.getSelection?e:e.ownerDocument:e,t.getSelection()}function un$1(e,t){return t?e==t||e.contains(t.nodeType==1?t:t.parentNode):false}function dn$1(e,t){if(!t.anchorNode)return false;try{return un$1(e,t.anchorNode)}catch{return false}}function fn$1(e){return e.nodeType==3?Dn$1(e,0,e.nodeValue.length).getClientRects():e.nodeType==1?e.getClientRects():[]}function pn$1(e,t,n,r){return n?gn$1(e,t,n,r,-1)||gn$1(e,t,n,r,1):false}function mn$1(e){for(var t=0;;t++)if(e=e.previousSibling,!e)return t}function hn$1(e){return e.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(e.nodeName)}function gn$1(e,t,n,r,i){for(;;){if(e==n&&t==r)return true;if(t==(i<0?0:_n$1(e))){if(e.nodeName==`DIV`)return false;let n=e.parentNode;if(!n||n.nodeType!=1)return false;t=mn$1(e)+(i<0?0:1),e=n;}else if(e.nodeType==1){if(e=e.childNodes[t+(i<0?-1:0)],e.nodeType==1&&e.contentEditable==`false`)return false;t=i<0?_n$1(e):0;}else return false}}function _n$1(e){return e.nodeType==3?e.nodeValue.length:e.childNodes.length}function vn$1(e,t){let n=t?e.left:e.right;return {left:n,right:n,top:e.top,bottom:e.bottom}}function yn$1(e){let t=e.visualViewport;return t?{left:0,right:t.width,top:0,bottom:t.height}:{left:0,right:e.innerWidth,top:0,bottom:e.innerHeight}}function bn$1(e,t){let n=t.width/e.offsetWidth,r=t.height/e.offsetHeight;return (n>.995&&n<1.005||!isFinite(n)||Math.abs(t.width-e.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(t.height-e.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function xn$1(e,t,n,r,i,a,o,s){let c=e.ownerDocument,l=c.defaultView||window;for(let u=e,d=false;u&&!d;)if(u.nodeType==1){let e,f=u==c.body,p=1,m=1;if(f)e=yn$1(l);else {if(/^(fixed|sticky)$/.test(getComputedStyle(u).position)&&(d=true),u.scrollHeight<=u.clientHeight&&u.scrollWidth<=u.clientWidth){u=u.assignedSlot||u.parentNode;continue}let t=u.getBoundingClientRect();(({scaleX:p,scaleY:m}=bn$1(u,t))),e={left:t.left,right:t.left+u.clientWidth*p,top:t.top,bottom:t.top+u.clientHeight*m};}let h=0,g=0;if(i==`nearest`)t.top0&&t.bottom>e.bottom+g&&(g=t.bottom-e.bottom+o)):t.bottom>e.bottom&&(g=t.bottom-e.bottom+o,n<0&&t.top-g0&&t.right>e.right+h&&(h=t.right-e.right+a)):t.right>e.right&&(h=t.right-e.right+a,n<0&&t.lefte.bottom||t.lefte.right)&&(t={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)}),u=u.assignedSlot||u.parentNode;}else if(u.nodeType==11)u=u.host;else break}function Sn$1(e){let t=e.ownerDocument,n,r;for(let i=e.parentNode;i&&!(i==t.body||n&&r);)if(i.nodeType==1)!r&&i.scrollHeight>i.clientHeight&&(r=i),!n&&i.scrollWidth>i.clientWidth&&(n=i),i=i.assignedSlot||i.parentNode;else if(i.nodeType==11)i=i.host;else break;return {x:n,y:r}}var Cn$1=class Cn{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0;}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:n}=e;this.set(t,Math.min(e.anchorOffset,t?_n$1(t):0),n,Math.min(e.focusOffset,n?_n$1(n):0));}set(e,t,n,r){this.anchorNode=e,this.anchorOffset=t,this.focusNode=n,this.focusOffset=r;}},wn$1=null;N$2.safari&&N$2.safari_version>=26&&(wn$1=false);function Tn$1(e){if(e.setActive)return e.setActive();if(wn$1)return e.focus(wn$1);let t=[];for(let n=e;n&&(t.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(e.focus(wn$1==null?{get preventScroll(){return wn$1={preventScroll:true},true}}:void 0),!wn$1){wn$1=false;for(let e=0;eMath.max(1,e.scrollHeight-e.clientHeight-4)}function Mn$1(e,t){for(let n=e,r=t;;)if(n.nodeType==3&&r>0)return {node:n,offset:r};else if(n.nodeType==1&&r>0){if(n.contentEditable==`false`)return null;n=n.childNodes[r-1],r=_n$1(n);}else if(n.parentNode&&!hn$1(n))r=mn$1(n),n=n.parentNode;else return null}function Nn$1(e,t){for(let n=e,r=t;;)if(n.nodeType==3&&r=t){if(o.level==n)return a;(i<0||(r==0?e[i].level>o.level:r<0?o.fromt))&&(i=a);}}if(i<0)throw RangeError(`Index out of range`);return i}};function Gn$1(e,t){if(e.length!=t.length)return false;for(let n=0;n=0;e-=3)if(Vn$1[e+1]==-r){let n=Vn$1[e+2],r=n&2?i:n&4?n&1?a:i:0;r&&(L$2[t]=L$2[Vn$1[e]]=r),s=e;break}}else if(Vn$1.length==189)break;else Vn$1[s++]=t,Vn$1[s++]=n,Vn$1[s++]=c;else if((o=L$2[t])==2||o==1){let e=o==i;c=+!e;for(let t=s-3;t>=0;t-=3){let n=Vn$1[t+2];if(n&2)break;if(e)Vn$1[t+2]|=2;else {if(n&4)break;Vn$1[t+2]|=4;}}}}}function Jn$1(e,t,n,r){for(let i=0,a=r;i<=n.length;i++){let o=i?n[i-1].to:e,s=ic;)t==a&&(t=n[--r].from,a=r?n[r-1].to:e),L$2[--t]=u;c=o;}else a=o,c++;}}}function Yn$1(e,t,n,r,i,a,o){let s=r%2?2:1;if(r%2==i%2)for(let c=t,l=0;cc&&o.push(new Wn$1(c,m.from,f)),Xn$1(e,m.direction==Fn$1==!(f%2)?r:r+1,i,m.inner,m.from,m.to,o),c=m.to),p=m.to;}else if(p==n||(t?L$2[p]!=s:L$2[p]==s))break;else p++;d?Yn$1(e,c,p,r+1,i,d,o):ct;){let n=true,u=false;if(!l||c>a[l-1].to){let e=L$2[c-1];e!=s&&(n=false,u=e==16);}let d=!n&&s==1?[]:null,f=n?r:r+1,p=c;run:for(;;)if(l&&p==a[l-1].to){if(u)break run;let m=a[--l];if(!n)for(let e=m.from,n=l;;){if(e==t)break run;if(n&&a[n-1].to==e)e=a[--n].from;else if(L$2[e-1]==s)break run;else break}d?d.push(m):(m.toL$2.length;)L$2[L$2.length]=256;let r=[],i=t==Fn$1?0:1;return Xn$1(e,i,i,n,0,e.length,r),r}function Qn$1(e){return [new Wn$1(0,e,0)]}var $n$1=``;function er$1(e,t,n,r,i){let a=r.head-e.from,o=Wn$1.find(t,a,r.bidiLevel??-1,r.assoc),s=t[o],c=s.side(i,n);if(a==c){let e=o+=i?1:-1;if(e<0||e>=t.length)return null;s=t[o=e],a=s.side(!i,n),c=s.side(i,n);}let l=S(e.text,a,s.forward(i,n));(ls.to)&&(l=c),$n$1=e.text.slice(Math.min(a,l),Math.max(a,l));let u=o==(i?t.length-1:0)?null:t[o+(i?1:-1)];return u&&l==c&&u.level+ +!ie.some(e=>e)}),fr=E$1.define({combine:e=>e.some(e=>e)}),pr$1=E$1.define(),mr$1=class e{constructor(e,t=`nearest`,n=`nearest`,r=5,i=5,a=false){this.range=e,this.y=t,this.x=n,this.yMargin=r,this.xMargin=i,this.isSnapshot=a;}map(t){return t.empty?this:new e(this.range.map(t),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(t){return this.range.to<=t.doc.length?this:new e(T$1.cursor(t.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}},hr$1=D$2.define({map:(e,t)=>e.map(t)}),gr$1=D$2.define();function R$2(e,t,n){let r=e.facet(ar$1);r.length?r[0](t):window.onerror&&window.onerror(String(t),n,void 0,void 0,t)||(n?console.error(n+`:`,t):console.error(t));}var _r$1=E$1.define({combine:e=>e.length?e[0]:true}),vr$1=0,yr$1=E$1.define({combine(e){return e.filter((t,n)=>{for(let r=0;r{let t=[];return o&&t.push(Cr$1.of(t=>{let n=t.plugin(e);return n?o(n):F$2.none})),a&&t.push(a(e)),t})}static fromClass(t,n){return e.define((e,n)=>new t(e,n),n)}},br$1=class br{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null;}get plugin(){return this.spec&&this.spec.plugin}update(e){if(!this.value){if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg);}catch(t){R$2(e.state,t,`CodeMirror plugin crashed`),this.deactivate();}}else if(this.mustUpdate){let e=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(e);}catch(t){if(R$2(e.state,t,`CodeMirror plugin crashed`),this.value.destroy)try{this.value.destroy();}catch{}this.deactivate();}}return this}destroy(e){if(this.value?.destroy)try{this.value.destroy();}catch(t){R$2(e.state,t,`CodeMirror plugin crashed`);}}deactivate(){this.spec=this.value=null;}},xr$1=E$1.define(),Sr$1=E$1.define(),Cr$1=E$1.define(),wr$1=E$1.define(),Tr$1=E$1.define(),Er$1=E$1.define(),Dr$1=E$1.define();function Or$1(e,t){let n=e.state.facet(Dr$1);if(!n.length)return n;let r=n.map(t=>t instanceof Function?t(e):t),i=[];return A$2.spans(r,t.from,t.to,{point(){},span(e,n,r,a){let o=e-t.from,s=n-t.from,c=i;for(let e=r.length-1;e>=0;e--,a--){let n=r[e].spec.bidiIsolate,i;if(n??=tr$1(t.text,o,s),a>0&&c.length&&(i=c[c.length-1]).to==o&&i.direction==n)i.to=s,c=i.inner;else {let e={from:o,to:s,direction:n,inner:[]};c.push(e),c=e.inner;}}}}),i}var kr$1=E$1.define();function Ar$1(e){let t=0,n=0,r=0,i=0;for(let a of e.state.facet(kr$1)){let o=a(e);o&&(o.left!=null&&(t=Math.max(t,o.left)),o.right!=null&&(n=Math.max(n,o.right)),o.top!=null&&(r=Math.max(r,o.top)),o.bottom!=null&&(i=Math.max(i,o.bottom)));}return {left:t,right:n,top:r,bottom:i}}var jr$1=E$1.define(),Mr$1=class e{constructor(e,t,n,r){this.fromA=e,this.toA=t,this.fromB=n,this.toB=r;}join(t){return new e(Math.min(this.fromA,t.fromA),Math.max(this.toA,t.toA),Math.min(this.fromB,t.fromB),Math.max(this.toB,t.toB))}addToSet(e){let t=e.length,n=this;for(;t>0;t--){let r=e[t-1];if(!(r.fromA>n.toA)){if(r.toAr.push(new Mr$1(e,t,n,i))),this.changedRanges=r;}static create(t,n,r){return new e(t,n,r)}get viewportChanged(){return (this.flags&4)>0}get viewportMoved(){return (this.flags&8)>0}get heightChanged(){return (this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return (this.flags&1)>0}get docChanged(){return !this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}},Pr$1=[],B$2=class B{constructor(e,t,n=0){this.dom=e,this.length=t,this.flags=n,this.parent=null,e.cmTile=this;}get breakAfter(){return this.flags&1}get children(){return Pr$1}isWidget(){return false}get isHidden(){return false}isComposite(){return false}isLine(){return false}isText(){return false}isBlock(){return false}get domAttrs(){return null}sync(e){if(this.flags|=2,this.flags&4){this.flags&=-5;let e=this.domAttrs;e&&Zt$1(this.dom,e);}}toString(){return this.constructor.name+(this.children.length?`(${this.children})`:``)+(this.breakAfter?`#`:``)}destroy(){this.parent=null;}setDOM(e){this.dom=e,e.cmTile=this;}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e,t=this.posAtStart){let n=t;for(let t of this.children){if(t==e)return n;n+=t.length+t.breakAfter;}throw RangeError(`Invalid child in posBefore`)}posAfter(e){return this.posBefore(e)+e.length}covers(e){return true}coordsIn(e,t){return null}domPosFor(e,t){let n=mn$1(this.dom),r=this.length?e>0:t>0;return new Pn$1(this.parent.dom,n+ +!!r,e==0||e==this.length)}markDirty(e){this.flags&=-3,e&&(this.flags|=4),this.parent&&this.parent.flags&2&&this.parent.markDirty(false);}get overrideDOMText(){return null}get root(){for(let e=this;e;e=e.parent)if(e instanceof Lr$1)return e;return null}static get(e){return e.cmTile}},Fr$1=class Fr extends B$2{constructor(e){super(e,0),this._children=[];}isComposite(){return true}get children(){return this._children}get lastChild(){return this.children.length?this.children[this.children.length-1]:null}append(e){this.children.push(e),e.parent=this;}sync(e){if(this.flags&2)return;super.sync(e);let t=this.dom,n=null,r,i=e?.node==t?e:null,a=0;for(let o of this.children){if(o.sync(e),a+=o.length+o.breakAfter,r=n?n.nextSibling:t.firstChild,i&&r!=o.dom&&(i.written=true),o.dom.parentNode==t)for(;r&&r!=o.dom;)r=Ir$1(r);else t.insertBefore(o.dom,r);n=o.dom;}for(r=n?n.nextSibling:t.firstChild,i&&r&&(i.written=true);r;)r=Ir$1(r);this.length=a;}};function Ir$1(e){let t=e.nextSibling;return e.parentNode.removeChild(e),t}var Lr$1=class Lr extends Fr$1{constructor(e,t){super(t),this.view=e;}owns(e){for(;e;e=e.parent)if(e==this)return true;return false}isBlock(){return true}nearest(e){for(;;){if(!e)return null;let t=B$2.get(e);if(t&&this.owns(t))return t;e=e.parentNode;}}blockTiles(e){for(let t=[],n=this,r=0,i=0;;)if(r==n.children.length){if(!t.length)return;n=n.parent,n.breakAfter&&i++,r=t.pop();}else {let a=n.children[r++];if(a instanceof Rr$1)t.push(r),n=a,r=0;else {let t=i+a.length,n=e(a,i);if(n!==void 0)return n;i=t+a.breakAfter;}}}resolveBlock(e,t){let n,r=-1,i,a=-1;if(this.blockTiles((o,s)=>{let c=s+o.length;if(e>=s&&e<=c){if(o.isWidget()&&t>=-1&&t<=1){if(o.flags&32)return true;o.flags&16&&(n=void 0);}(se||e==s&&(t>1?o.length:o.covers(-1)))&&(!i||!o.isWidget()&&i.isWidget())&&(i=o,a=e-s);}}),!n&&!i)throw Error(`No tile at position `+e);return n&&t<0||!i?{tile:n,offset:r}:{tile:i,offset:a}}},Rr$1=class e extends Fr$1{constructor(e,t){super(e),this.wrapper=t;}isBlock(){return true}covers(e){return this.children.length?e<0?this.children[0].covers(-1):this.lastChild.covers(1):false}get domAttrs(){return this.wrapper.attributes}static of(t,n){let r=new e(n||document.createElement(t.tagName),t);return n||(r.flags|=4),r}},zr$1=class e extends Fr$1{constructor(e,t){super(e),this.attrs=t;}isLine(){return true}static start(t,n,r){let i=new e(n||document.createElement(`div`),t);return (!n||!r)&&(i.flags|=4),i}get domAttrs(){return this.attrs}resolveInline(e,t,n){let r=null,i=-1,a=null,o=-1;function s(e,c){for(let l=0,u=0;l=c&&(d.isComposite()?s(d,c-u):(!a||a.isHidden&&(t>0||n&&Vr$1(a,d)))&&(f>c||d.flags&32)?(a=d,o=c-u):(un&&(e=n);let r=e,i=e,a=0;e==0&&t<0||e==n&&t>=0?N$2.chrome||N$2.gecko||(e?(r--,a=1):i=0)?0:o.length-1];return N$2.safari&&!a&&s.width==0&&(s=Array.prototype.find.call(o,e=>e.width)||s),a?vn$1(s,a<0):s||null}static of(t,n){let r=new e(n||document.createTextNode(t),t);return n||(r.flags|=2),r}},Ur$1=class e extends B$2{constructor(e,t,n,r){super(e,t,r),this.widget=n;}isWidget(){return true}get isHidden(){return this.widget.isHidden}covers(e){return this.flags&48?false:(this.flags&(e<0?64:128))>0}coordsIn(e,t){return this.coordsInWidget(e,t,false)}coordsInWidget(e,t,n){let r=this.widget.coordsAt(this.dom,e,t);if(r)return r;if(n)return vn$1(this.dom.getBoundingClientRect(),this.length?e==0:t<=0);{let t=this.dom.getClientRects(),n=null;if(!t.length)return null;let r=this.flags&16?true:this.flags&32?false:e>0;for(let i=r?t.length-1:0;n=t[i],!(e>0?i==0:i==t.length-1||n.top0;)if(!r.isComposite())if(i==r.length)a=!!r.breakAfter,{tile:r,index:i}=o.pop(),i++;else if(e){let t=Math.min(e,r.length-i);n&&n.skip(r,i,i+t),e-=t,i+=t;}else break;else if(a){if(!e)break;n&&n.break(),e--,a=false;}else if(i==r.children.length){if(!e&&!o.length)break;n&&n.leave(r),a=!!r.breakAfter,{tile:r,index:i}=o.pop(),i++;}else {let s=r.children[i],c=s.breakAfter;(t>0?s.length<=e:s.length=0;e--){let n=t.marks[e],i=r.lastChild;if(i instanceof V$2&&i.mark.eq(n.mark))i.dom!=n.dom&&i.setDOM(ri(n.dom)),r=i;else {if(this.cache.reused.get(n)){let e=B$2.get(n.dom);e&&e.setDOM(ri(n.dom));}let e=V$2.of(n.mark,n.dom);r.append(e),r=e;}this.cache.reused.set(n,2);}let i=B$2.get(e.text);i&&this.cache.reused.set(i,2);let a=new Hr$1(e.text,e.text.nodeValue);a.flags|=8,r.append(a);}addInlineWidget(e,t,n){let r=this.afterWidget&&e.flags&48&&(this.afterWidget.flags&48)==(e.flags&48);r||this.flushBuffer();let i=this.ensureMarks(t,n);!r&&!(e.flags&16)&&i.append(this.getBuffer(1)),i.append(e),this.pos+=e.length,this.afterWidget=e;}addMark(e,t,n){this.flushBuffer(),this.ensureMarks(t,n).append(e),this.pos+=e.length,this.afterWidget=null;}addBlockWidget(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine();}continueWidget(e){let t=this.afterWidget||this.lastBlock;t.length+=e,this.pos+=e;}addLineStart(e,t){e||=ei$1;let n=zr$1.start(e,t||this.cache.find(zr$1)?.dom,!!t);this.getBlockPos().append(this.lastBlock=this.curLine=n);}addLine(e){this.getBlockPos().append(e),this.pos+=e.length,this.lastBlock=e,this.endLine();}addBreak(){this.lastBlock.flags|=1,this.endLine(),this.pos++;}addLineStartIfNotCovered(e){this.blockPosCovered()||this.addLineStart(e);}ensureLine(e){this.curLine||this.addLineStart(e);}ensureMarks(e,t){let n=this.curLine;for(let r=e.length-1;r>=0;r--){let i=e[r],a;if(t>0&&(a=n.lastChild)&&a instanceof V$2&&a.mark.eq(i))n=a,t--;else {let e=V$2.of(i,this.cache.find(V$2,e=>e.mark.eq(i))?.dom);n.append(e),n=e,t=0;}}return n}endLine(){if(this.curLine){this.flushBuffer();let e=this.curLine.lastChild;(!e||!Qr$1(this.curLine,false)||e.dom.nodeName!=`BR`&&e.isWidget()&&!(N$2.ios&&Qr$1(this.curLine,true)))&&this.curLine.append(this.cache.findWidget(ai$1,0,32)||new Ur$1(ai$1.toDOM(),0,ai$1,32)),this.curLine=this.afterWidget=null;}}updateBlockWrappers(){this.wrapperPos>this.pos+1e4&&(this.blockWrappers.goto(this.pos),this.wrappers.length=0);for(let e=this.wrappers.length-1;e>=0;e--)this.wrappers[e].to=this.pos){let t=new Kr$1(e.from,e.to,e.value,e.rank),n=this.wrappers.length;for(;n>0&&(this.wrappers[n-1].rank-t.rank||this.wrappers[n-1].to-t.to)<0;)n--;this.wrappers.splice(n,0,t);}this.wrapperPos=this.pos;}getBlockPos(){this.updateBlockWrappers();let e=this.root;for(let t of this.wrappers){let n=e.lastChild;if(t.frome.wrapper.eq(t.wrapper))?.dom);e.append(n),e=n;}}return e}blockPosCovered(){let e=this.lastBlock;return e!=null&&!e.breakAfter&&(!e.isWidget()||(e.flags&160)>0)}getBuffer(e){let t=2|(e<0?16:32),n=this.cache.find(Wr$1,void 0,1);return n&&(n.flags=t),n||new Wr$1(t)}flushBuffer(){this.afterWidget&&!(this.afterWidget.flags&32)&&(this.afterWidget.parent.append(this.getBuffer(-1)),this.afterWidget=null);}},Jr$1=class Jr{constructor(e){this.skipCount=0,this.text=``,this.textOff=0,this.cursor=e.iter();}skip(e){this.textOff+e<=this.text.length?this.textOff+=e:(this.skipCount+=e-(this.text.length-this.textOff),this.text=``,this.textOff=0);}next(e){if(this.textOff==this.text.length){let{value:t,lineBreak:n,done:r}=this.cursor.next(this.skipCount);if(this.skipCount=0,r)throw Error(`Ran out of text content when drawing inline views`);this.text=t;let i=this.textOff=Math.min(e,t.length);return n?null:t.slice(0,i)}let t=Math.min(this.text.length,this.textOff+e),n=this.text.slice(this.textOff,t);return this.textOff=t,n}},Yr$1=[Ur$1,zr$1,Hr$1,V$2,Wr$1,Rr$1,Lr$1];for(let e=0;e[]),this.index=Yr$1.map(()=>0),this.reused=new Map;}add(e){let t=e.constructor.bucket,n=this.buckets[t];n.length<6?n.push(e):n[this.index[t]=(this.index[t]+1)%6]=e;}find(e,t,n=2){let r=e.bucket,i=this.buckets[r],a=this.index[r];for(let e=i.length-1;e>=0;e--){let o=(e+a)%i.length,s=i[o];if((!t||t(s))&&!this.reused.has(s))return i.splice(o,1),o{if(this.cache.add(e),e.isComposite())return false},enter:e=>this.cache.add(e),leave:()=>{},break:()=>{}};}run(e,t){let n=t&&this.getCompositionContext(t.text);for(let r=0,i=0,a=0;;){let o=ar){let e=s-r;this.preserve(e,!a,!o),r=s,i+=e;}if(!o)break;t&&o.fromA<=t.range.fromA&&o.toA>=t.range.toA?(this.forward(o.fromA,t.range.fromA,t.range.fromA{if(e.isWidget())if(this.openWidget)this.builder.continueWidget(n-t);else {let a=n>0||t{e.isLine()?this.builder.addLineStart(e.attrs,this.cache.maybeReuse(e)):(this.cache.add(e),e instanceof V$2&&r.unshift(e.mark)),this.openWidget=false;},leave:e=>{e.isLine()?r.length&&=i=0:e instanceof V$2&&(r.shift(),i=Math.min(i,r.length));},break:()=>{this.builder.addBreak(),this.openWidget=false;}}),this.text.skip(e);}emit(e,t){let n=null,r=this.builder,i=0,a=A$2.spans(this.decorations,e,t,{point:(e,t,a,o,s,c)=>{if(a instanceof rn$1){if(this.disallowBlockEffectsFor[c]){if(a.block)throw RangeError(`Block decorations may not be specified via plugins`);if(t>this.view.state.doc.lineAt(e).to)throw RangeError(`Decorations that replace line breaks may not be specified via plugins`)}if(i=o.length,s>o.length)r.continueWidget(t-e);else {let i=a.widget||(a.block?ii$1.block:ii$1.inline),c=$r$1(a),l=this.cache.findWidget(i,t-e,c)||Ur$1.of(i,this.view,t-e,c);a.block?(a.startSide>0&&r.addLineStartIfNotCovered(n),r.addBlockWidget(l)):(r.ensureLine(n),r.addInlineWidget(l,o,s));}n=null;}else n=ti$1(n,a);t>e&&this.text.skip(t-e);},span:(e,t,i,a)=>{for(let o=e;oi,this.openMarks=a;}forward(e,t,n=1){t-e<=10?this.old.advance(t-e,n,this.reuseWalker):(this.old.advance(5,-1,this.reuseWalker),this.old.advance(t-e-10,-1),this.old.advance(5,n,this.reuseWalker));}getCompositionContext(e){let t=[],n=null;for(let r=e.parentNode;;r=r.parentNode){let e=B$2.get(r);if(r==this.view.contentDOM)break;e instanceof V$2?t.push(e):e?.isLine()?n=e:r.nodeName==`DIV`&&!n&&r!=this.view.contentDOM?n=new zr$1(r,ei$1):t.push(V$2.of(new tn$1({tagName:r.nodeName.toLowerCase(),attributes:$t$1(r)}),r));}return {line:n,marks:t}}};function Qr$1(e,t){let n=e=>{for(let r of e.children)if((t?r.isText():r.length)||n(r))return true;return false};return n(e)}function $r$1(e){let t=e.isReplace?(e.startSide<0?64:0)|(e.endSide>0?128:0):e.startSide>0?32:16;return e.block&&(t|=256),t}var ei$1={class:`cm-line`};function ti$1(e,t){let n=t.spec.attributes,r=t.spec.class;return !n&&!r?e:(e||={class:`cm-line`},n&&Jt$1(n,e),r&&(e.class+=` `+r),e)}function ni$1(e){let t=[];for(let n=e.parents.length;n>1;n--){let r=n==e.parents.length?e.tile:e.parents[n].tile;r instanceof V$2&&t.push(r.mark);}return t}function ri(e){let t=B$2.get(e);return t&&t.setDOM(e.cloneNode()),e}var ii$1=class ii extends en$1{constructor(e){super(),this.tag=e;}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return true}};ii$1.inline=new ii$1(`span`),ii$1.block=new ii$1(`div`);var ai$1=new class extends en$1{toDOM(){return document.createElement(`br`)}get isHidden(){return true}get editable(){return true}},oi$1=class oi{constructor(e){this.view=e,this.decorations=[],this.blockWrappers=[],this.dynamicDecorationMap=[false],this.domChanged=null,this.hasComposition=null,this.editContextFormatting=F$2.none,this.lastCompositionAfterCursor=false,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=false,this.lastUpdate=Date.now(),this.updateDeco(),this.tile=new Lr$1(e,e.contentDOM),this.updateInner([new Mr$1(0,0,0,e.state.doc.length)],null);}update(e){let t=e.changedRanges;this.minWidth>0&&t.length&&(t.every(({fromA:e,toA:t})=>tthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let n=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(this.domChanged?.newSel?n=this.domChanged.newSel.head:!_i(e.changes,this.hasComposition)&&!e.selectionSet&&(n=e.state.selection.main.head));let r=n>-1?ui(this.view,e.changes,n):null;if(this.domChanged=null,this.hasComposition){let{from:n,to:r}=this.hasComposition;t=new Mr$1(n,r,e.changes.mapPos(n,-1),e.changes.mapPos(r,1)).addToSet(t.slice());}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(N$2.ie||N$2.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=true);let i=this.decorations,a=this.blockWrappers;this.updateDeco();let o=pi(i,this.decorations,e.changes);o.length&&(t=Mr$1.extendWithRanges(t,o));let s=hi(a,this.blockWrappers,e.changes);return s.length&&(t=Mr$1.extendWithRanges(t,s)),r&&!t.some(e=>e.fromA<=r.range.fromA&&e.toA>=r.range.toA)&&(t=r.range.addToSet(t.slice())),this.tile.flags&2&&t.length==0?false:(this.updateInner(t,r),e.transactions.length&&(this.lastUpdate=Date.now()),true)}updateInner(e,t){this.view.viewState.mustMeasureContent=true;let{observer:n}=this.view;n.ignore(()=>{if(t||e.length){let n=this.tile,r=new Zr$1(this.view,n,this.blockWrappers,this.decorations,this.dynamicDecorationMap);this.tile=r.run(e,t),si$1(n,r.cache.reused);}this.tile.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+`px`,this.tile.dom.style.flexBasis=this.minWidth?this.minWidth+`px`:``;let r=N$2.chrome||N$2.ios?{node:n.selectionRange.focusNode,written:false}:void 0;this.tile.sync(r),r&&(r.written||n.selectionRange.focusNode!=r.node||!this.tile.dom.contains(r.node))&&(this.forceSelection=true),this.tile.dom.style.height=``;});let r=[];if(this.view.viewport.from||this.view.viewport.to-1)&&dn$1(n,this.view.observer.selectionRange)&&!(r&&n.contains(r));if(!(i||t||a))return;let o=this.forceSelection;this.forceSelection=false;let s=this.view.state.selection.main,c,l;if(s.empty?l=c=this.inlineDOMNearPos(s.anchor,s.assoc||1):(l=this.inlineDOMNearPos(s.head,s.head==s.from?1:-1),c=this.inlineDOMNearPos(s.anchor,s.anchor==s.from?1:-1)),N$2.gecko&&s.empty&&!this.hasComposition&&ci$1(c)){let e=document.createTextNode(``);this.view.observer.ignore(()=>c.node.insertBefore(e,c.node.childNodes[c.offset]||null)),c=l=new Pn$1(e,0),o=true;}let u=this.view.observer.selectionRange;(o||!u.focusNode||(!pn$1(c.node,c.offset,u.anchorNode,u.anchorOffset)||!pn$1(l.node,l.offset,u.focusNode,u.focusOffset))&&!this.suppressWidgetCursorChange(u,s))&&(this.view.observer.ignore(()=>{N$2.android&&N$2.chrome&&n.contains(u.focusNode)&&gi(u.focusNode,n)&&(n.blur(),n.focus({preventScroll:true}));let e=ln$1(this.view.root);if(e)if(s.empty){if(N$2.gecko){let e=di(c.node,c.offset);if(e&&e!=3){let t=(e==1?Mn$1:Nn$1)(c.node,c.offset);t&&(c=new Pn$1(t.node,t.offset));}}e.collapse(c.node,c.offset),s.bidiLevel!=null&&e.caretBidiLevel!==void 0&&(e.caretBidiLevel=s.bidiLevel);}else if(e.extend){e.collapse(c.node,c.offset);try{e.extend(l.node,l.offset);}catch{}}else {let t=document.createRange();s.anchor>s.head&&([c,l]=[l,c]),t.setEnd(l.node,l.offset),t.setStart(c.node,c.offset),e.removeAllRanges(),e.addRange(t);}a&&this.view.root.activeElement==n&&(n.blur(),r&&r.focus());}),this.view.observer.setSelectionRange(c,l)),this.impreciseAnchor=c.precise?null:new Pn$1(u.anchorNode,u.anchorOffset),this.impreciseHead=l.precise?null:new Pn$1(u.focusNode,u.focusOffset);}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&pn$1(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,n=ln$1(e.root),{anchorNode:r,anchorOffset:i}=e.observer.selectionRange;if(!n||!t.empty||!t.assoc||!n.modify)return;let a=this.lineAt(t.head,t.assoc);if(!a)return;let o=a.posAtStart;if(t.head==o||t.head==o+a.length)return;let s=this.coordsAt(t.head,-1),c=this.coordsAt(t.head,1);if(!s||!c||s.bottom>c.top)return;let l=this.domAtPos(t.head+t.assoc,t.assoc);n.collapse(l.node,l.offset),n.modify(`move`,t.assoc<0?`forward`:`backward`,`lineboundary`),e.observer.readSelectionRange();let u=e.observer.selectionRange;e.docView.posFromDOM(u.anchorNode,u.anchorOffset)!=t.from&&n.collapse(r,i);}posFromDOM(e,t){let n=this.tile.nearest(e);if(!n)return this.tile.dom.compareDocumentPosition(e)&2?0:this.view.state.doc.length;let r=n.posAtStart;if(n.isComposite()){let i;if(e==n.dom)i=n.dom.childNodes[t];else {let r=_n$1(e)==0?0:t==0?-1:1;for(;;){let t=e.parentNode;if(t==n.dom)break;r==0&&t.firstChild!=t.lastChild&&(r=e==t.firstChild?-1:1),e=t;}i=r<0?e:e.nextSibling;}if(i==n.dom.firstChild)return r;for(;i&&!B$2.get(i);)i=i.nextSibling;if(!i)return r+n.length;for(let e=0,t=r;;e++){let r=n.children[e];if(r.dom==i)return t;t+=r.length+r.breakAfter;}}else if(n.isText())return e==n.dom?r+t:r+(t?n.length:0);else return r}domAtPos(e,t){let{tile:n,offset:r}=this.tile.resolveBlock(e,t);return n.isWidget()?n.domPosFor(e,t):n.domIn(r,t)}inlineDOMNearPos(e,t){let n,r=-1,i=false,a,o=-1,s=false;return this.tile.blockTiles((t,c)=>{if(t.isWidget()){if(t.flags&32&&c>=e)return true;t.flags&16&&(i=true);}else {let l=c+t.length;if(c<=e&&(n=t,r=e-c,i=l=e&&!a&&(a=t,o=e-c,s=c>e),c>e&&a)return true}}),!n&&!a?this.domAtPos(e,t):(i&&a?n=null:s&&n&&(a=null),n&&t<0||!a?n.domIn(r,t):a.domIn(o,t))}coordsAt(e,t){let{tile:n,offset:r}=this.tile.resolveBlock(e,t);return n.isWidget()?n.widget instanceof vi?null:n.coordsInWidget(r,t,true):n.coordsIn(r,t)}lineAt(e,t){let{tile:n}=this.tile.resolveBlock(e,t);return n.isLine()?n:null}coordsForChar(e){let{tile:t,offset:n}=this.tile.resolveBlock(e,1);if(!t.isLine())return null;function r(e,t){if(e.isComposite())for(let n of e.children){if(n.length>=t){let e=r(n,t);if(e)return e}if(t-=n.length,t<0)break}else if(e.isText()&&tMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,s=this.view.textDirection==I$2.LTR,c=0,l=(e,u,d)=>{for(let f=0;fr);f++){let r=e.children[f],p=u+r.length,m=r.dom.getBoundingClientRect(),{height:h}=m;if(d&&!f&&(c+=m.top-d.top),r instanceof Rr$1)p>n&&l(r,u,m);else if(u>=n&&(c>0&&t.push(-c),t.push(h+c),c=0,a)){let e=r.dom.lastChild,t=e?fn$1(e):[];if(t.length){let e=t[t.length-1],n=s?e.right-m.left:m.right-e.left;n>o&&(o=n,this.minWidth=i,this.minWidthFrom=u,this.minWidthTo=p);}}d&&f==e.children.length-1&&(c+=d.bottom-m.bottom),u=p+r.breakAfter;}};return l(this.tile,0,null),t}textDirectionAt(e){let{tile:t}=this.tile.resolveBlock(e,1);return getComputedStyle(t.dom).direction==`rtl`?I$2.RTL:I$2.LTR}measureTextSize(){let e=this.tile.blockTiles(e=>{if(e.isLine()&&e.children.length&&e.length<=20){let t=0,n;for(let r of e.children){if(!r.isText()||/[^ -~]/.test(r.text))return;let e=fn$1(r.dom);if(e.length!=1)return;t+=e[0].width,n=e[0].height;}if(t)return {lineHeight:e.dom.getBoundingClientRect().height,charWidth:t/e.length,textHeight:n}}});if(e)return e;let t=document.createElement(`div`),n,r,i;return t.className=`cm-line`,t.style.width=`99999px`,t.style.position=`absolute`,t.textContent=`abc def ghi jkl mno pqr stu`,this.view.observer.ignore(()=>{this.tile.dom.appendChild(t);let e=fn$1(t.firstChild)[0];n=t.getBoundingClientRect().height,r=e&&e.width?e.width/27:7,i=e&&e.height?e.height:n,t.remove();}),{lineHeight:n,charWidth:r,textHeight:i}}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let n=0,r=0;;r++){let i=r==t.viewports.length?null:t.viewports[r],a=i?i.from-1:this.view.state.doc.length;if(a>n){let r=(t.lineBlockAt(a).bottom-t.lineBlockAt(n).top)/this.view.scaleY;e.push(F$2.replace({widget:new vi(r),block:true,inclusive:true,isBlockGap:true}).range(n,a));}if(!i)break;n=i.to+1;}return F$2.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Cr$1).map(t=>(this.dynamicDecorationMap[e++]=typeof t==`function`)?t(this.view):t),n=false,r=this.view.state.facet(Tr$1).map((e,t)=>{let r=typeof e==`function`;return r&&(n=true),r?e(this.view):e});for(r.length&&(this.dynamicDecorationMap[e++]=n,t.push(A$2.join(r))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];e